You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2017/09/17 12:29:52 UTC

[myfaces-trinidad] 11/30: Checkpoint: Enums code cleanup.

This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch andys-skin-pregen
in repository https://gitbox.apache.org/repos/asf/myfaces-trinidad.git

commit 3da160fe5039d78eacd50f6ed9aa60c6500e2e8c
Author: Andy Schwartz <an...@apache.org>
AuthorDate: Tue Mar 13 17:17:20 2012 +0000

    Checkpoint: Enums code cleanup.
---
 .../myfaces/trinidad/util/EnumParseException.java  |  2 +-
 .../org/apache/myfaces/trinidad/util/Enums.java    | 36 +++++++++++++++-------
 .../apache/myfaces/trinidad/util/EnumsTest.java    | 34 +++++++++++++++++---
 .../skin/pregen/config/InvalidConfigException.java |  2 +-
 4 files changed, 57 insertions(+), 17 deletions(-)

diff --git a/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/EnumParseException.java b/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/EnumParseException.java
index 7ffa429..8ac74c4 100644
--- a/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/EnumParseException.java
+++ b/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/EnumParseException.java
@@ -29,7 +29,7 @@ package org.apache.myfaces.trinidad.util;
  * 
  * @see Enums#parseEnumValues
  */
-public class EnumParseException extends RuntimeException
+public final class EnumParseException extends RuntimeException
 {
   /**
    * Creates the EnumParseException
diff --git a/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java b/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java
index 264cddf..a822059 100644
--- a/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java
+++ b/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java
@@ -35,7 +35,7 @@ import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 /**
  * Enum-related utilities.
  */
-public class Enums
+public final class Enums
 {
   /**
    * Single abstract method interface for converting Enum
@@ -78,7 +78,7 @@ public class Enums
       stringKeyMap.put(keyProducer.toString(enumValue), enumValue);
     }
 
-    return stringKeyMap;
+    return Collections.unmodifiableMap(stringKeyMap);
   }
   
   /**
@@ -172,7 +172,7 @@ public class Enums
    * 
    * @param valuesToParse string values to parse
    * @param enumClass target enum class
-   * @param defaultValue an enum value to include in the parsed collection if no
+   * @param defaultValue an enum value to include in the parsed collection if
    *   valueToParse is empty.
    * @param enumParser called for each string value to convert to an enum constant.
    * 
@@ -275,8 +275,12 @@ public class Enums
    * 
    * @param enumClass the class of the enum for which we want to produce strings.  This
    *   class must provide a public displayName() method.
+   *   
+   * @throws IllegalArgumentException if the enum class does not provide a publicly
+   *   accessible displayName() method.
    */
   public static <E extends Enum> StringProducer<E> displayNameStringProducer(Class<E> enumClass)
+    throws IllegalArgumentException
   {
     return methodNameStringProducer(enumClass, "displayName");
   }
@@ -287,6 +291,9 @@ public class Enums
    * 
    * @param enumClass the target class to which String values are parsed.  This
    *   class must provide a public static valueOfDisplayName(String) method.
+   *
+   * @throws IllegalArgumentException if the enum class does not provide a publicly
+   *   accessible valueOfDisplayName(String) method.
    */
   public static <E extends Enum> EnumParser<E> displayNameEnumParser(Class<E> enumClass)
   {
@@ -297,14 +304,16 @@ public class Enums
    * Returns a StringProducer uses reflection to produce Strings from
    * enum constant values.
    * 
-   * 
    * @param enumClass the enum class on which the StringProducer operates
    * @param methodName the name of the method which the StringProducer invokes
+   * 
+   * @throws IllegalArgumentException if the method specified by the 
+   *   methodName argument does not exist.
    */
   public static <E extends Enum> StringProducer<E> methodNameStringProducer(
     Class<E> enumClass,
     String   methodName
-    )
+    ) throws IllegalArgumentException
   {
     final Method method = _getMethod(enumClass, methodName);
       
@@ -324,11 +333,14 @@ public class Enums
    *
    * @param enumClass the target enum class
    * @param methodName the name of the method to invoke
+   * 
+   * @throws IllegalArgumentException if the method specified by the 
+   *   methodName argument does not exist.
    */
   public static <E extends Enum> EnumParser<E> methodNameEnumParser(
     final Class<E> enumClass,
     String   methodName
-    )
+    ) throws IllegalArgumentException
   {
     final Method method = _getMethod(enumClass, methodName, String.class);
     
@@ -342,11 +354,12 @@ public class Enums
   }
   
   // Wrapper for Class.getMethod() that adds exception handling.
+  // Throws IllegalArgumentException if the Method cannot be retreived.
   private static Method _getMethod(
     Class<?>    aClass,
     String      methodName,
     Class<?>... parameterTypes
-    )
+    ) throws IllegalArgumentException
   {
     try
     {
@@ -354,11 +367,12 @@ public class Enums
     }
     catch (Exception e)
     {
-      throw new IllegalStateException(e);
+      throw new IllegalArgumentException(e);
     }
   }
   
-  // Wrapper for Method.invoke() that adds exception handling.
+  // Wrapper for Method.invoke() that adds exception handling.  Checked
+  // exceptions are propagated out as runtime exceptions.
   private static Object _invokeMethod(
     Method    method,
     Object    obj,
@@ -382,12 +396,12 @@ public class Enums
       }
       else
       {
-        throw new IllegalStateException(ite);
+        throw new RuntimeException(ite);
       }
     }
     catch (Exception e)
     {
-      throw new IllegalStateException(e);    
+      throw new RuntimeException(e);    
     }
   }
 
