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