You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2011/04/21 17:33:02 UTC

svn commit: r1095752 - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/ClassUtils.java test/java/org/apache/commons/lang3/ClassUtilsTest.java

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>"));