Explorar el Código

Throw InvalidObjectIdException from ObjectId.fromString("tooshort")

ObjectId.fromString already throws InvalidObjectIdException for most
malformed object ids, but for this kind it previously threw
IllegalArgumentException.  Since InvalidObjectIdException is a child of
IllegalArgumentException, callers that catch IllegalArgumentException
will continue to work.

Change-Id: I24e1422d51607c86a1cb816a495703279e461f01
Signed-off-by: Jonathan Nieder <jrn@google.com>
tags/v4.1.0.201509280440-r
Jonathan Nieder hace 9 años
padre
commit
761f070866

+ 17
- 0
org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectIdTest.java Ver fichero

@@ -49,6 +49,8 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.eclipse.jgit.errors.InvalidObjectIdException;

import org.junit.Test;

public class ObjectIdTest {
@@ -124,6 +126,21 @@ public class ObjectIdTest {
assertEquals(x.toLowerCase(), oid.name());
}

@Test(expected = InvalidObjectIdException.class)
public void testFromString_short() {
ObjectId.fromString("cafe1234");
}

@Test(expected = InvalidObjectIdException.class)
public void testFromString_nonHex() {
ObjectId.fromString("0123456789abcdefghij0123456789abcdefghij");
}

@Test(expected = InvalidObjectIdException.class)
public void testFromString_shortNonHex() {
ObjectId.fromString("6789ghij");
}

@Test
public void testGetByte() {
byte[] raw = new byte[20];

+ 9
- 0
org.eclipse.jgit/src/org/eclipse/jgit/errors/InvalidObjectIdException.java Ver fichero

@@ -68,6 +68,15 @@ public class InvalidObjectIdException extends IllegalArgumentException {
super(msg(bytes, offset, length));
}

/**
* @param id the invalid id.
*
* @since 4.1
*/
public InvalidObjectIdException(String id) {
super(MessageFormat.format(JGitText.get().invalidId, id));
}

private static String msg(byte[] bytes, int offset, int length) {
try {
return MessageFormat.format(

+ 3
- 5
org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java Ver fichero

@@ -45,7 +45,6 @@
package org.eclipse.jgit.lib;

import org.eclipse.jgit.errors.InvalidObjectIdException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.util.NB;
import org.eclipse.jgit.util.RawParseUtils;

@@ -53,7 +52,6 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.text.MessageFormat;

/**
* A SHA-1 abstraction.
@@ -230,9 +228,9 @@ public class ObjectId extends AnyObjectId implements Serializable {
* @return the converted object id.
*/
public static ObjectId fromString(final String str) {
if (str.length() != Constants.OBJECT_ID_STRING_LENGTH)
throw new IllegalArgumentException(
MessageFormat.format(JGitText.get().invalidId, str));
if (str.length() != Constants.OBJECT_ID_STRING_LENGTH) {
throw new InvalidObjectIdException(str);
}
return fromHexString(Constants.encodeASCII(str), 0);
}


Cargando…
Cancelar
Guardar