You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by sc...@apache.org on 2009/11/01 17:54:34 UTC
svn commit: r831704 - in /commons/proper/lang/trunk/src:
java/org/apache/commons/lang/Validate.java
test/org/apache/commons/lang/ValidateTest.java
Author: scolebourne
Date: Sun Nov 1 16:54:34 2009
New Revision: 831704
URL: http://svn.apache.org/viewvc?rev=831704&view=rev
Log:
Add generic return types
Modified:
commons/proper/lang/trunk/src/java/org/apache/commons/lang/Validate.java
commons/proper/lang/trunk/src/test/org/apache/commons/lang/ValidateTest.java
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/Validate.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Validate.java?rev=831704&r1=831703&r2=831704&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/Validate.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/Validate.java Sun Nov 1 16:54:34 2009
@@ -195,12 +195,14 @@
* @param object the object to check is not <code>null</code>
* @param message the exception message you would like to see
* if the object is <code>null</code>
+ * @return the input object, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the object is <code>null</code>
*/
- public static void notNull(Object object, String message) {
+ public static <T> T notNull(T object, String message) {
if (object == null) {
throw new IllegalArgumentException(message);
}
+ return object;
}
/**
@@ -214,10 +216,11 @@
* <p>The message in the exception is 'The validated object is null'.</p>
*
* @param object the object to check is not <code>null</code>
+ * @return the input object, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the object is <code>null</code>
*/
- public static void notNull(Object object) {
- notNull(object, "The validated object is null");
+ public static <T> T notNull(T object) {
+ return notNull(object, "The validated object is null");
}
// notEmpty array
@@ -233,12 +236,14 @@
*
* @param array the array to check is not empty
* @param message the exception message you would like to see if the array is empty
+ * @return the input array, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the array is empty
*/
- public static void notEmpty(Object[] array, String message) {
+ public static <T> T[] notEmpty(T[] array, String message) {
if (array == null || array.length == 0) {
throw new IllegalArgumentException(message);
}
+ return array;
}
/**
@@ -252,10 +257,11 @@
* <p>The message in the exception is 'The validated array is empty'.
*
* @param array the array to check is not empty
+ * @return the input array, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the array is empty
*/
- public static void notEmpty(Object[] array) {
- notEmpty(array, "The validated array is empty");
+ public static <T> T[] notEmpty(T[] array) {
+ return notEmpty(array, "The validated array is empty");
}
// notEmpty collection
@@ -271,12 +277,14 @@
*
* @param collection the collection to check is not empty
* @param message the exception message you would like to see if the collection is empty
+ * @return the input collection, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the collection is empty
*/
- public static void notEmpty(Collection<?> collection, String message) {
+ public static <T extends Collection<?>> T notEmpty(T collection, String message) {
if (collection == null || collection.size() == 0) {
throw new IllegalArgumentException(message);
}
+ return collection;
}
/**
@@ -290,10 +298,11 @@
* <p>The message in the exception is 'The validated collection is empty'.</p>
*
* @param collection the collection to check is not empty
+ * @return the input collection, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the collection is empty
*/
- public static void notEmpty(Collection<?> collection) {
- notEmpty(collection, "The validated collection is empty");
+ public static <T extends Collection<?>> T notEmpty(T collection) {
+ return notEmpty(collection, "The validated collection is empty");
}
// notEmpty map
@@ -309,12 +318,14 @@
*
* @param map the map to check is not empty
* @param message the exception message you would like to see if the map is empty
+ * @return the input map, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the map is empty
*/
- public static void notEmpty(Map<?,?> map, String message) {
+ public static <T extends Map<?, ?>> T notEmpty(T map, String message) {
if (map == null || map.size() == 0) {
throw new IllegalArgumentException(message);
}
+ return map;
}
/**
@@ -328,10 +339,11 @@
* <p>The message in the exception is 'The validated map is empty'.</p>
*
* @param map the map to check is not empty
+ * @return the input map, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the map is empty
*/
- public static void notEmpty(Map<?,?> map) {
- notEmpty(map, "The validated map is empty");
+ public static <T extends Map<?, ?>> T notEmpty(T map) {
+ return notEmpty(map, "The validated map is empty");
}
// notEmpty string
@@ -347,12 +359,14 @@
*
* @param string the string to check is not empty
* @param message the exception message you would like to see if the string is empty
+ * @return the input string, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the string is empty
*/
- public static void notEmpty(String string, String message) {
+ public static <T extends CharSequence> T notEmpty(T string, String message) {
if (string == null || string.length() == 0) {
throw new IllegalArgumentException(message);
}
+ return string;
}
/**
@@ -366,10 +380,11 @@
* <p>The message in the exception is 'The validated string is empty'.</p>
*
* @param string the string to check is not empty
+ * @return the input string, never <code>null</code> or empty, for chaining
* @throws IllegalArgumentException if the string is empty
*/
- public static void notEmpty(String string) {
- notEmpty(string, "The validated string is empty");
+ public static <T extends CharSequence> T notEmpty(T string) {
+ return notEmpty(string, "The validated string is empty");
}
// notBlank string
@@ -380,19 +395,20 @@
* if the argument String is blank (<code>null</code>, empty or whitespace).</p>
*
* <pre>
- * Validate.notBlank(myString);
+ * Validate.notBlank(myString, "The string must not be blank");
* </pre>
*
- * <p>The message in the exception is 'The validated string is blank'.</p>
- *
* @param string the string to check is not blank
+ * @param message the exception message you would like to see if the string is blank
+ * @return the input string, never <code>null</code> or blank, for chaining
* @throws IllegalArgumentException if the string is blank
* @see StringUtils#isBlank(CharSequence)
*/
- public static void notBlank(String string) {
+ public static <T extends CharSequence> T notBlank(T string, String message) {
if (StringUtils.isBlank(string)) {
- throw new IllegalArgumentException("The validated string is blank");
+ throw new IllegalArgumentException(message);
}
+ return string;
}
/**
@@ -400,18 +416,18 @@
* if the argument String is blank (<code>null</code>, empty or whitespace).</p>
*
* <pre>
- * Validate.notBlank(myString, "The string must not be blank");
+ * Validate.notBlank(myString);
* </pre>
*
+ * <p>The message in the exception is 'The validated string is blank'.</p>
+ *
* @param string the string to check is not blank
- * @param message the exception message you would like to see if the string is blank
+ * @return the input string, never <code>null</code> or blank, for chaining
* @throws IllegalArgumentException if the string is blank
* @see StringUtils#isBlank(CharSequence)
*/
- public static void notBlank(String string, String message) {
- if (StringUtils.isBlank(string)) {
- throw new IllegalArgumentException(message);
- }
+ public static <T extends CharSequence> T notBlank(T string) {
+ return notBlank(string, "The validated string is blank");
}
// notNullElements array
@@ -431,16 +447,18 @@
* @param array the array to check
* @param message the exception message if the array has
* <code>null</code> elements
+ * @return the validated input array, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the array has <code>null</code>
* elements or is <code>null</code>
*/
- public static void noNullElements(Object[] array, String message) {
+ public static <T> T[] noNullElements(T[] array, String message) {
Validate.notNull(array);
for (int i = 0; i < array.length; i++) {
if (array[i] == null) {
throw new IllegalArgumentException(message);
}
}
+ return array;
}
/**
@@ -458,16 +476,18 @@
* <p>If the array is null then the message in the exception is 'The validated object is null'.</p>
*
* @param array the array to check
+ * @return the validated input array, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the array has <code>null</code>
* elements or is <code>null</code>
*/
- public static void noNullElements(Object[] array) {
+ public static <T> T[] noNullElements(T[] array) {
Validate.notNull(array);
for (int i = 0; i < array.length; i++) {
if (array[i] == null) {
throw new IllegalArgumentException("The validated array contains null element at index: " + i);
}
}
+ return array;
}
// notNullElements collection
@@ -487,16 +507,18 @@
* @param collection the collection to check
* @param message the exception message if the collection has
* <code>null</code> elements
+ * @return the validated input collection, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the collection has
* <code>null</code> elements or is <code>null</code>
*/
- public static void noNullElements(Collection<?> collection, String message) {
+ public static <T extends Collection<?>> T noNullElements(T collection, String message) {
Validate.notNull(collection);
for (Iterator<?> it = collection.iterator(); it.hasNext();) {
if (it.next() == null) {
throw new IllegalArgumentException(message);
}
}
+ return collection;
}
/**
@@ -513,10 +535,11 @@
* <p>If the collection is null then the message in the exception is 'The validated object is null'.</p>
*
* @param collection the collection to check
+ * @return the validated input collection, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the collection has
* <code>null</code> elements or is <code>null</code>
*/
- public static void noNullElements(Collection<?> collection) {
+ public static <T extends Collection<?>> T noNullElements(T collection) {
Validate.notNull(collection);
int i = 0;
for (Iterator<?> it = collection.iterator(); it.hasNext(); i++) {
@@ -524,8 +547,12 @@
throw new IllegalArgumentException("The validated collection contains null element at index: " + i);
}
}
+ return collection;
}
+ // allElementsOfType collection
+ //---------------------------------------------------------------------------------
+
/**
* <p>Validate an argument, throwing <code>IllegalArgumentException</code>
* if the argument collection is <code>null</code> or has elements that
@@ -595,13 +622,15 @@
*
* @param array the array to check, not null
* @param message the exception message if the array index is invalid
+ * @return the validated input array, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the array index is invalid or null
*/
- public static void validIndex(Object[] array, int index, String message) {
+ public static <T> T[] validIndex(T[] array, int index, String message) {
Validate.notNull(array);
if (index < 0 || index >= array.length) {
throw new IllegalArgumentException(message + index);
}
+ return array;
}
/**
@@ -618,10 +647,11 @@
* <p>If the array is null then the message in the exception is 'The validated object is null'.</p>
*
* @param array the array to check, not null
+ * @return the validated input array, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the array index is invalid or null
*/
- public static void validIndex(Object[] array, int index) {
- validIndex(array, index, "The validated array index is invalid: ");
+ public static <T> T[] validIndex(T[] array, int index) {
+ return validIndex(array, index, "The validated array index is invalid: ");
}
// validIndex collection
@@ -639,13 +669,15 @@
*
* @param coll the collection to check, not null
* @param message the exception message if the collection index is invalid
+ * @return the validated input collection, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the collection index is invalid or null
*/
- public static void validIndex(Collection<?> coll, int index, String message) {
+ public static <T extends Collection<?>> T validIndex(T coll, int index, String message) {
Validate.notNull(coll);
if (index < 0 || index >= coll.size()) {
throw new IllegalArgumentException(message + index);
}
+ return coll;
}
/**
@@ -662,10 +694,11 @@
* <p>If the collection is null then the message in the exception is 'The validated object is null'.</p>
*
* @param coll the collection to check, not null
+ * @return the validated input collection, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the collection index is invalid or null
*/
- public static void validIndex(Collection<?> coll, int index) {
- validIndex(coll, index, "The validated collection index is invalid: ");
+ public static <T extends Collection<?>> T validIndex(T coll, int index) {
+ return validIndex(coll, index, "The validated collection index is invalid: ");
}
// validIndex string
@@ -684,13 +717,15 @@
*
* @param str the string to check, not null
* @param message the exception message if the string index is invalid
+ * @return the validated input string, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the string index is invalid or null
*/
- public static void validIndex(CharSequence str, int index, String message) {
+ public static <T extends CharSequence> T validIndex(T str, int index, String message) {
Validate.notNull(str);
if (index < 0 || index >= str.length()) {
throw new IllegalArgumentException(message + index);
}
+ return str;
}
/**
@@ -708,10 +743,11 @@
* <p>If the string is null then the message in the exception is 'The validated object is null'.</p>
*
* @param str the string to check, not null
+ * @return the validated input string, never <code>null</code>, for chaining
* @throws IllegalArgumentException if the string index is invalid or null
*/
- public static void validIndex(CharSequence str, int index) {
- validIndex(str, index, "The validated string index is invalid: ");
+ public static <T extends CharSequence> T validIndex(T str, int index) {
+ return validIndex(str, index, "The validated string index is invalid: ");
}
}
Modified: commons/proper/lang/trunk/src/test/org/apache/commons/lang/ValidateTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/org/apache/commons/lang/ValidateTest.java?rev=831704&r1=831703&r2=831704&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/org/apache/commons/lang/ValidateTest.java (original)
+++ commons/proper/lang/trunk/src/test/org/apache/commons/lang/ValidateTest.java Sun Nov 1 16:54:34 2009
@@ -21,6 +21,7 @@
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -119,6 +120,7 @@
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNotNull1() {
Validate.notNull(new Object());
try {
@@ -127,6 +129,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated object is null", ex.getMessage());
}
+
+ String str = "Hi";
+ String testStr = Validate.notNull(str);
+ assertSame(str, testStr);
}
//-----------------------------------------------------------------------
@@ -138,9 +144,14 @@
} catch (IllegalArgumentException ex) {
assertEquals("MSG", ex.getMessage());
}
+
+ String str = "Hi";
+ String testStr = Validate.notNull(str, "Message");
+ assertSame(str, testStr);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNotEmptyArray1() {
Validate.notEmpty(new Object[] {null});
try {
@@ -155,6 +166,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated array is empty", ex.getMessage());
}
+
+ String[] array = new String[] {"hi"};
+ String[] test = Validate.notEmpty(array);
+ assertSame(array, test);
}
//-----------------------------------------------------------------------
@@ -172,9 +187,14 @@
} catch (IllegalArgumentException ex) {
assertEquals("MSG", ex.getMessage());
}
+
+ String[] array = new String[] {"hi"};
+ String[] test = Validate.notEmpty(array, "Message");
+ assertSame(array, test);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNotEmptyCollection1() {
Collection<Integer> coll = new ArrayList<Integer>();
try {
@@ -191,6 +211,9 @@
}
coll.add(new Integer(8));
Validate.notEmpty(coll);
+
+ Collection<Integer> test = Validate.notEmpty(coll);
+ assertSame(coll, test);
}
//-----------------------------------------------------------------------
@@ -210,9 +233,13 @@
}
coll.add(new Integer(8));
Validate.notEmpty(coll, "MSG");
+
+ Collection<Integer> test = Validate.notEmpty(coll, "Message");
+ assertSame(coll, test);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNotEmptyMap1() {
Map<String, Integer> map = new HashMap<String, Integer>();
try {
@@ -229,6 +256,9 @@
}
map.put("ll", new Integer(8));
Validate.notEmpty(map);
+
+ Map<String, Integer> test = Validate.notEmpty(map);
+ assertSame(map, test);
}
//-----------------------------------------------------------------------
@@ -248,9 +278,13 @@
}
map.put("ll", new Integer(8));
Validate.notEmpty(map, "MSG");
+
+ Map<String, Integer> test = Validate.notEmpty(map, "Message");
+ assertSame(map, test);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNotEmptyString1() {
Validate.notEmpty("hjl");
try {
@@ -265,6 +299,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated string is empty", ex.getMessage());
}
+
+ String str = "Hi";
+ String testStr = Validate.notEmpty(str);
+ assertSame(str, testStr);
}
//-----------------------------------------------------------------------
@@ -282,9 +320,14 @@
} catch (IllegalArgumentException ex) {
assertEquals("MSG", ex.getMessage());
}
+
+ String str = "Hi";
+ String testStr = Validate.notEmpty(str, "Message");
+ assertSame(str, testStr);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNotBlankNullStringShouldThrow() {
//given
String string = null;
@@ -471,6 +514,20 @@
}
//-----------------------------------------------------------------------
+ public void testNotBlankReturnValues1() {
+ String str = "Hi";
+ String test = Validate.notBlank(str);
+ assertSame(str, test);
+ }
+
+ public void testNotBlankReturnValues2() {
+ String str = "Hi";
+ String test = Validate.notBlank(str, "Message");
+ assertSame(str, test);
+ }
+
+ //-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNoNullElementsArray1() {
String[] array = new String[] {"a", "b"};
Validate.noNullElements(array);
@@ -487,6 +544,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated array contains null element at index: 1", ex.getMessage());
}
+
+ array = new String[] {"a", "b"};
+ String[] test = Validate.noNullElements(array);
+ assertSame(array, test);
}
//-----------------------------------------------------------------------
@@ -506,9 +567,14 @@
} catch (IllegalArgumentException ex) {
assertEquals("MSG", ex.getMessage());
}
+
+ array = new String[] {"a", "b"};
+ String[] test = Validate.noNullElements(array, "Message");
+ assertSame(array, test);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testNoNullElementsCollection1() {
List<String> coll = new ArrayList<String>();
coll.add("a");
@@ -527,6 +593,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated collection contains null element at index: 1", ex.getMessage());
}
+
+ coll.set(1, "b");
+ List<String> test = Validate.noNullElements(coll);
+ assertSame(coll, test);
}
//-----------------------------------------------------------------------
@@ -548,9 +618,14 @@
} catch (IllegalArgumentException ex) {
assertEquals("MSG", ex.getMessage());
}
+
+ coll.set(1, "b");
+ List<String> test = Validate.noNullElements(coll, "Message");
+ assertSame(coll, test);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testAllElementsOfType() {
List<Object> coll = new ArrayList<Object>();
coll.add("a");
@@ -589,6 +664,8 @@
}
}
+ //-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testConstructor() {
assertNotNull(new Validate());
Constructor<?>[] cons = Validate.class.getDeclaredConstructors();
@@ -599,6 +676,7 @@
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testValidIndex_withMessage_array() {
Object[] array = new Object[2];
Validate.validIndex(array, 0, "Broken: ");
@@ -615,6 +693,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("Broken: 2", ex.getMessage());
}
+
+ String[] strArray = new String[] {"Hi"};
+ String[] test = Validate.noNullElements(strArray, "Message");
+ assertSame(strArray, test);
}
public void testValidIndex_array() {
@@ -633,9 +715,14 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated array index is invalid: 2", ex.getMessage());
}
+
+ String[] strArray = new String[] {"Hi"};
+ String[] test = Validate.noNullElements(strArray);
+ assertSame(strArray, test);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testValidIndex_withMessage_collection() {
Collection<String> coll = new ArrayList<String>();
coll.add(null);
@@ -654,6 +741,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("Broken: 2", ex.getMessage());
}
+
+ List<String> strColl = Arrays.asList(new String[] {"Hi"});
+ List<String> test = Validate.validIndex(strColl, 0, "Message");
+ assertSame(strColl, test);
}
public void testValidIndex_collection() {
@@ -674,9 +765,14 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated collection index is invalid: 2", ex.getMessage());
}
+
+ List<String> strColl = Arrays.asList(new String[] {"Hi"});
+ List<String> test = Validate.validIndex(strColl, 0);
+ assertSame(strColl, test);
}
//-----------------------------------------------------------------------
+ //-----------------------------------------------------------------------
public void testValidIndex_withMessage_charSequence() {
CharSequence str = "Hi";
Validate.validIndex(str, 0, "Broken: ");
@@ -693,6 +789,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("Broken: 2", ex.getMessage());
}
+
+ String input = "Hi";
+ String test = Validate.validIndex(input, 0, "Message");
+ assertSame(input, test);
}
public void testValidIndex_charSequence() {
@@ -711,6 +811,10 @@
} catch (IllegalArgumentException ex) {
assertEquals("The validated string index is invalid: 2", ex.getMessage());
}
+
+ String input = "Hi";
+ String test = Validate.validIndex(input, 0);
+ assertSame(input, test);
}
}