Author: ggregory
Date: Thu Apr 21 15:33:02 2011
New Revision: 1095752

URL: http://svn.apache.org/viewvc?rev=1095752&view=rev
Log:
Add two new null-safe APIs: getSimpleName(*). See 
https://issues.apache.org/jira/browse/LANG-696

Modified:
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassUtils.java
    
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassUtilsTest.java

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassUtils.java?rev=1095752&r1=1095751&r2=1095752&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassUtils.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/ClassUtils.java
 Thu Apr 21 15:33:02 2011
@@ -213,6 +213,37 @@ public class ClassUtils {
         return out + arrayPrefix;
     }
 
+    /**
+     * <p>Null-safe version of <code>aClass.getSimpleName()</code></p>
+     *
+     * @param cls the class for which to get the simple name.
+     * @return the simple class name.
+     * @since 3.0
+     * @see Class#getSimpleName()
+     */
+    public static String getSimpleName(Class<?> cls) {
+        if (cls == null) {
+            return StringUtils.EMPTY;
+        }
+        return cls.getSimpleName();
+    }
+
+    /**
+     * <p>Null-safe version of <code>aClass.getSimpleName()</code></p>
+     *
+     * @param object the object for which to get the simple class name.
+     * @param valueIfNull the value to return if <code>object</code> is 
<code>null</code>
+     * @return the simple class name.
+     * @since 3.0
+     * @see Class#getSimpleName()
+     */
+    public static String getSimpleName(Object object, String valueIfNull) {
+        if (object == null) {
+            return valueIfNull;
+        }
+        return getSimpleName(object.getClass());
+    }
+
     // Package name
     // ----------------------------------------------------------------------
     /**

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassUtilsTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassUtilsTest.java?rev=1095752&r1=1095751&r2=1095752&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassUtilsTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/ClassUtilsTest.java
 Thu Apr 21 15:33:02 2011
@@ -99,6 +99,8 @@ public class ClassUtilsTest extends Test
         assertEquals("String[][][][]", 
ClassUtils.getShortClassName(String[][][][].class));
     }
 
+
+
     public void test_getShortClassName_String() {
         assertEquals("ClassUtils", 
ClassUtils.getShortClassName(ClassUtils.class.getName()));
         assertEquals("Map.Entry", 
ClassUtils.getShortClassName(Map.Entry.class.getName()));
@@ -106,6 +108,48 @@ public class ClassUtilsTest extends Test
         assertEquals("", ClassUtils.getShortClassName(""));
     }
 
+    public void test_getSimpleName_Class() {
+        assertEquals("ClassUtils", ClassUtils.getSimpleName(ClassUtils.class));
+        assertEquals("Entry", ClassUtils.getSimpleName(Map.Entry.class));
+        assertEquals("", ClassUtils.getSimpleName((Class<?>) null));
+
+        // LANG-535
+        assertEquals("String[]", ClassUtils.getSimpleName(String[].class));
+        assertEquals("Entry[]", ClassUtils.getSimpleName(Map.Entry[].class));
+
+        // Primitives
+        assertEquals("boolean", ClassUtils.getSimpleName(boolean.class));
+        assertEquals("byte", ClassUtils.getSimpleName(byte.class));
+        assertEquals("char", ClassUtils.getSimpleName(char.class));
+        assertEquals("short", ClassUtils.getSimpleName(short.class));
+        assertEquals("int", ClassUtils.getSimpleName(int.class));
+        assertEquals("long", ClassUtils.getSimpleName(long.class));
+        assertEquals("float", ClassUtils.getSimpleName(float.class));
+        assertEquals("double", ClassUtils.getSimpleName(double.class));
+
+        // Primitive Arrays
+        assertEquals("boolean[]", ClassUtils.getSimpleName(boolean[].class));
+        assertEquals("byte[]", ClassUtils.getSimpleName(byte[].class));
+        assertEquals("char[]", ClassUtils.getSimpleName(char[].class));
+        assertEquals("short[]", ClassUtils.getSimpleName(short[].class));
+        assertEquals("int[]", ClassUtils.getSimpleName(int[].class));
+        assertEquals("long[]", ClassUtils.getSimpleName(long[].class));
+        assertEquals("float[]", ClassUtils.getSimpleName(float[].class));
+        assertEquals("double[]", ClassUtils.getSimpleName(double[].class));
+
+        // Arrays of arrays of ...
+        assertEquals("String[][]", ClassUtils.getSimpleName(String[][].class));
+        assertEquals("String[][][]", 
ClassUtils.getSimpleName(String[][][].class));
+        assertEquals("String[][][][]", 
ClassUtils.getSimpleName(String[][][][].class));
+    }
+
+    public void test_getSimpleName_Object() {
+        assertEquals("ClassUtils", ClassUtils.getSimpleName(new ClassUtils(), 
"<null>"));
+        assertEquals("Inner", ClassUtils.getSimpleName(new Inner(), "<null>"));
+        assertEquals("String", ClassUtils.getSimpleName("hello", "<null>"));
+        assertEquals("<null>", ClassUtils.getSimpleName(null, "<null>"));
+    }
+
     // 
-------------------------------------------------------------------------
     public void test_getPackageName_Object() {
         assertEquals("org.apache.commons.lang3", ClassUtils.getPackageName(new 
ClassUtils(), "<null>"));


Reply via email to