diff --git a/trinidad-api/src/test/java/org/apache/myfaces/trinidad/util/EnumsTest.java b/trinidad-api/src/test/java/org/apache/myfaces/trinidad/util/EnumsTest.java
index 68d3843..8acaed8 100644
--- a/trinidad-api/src/test/java/org/apache/myfaces/trinidad/util/EnumsTest.java
+++ b/trinidad-api/src/test/java/org/apache/myfaces/trinidad/util/EnumsTest.java
@@ -141,7 +141,7 @@ public class EnumsTest extends TestCase
     }
   }
 
-  public void testIllegalStringToEnum()
+  public void testStringToEnumInvalidValue()
   {
     Map<String,Clash> clashMap = Enums.createStringKeyMap(Clash.class,
                                             new InstrumentStringProducer());
@@ -176,7 +176,7 @@ public class EnumsTest extends TestCase
     assertTrue(values.contains(Clash.PAUL));
   }
   
-  public void testIllegalParseEnumValues()
+  public void testlParseEnumValuesInvalidValues()
   {
     String harmonica = "harmonica";
 
@@ -237,7 +237,7 @@ public class EnumsTest extends TestCase
     }
   }
   
-  public void testIllegalDisplayNameEnumParser()
+  public void testDisplayNameEnumParserInvalidValue()
   {
     EnumParser<Clash> parser = Enums.displayNameEnumParser(Clash.class);
     
@@ -262,6 +262,19 @@ public class EnumsTest extends TestCase
     }
   }
   
+  public void testMethodNameStringProducerInvalidName()
+  {
+    try
+    {
+      Enums.methodNameStringProducer(Clash.class, "height");
+      fail("IllegalArgumentException expected");
+    }
+    catch (IllegalArgumentException e)
+    {
+      // this is expected
+    }
+  }
+
   public void testMethodNameEnumParser()
   {
     EnumParser<Clash> parser = Enums.methodNameEnumParser(Clash.class, "valueOfDisplayName");
@@ -272,7 +285,7 @@ public class EnumsTest extends TestCase
     }
   }
   
-  public void testIllegalMethodNameEnumParser()
+  public void testMethodNameEnumParserInvalidValue()
   {
     EnumParser<Clash> parser = Enums.methodNameEnumParser(Clash.class, "valueOfDisplayName");
 
@@ -286,4 +299,17 @@ public class EnumsTest extends TestCase
       // this is expected
     }
   }
+
+  public void testMethodNameEnumParserInvalidName()
+  {
+    try
+    {
+      Enums.methodNameEnumParser(Clash.class, "valueOfHeight");
+      fail("IllegalArgumentException expected");
+    }
+    catch (IllegalArgumentException e)
+    {
+      // this is expected
+    }
+  }
 }
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/InvalidConfigException.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/InvalidConfigException.java
index a99a022..e30130f 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/InvalidConfigException.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/InvalidConfigException.java
@@ -22,7 +22,7 @@ package org.apache.myfaces.trinidadinternal.skin.pregen.config;
  * Exception thrown from PregenConfig.parse() if a failure occurs during
  * parsing.
  */
-public class InvalidConfigException extends RuntimeException
+public final class InvalidConfigException extends RuntimeException
 {
   /**
    * Creates an InvalidConfigException with a message that is

-- 
To stop receiving notification emails like this one, please contact
"commits@myfaces.apache.org" <co...@myfaces.apache.org>.