commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bay...@apache.org
Subject svn commit: r918366 - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/Validate.java test/java/org/apache/commons/lang3/ValidateTest.java
Date Wed, 03 Mar 2010 08:56:23 GMT
Author: bayard
Date: Wed Mar  3 08:56:22 2010
New Revision: 918366

URL: http://svn.apache.org/viewvc?rev=918366&view=rev
Log:
Applying Valentin Rocher's patch from LANG-559, adding isInstanceOf and isAssignableFrom methods.


Modified:
    commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/Validate.java
    commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ValidateTest.java

Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/Validate.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/Validate.java?rev=918366&r1=918365&r2=918366&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/Validate.java (original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/Validate.java Wed Mar
 3 08:56:22 2010
@@ -65,6 +65,8 @@
     private static final String DEFAULT_VALID_INDEX_CHAR_SEQUENCE_EX_MESSAGE = "The validated
character sequence index is invalid: %d";
     private static final String DEFAULT_VALID_INDEX_COLLECTION_EX_MESSAGE = "The validated
collection index is invalid: %d";
     private static final String DEFAULT_VALID_STATE_EX_MESSAGE = "The validated state is
false";
+    private static final String DEFAULT_IS_ASSIGNABLE_EX_MESSAGE = "The validated class can
not be converted to the %s class";
+    private static final String DEFAULT_IS_INSTANCE_OF_EX_MESSAGE = "The validated object
is not an instance of %s";
 
     /**
      * Constructor. This class should not normally be instantiated.
@@ -915,4 +917,97 @@
             throw new IllegalArgumentException(String.format(message, values));
         }
     }
+
+    /**
+     * <p>Validate that the argument is an instance of the specified class; otherwise
+     * throwing an exception. This method is useful when validating according to an arbitrary
+     * class</p>
+     * 
+     * <pre>Validate.isInstanceOf(OkClass.class, object);</pre>
+     * 
+     * <p>The message of the exception is &quot;The validated object is not an
instance of&quot;
+     * followed by the name of the class</p>
+     * 
+     * @param type the class the object must be validated against
+     * @param o the object to check
+     * @throws IllegalArgumentException if argument is not of specified class
+     * @see #isInstanceOf(Class, Object, String, Object...)
+     */
+    public static void isInstanceOf(Class<?> type, Object o)
+    {
+        if (type.isInstance(o) == false)
+        {
+            throw new IllegalArgumentException(String.format(DEFAULT_IS_INSTANCE_OF_EX_MESSAGE,
type.getName()));
+        }
+    }
+    
+    /**
+     * <p>Validate that the argument is an instance of the specified class; otherwise
+     * throwing an exception with the specified message. This method is useful when 
+     * validating according to an arbitrary class</p>
+     * 
+     * <pre>Validate.isInstanceOf(OkClass.classs, object, "Wrong class, object is of
class %s", object.getClass().getName());</pre>
+     * 
+     * @param type the class the object must be validated against
+     * @param o the object to check
+     * @param message exception message
+     * @param values optional value for the exception message
+     * @throws IllegalArgumentException if argument is not of specified class
+     * @see #isInstanceOf(Class, Object)
+     */
+    public static void isInstanceOf(Class<?> type, Object o, String message, Object...
values)
+    {
+        if (type.isInstance(o) == false)
+        {
+            throw new IllegalArgumentException(String.format(message, values));
+        }
+    }
+    
+    /**
+     * <p>Validate that the argument can be converted to the specified class; otherwise
+     * throwing an exception with the specified message. This method is useful when
+     * validating if there will be no casting errors.</p>
+     * 
+     * <pre>Validate.isAssignableFrom(SuperClass.class, object.getClass());</pre>
+     * 
+     * <p>The message of the exception is &quot;The validated object can not be
converted to the&quot;
+     * followed by the name of the class and &quot;class&quot;</p>
+     * 
+     * @param superType the class the class must be validated against
+     * @param type the class to check
+     * @throws IllegalArgumentException if argument can not be converted to the specified
class
+     * @see #isAssignableFrom(Class, Class, String, Object...)
+     */
+    public static void isAssignableFrom(Class<?> superType, Class<?> type)
+    {
+        if (superType.isAssignableFrom(type) == false)
+        {
+            throw new IllegalArgumentException(String.format(DEFAULT_IS_ASSIGNABLE_EX_MESSAGE,
superType.getName()));
+        }
+    }
+    
+    /**
+     * <p>Validate that the argument can be converted to the specified class; otherwise
+     * throwing an exception. This method is useful when validating if there will be no
+     * casting errors.</p>
+     * 
+     * <pre>Validate.isAssignableFrom(SuperClass.class, object.getClass());</pre>
+     * 
+     * <p>The message of the exception is &quot;The validated object can not be
converted to the&quot;
+     * followed by the name of the class and &quot;class&quot;</p>
+     * 
+     * @param superType the class the class must be validated against
+     * @param type the class to check
+     * @param message the exception message if invalid
+     * @param values the optional values for the formatted exception message
+     * @throws IllegalArgumentException if argument can not be converted to the specified
class
+     * @see #isAssignableFrom(Class, Class)
+     */
+    public static void isAssignableFrom(Class<?> superType, Class<?> type, String
message, Object... values)
+    {
+        if (superType.isAssignableFrom(type) == false)
+        {
+            throw new IllegalArgumentException(String.format(message, values));
+        }
+    }
 }

Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ValidateTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ValidateTest.java?rev=918366&r1=918365&r2=918366&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ValidateTest.java (original)
+++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ValidateTest.java Wed
Mar  3 08:56:22 2010
@@ -20,6 +20,7 @@
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
+import java.util.AbstractList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -846,4 +847,49 @@
             assertEquals("Error", e.getMessage());
         }
     }
+
+    public void testIsInstanceOf() {
+        Validate.isInstanceOf(String.class, "hi");
+        Validate.isInstanceOf(Integer.class, 1);
+        try {
+            Validate.isInstanceOf(List.class, "hi");
+            fail("Expecting IllegalArgumentException");
+        } catch(IllegalArgumentException e) {
+            assertEquals("The validated object is not an instance of java.util.List", e.getMessage());
+        }
+    }
+    
+    public void testIsInstanceOf_withMessage() {
+        Validate.isInstanceOf(String.class, "hi", "Error");
+        Validate.isInstanceOf(Integer.class, 1, "Error");
+        try {
+            Validate.isInstanceOf(List.class, "hi", "Error");
+            fail("Expecting IllegalArgumentException");
+        } catch(IllegalArgumentException e) {
+            assertEquals("Error", e.getMessage());
+        }
+    }
+    
+    public void testIsAssignable() {
+        Validate.isAssignableFrom(CharSequence.class, String.class);
+        Validate.isAssignableFrom(AbstractList.class, ArrayList.class);
+        try {
+            Validate.isAssignableFrom(List.class, String.class);
+            fail("Expecting IllegalArgumentException");
+        } catch(IllegalArgumentException e) {
+            assertEquals("The validated class can not be converted to the java.util.List
class", e.getMessage());
+        }
+    }
+    
+    public void testIsAssignable_withMessage() {
+        Validate.isAssignableFrom(CharSequence.class, String.class, "Error");
+        Validate.isAssignableFrom(AbstractList.class, ArrayList.class, "Error");
+        try {
+            Validate.isAssignableFrom(List.class, String.class, "Error");
+            fail("Expecting IllegalArgumentException");
+        } catch(IllegalArgumentException e) {
+            assertEquals("Error", e.getMessage());
+        }
+    }
+
 }



Mime
View raw message