You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by gg...@apache.org on 2004/06/30 20:33:58 UTC

cvs commit: jakarta-commons/lang/src/java/org/apache/commons/lang ClassUtils.java

ggregory    2004/06/30 11:33:58

  Modified:    lang/src/test/org/apache/commons/lang ClassUtilsTest.java
               lang/src/java/org/apache/commons/lang ClassUtils.java
  Log:
  Bugzilla Bug 27877
  [lang][patch] Make ClassUtils methods null-safe and not throw an IAE.
  http://issues.apache.org/bugzilla/show_bug.cgi?id=27877
  
  Revision  Changes    Path
  1.13      +7 -25     jakarta-commons/lang/src/test/org/apache/commons/lang/ClassUtilsTest.java
  
  Index: ClassUtilsTest.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/ClassUtilsTest.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ClassUtilsTest.java	27 Jun 2004 04:42:54 -0000	1.12
  +++ ClassUtilsTest.java	30 Jun 2004 18:33:58 -0000	1.13
  @@ -83,23 +83,14 @@
       public void test_getShortClassName_Class() {
           assertEquals("ClassUtils", ClassUtils.getShortClassName(ClassUtils.class));
           assertEquals("Map.Entry", ClassUtils.getShortClassName(Map.Entry.class));
  -        try {
  -            ClassUtils.getShortClassName((Class) null);
  -            fail();
  -        } catch (IllegalArgumentException ex) {}
  +        assertEquals("", ClassUtils.getShortClassName((Class) null));
       }
       
       public void test_getShortClassName_String() {
           assertEquals("ClassUtils", ClassUtils.getShortClassName(ClassUtils.class.getName()));
           assertEquals("Map.Entry", ClassUtils.getShortClassName(Map.Entry.class.getName()));
  -        try {
  -            ClassUtils.getShortClassName((String) null);
  -            fail();
  -        } catch (IllegalArgumentException ex) {}
  -        try {
  -            ClassUtils.getShortClassName("");
  -            fail();
  -        } catch (IllegalArgumentException ex) {}
  +        assertEquals("", ClassUtils.getShortClassName((String) null));
  +        assertEquals("", ClassUtils.getShortClassName(""));
       }
       
       // -------------------------------------------------------------------------
  @@ -112,23 +103,14 @@
       public void test_getPackageName_Class() {
           assertEquals("java.lang", ClassUtils.getPackageName(String.class));
           assertEquals("java.util", ClassUtils.getPackageName(Map.Entry.class));
  -        try {
  -            ClassUtils.getPackageName((Class) null);
  -            fail();
  -        } catch (IllegalArgumentException ex) {}
  +        assertEquals("", ClassUtils.getPackageName((Class)null));
       }
       
       public void test_getPackageName_String() {
           assertEquals("org.apache.commons.lang", ClassUtils.getPackageName(ClassUtils.class.getName()));
           assertEquals("java.util", ClassUtils.getPackageName(Map.Entry.class.getName()));
  -        try {
  -            ClassUtils.getPackageName((String) null);
  -            fail();
  -        } catch (IllegalArgumentException ex) {}
  -        try {
  -            ClassUtils.getPackageName("");
  -            fail();
  -        } catch (IllegalArgumentException ex) {}
  +        assertEquals("", ClassUtils.getPackageName((String)null));
  +        assertEquals("", ClassUtils.getPackageName(""));
       }
       
       // -------------------------------------------------------------------------
  
  
  
  1.30      +20 -24    jakarta-commons/lang/src/java/org/apache/commons/lang/ClassUtils.java
  
  Index: ClassUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/ClassUtils.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- ClassUtils.java	27 Jun 2004 04:42:54 -0000	1.29
  +++ ClassUtils.java	30 Jun 2004 18:33:58 -0000	1.30
  @@ -101,14 +101,12 @@
       /**
        * <p>Gets the class name minus the package name from a <code>Class</code>.</p>
        * 
  -     * @param cls  the class to get the short name for, must not be
  -     *  <code>null</code>
  -     * @return the class name without the package name
  -     * @throws IllegalArgumentException if the class is <code>null</code>
  +     * @param cls  the class to get the short name for.
  +     * @return the class name without the package name or an empty string
        */
       public static String getShortClassName(Class cls) {
           if (cls == null) {
  -            throw new IllegalArgumentException("The class must not be null");
  +            return StringUtils.EMPTY;
           }
           return getShortClassName(cls.getName());
       }
  @@ -118,14 +116,15 @@
        *
        * <p>The string passed in is assumed to be a class name - it is not checked.</p>
        * 
  -     * @param className  the className to get the short name for,
  -     *  must not be empty or <code>null</code>
  -     * @return the class name of the class without the package name
  -     * @throws IllegalArgumentException if the className is empty
  +     * @param className  the className to get the short name for
  +     * @return the class name of the class without the package name or an empty string
        */
       public static String getShortClassName(String className) {
  -        if (StringUtils.isEmpty(className)) {
  -            throw new IllegalArgumentException("The class name must not be empty");
  +        if (className == null) {
  +            return StringUtils.EMPTY;
  +        }
  +        if (className.length() == 0) {
  +            return StringUtils.EMPTY;
           }
           char[] chars = className.toCharArray();
           int lastDot = 0;
  @@ -158,14 +157,12 @@
       /**
        * <p>Gets the package name of a <code>Class</code>.</p>
        * 
  -     * @param cls  the class to get the package name for,
  -     *  must not be <code>null</code>
  -     * @return the package name
  -     * @throws IllegalArgumentException if the class is <code>null</code>
  +     * @param cls  the class to get the package name for, may be <code>null</code>.
  +     * @return the package name or an empty string
        */
       public static String getPackageName(Class cls) {
           if (cls == null) {
  -            throw new IllegalArgumentException("The class must not be null");
  +            return StringUtils.EMPTY;
           }
           return getPackageName(cls.getName());
       }
  @@ -174,19 +171,18 @@
        * <p>Gets the package name from a <code>String</code>.</p>
        *
        * <p>The string passed in is assumed to be a class name - it is not checked.</p>
  +	 * <p>If the class is unpackaged, return an empty string.</p>
        * 
  -     * @param className  the className to get the package name for,
  -     *  must not be empty or <code>null</code>
  -     * @return the package name
  -     * @throws IllegalArgumentException if the className is empty
  +     * @param className  the className to get the package name for, may be <code>null</code>
  +     * @return the package name or an empty string
        */
       public static String getPackageName(String className) {
  -        if (StringUtils.isEmpty(className)) {
  -            throw new IllegalArgumentException("The class name must not be empty");
  +        if (className == null) {
  +            return StringUtils.EMPTY;
           }
           int i = className.lastIndexOf(PACKAGE_SEPARATOR_CHAR);
           if (i == -1) {
  -            return "";
  +            return StringUtils.EMPTY;
           }
           return className.substring(0, i);
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org