You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by an...@apache.org on 2012/03/16 20:53:24 UTC

svn commit: r1301720 - in /myfaces/trinidad/branches/andys-skin-pregen: trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/ trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/ trinidad-impl/src/main/java/org/apache/myfaces/trinida...

Author: andys
Date: Fri Mar 16 19:53:24 2012
New Revision: 1301720

URL: http://svn.apache.org/viewvc?rev=1301720&view=rev
Log:
Checkpoint: added  Enums.parseDisplayNameEnumRequestParameter() convenience method.

Modified:
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
    myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java?rev=1301720&r1=1301719&r2=1301720&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/Enums.java Fri Mar 16 19:53:24 2012
@@ -405,6 +405,47 @@ public final class Enums
     }
   }
 
+  /**
+   * Convenience for Enums.parseEnumRequestParameter() that uses a display name-based
+   * EnumParser to parse values.
+   * 
+   * In addition, a display name-based StringProducer is used to provide a more
+   * detailed error message in the event of a parse exception.
+   * 
+   * @see #parseEnumRequestParameter
+   * @see #displayNameEnumParser
+   * @see #displayNameStringProducer
+   */
+  public static <E extends Enum> Collection<E> parseDisplayNameEnumRequestParameter(
+    ExternalContext external,
+    String          paramName,
+    Class<E>        enumClass,
+    E               defaultValue
+    ) throws EnumParseException
+  {
+    Collection<String> paramValues = _getRequestParamValues(external, paramName);
+    EnumParser<E> enumParser = displayNameEnumParser(enumClass);
+    
+    try
+    {
+      return Enums.parseEnumValues(paramValues, enumClass, enumParser, defaultValue);
+    }
+    catch (EnumParseException e)
+    {
+      // Re-throw with a more detailed error message
+      String illegalValue = e.getIllegalValue();
+      String validValues = Enums.patternOf(enumClass,
+                                         Enums.displayNameStringProducer(enumClass));
+
+      String message = _LOG.getMessage("ILLEGAL_REQUEST_PARAMETER_VALUE",
+                           new Object[] {
+                             illegalValue,
+                             paramName,                             
+                             validValues });
+
+      throw new EnumParseException(message, illegalValue);
+    }
+  }
   static private final TrinidadLogger _LOG =
     TrinidadLogger.createTrinidadLogger(Enums.class);
 }

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts?rev=1301720&r1=1301719&r2=1301720&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts Fri Mar 16 19:53:24 2012
@@ -533,4 +533,6 @@
 
 <resource key="DIRECTORY_NOT_WRITABLE">The directory {0} exists, but is not writable.</resource>
 
+<resource key="ILLEGAL_REQUEST_PARAMETER_VALUE">'{0}' is not a valid value for request parameter '{1}'.  Valid values are: {2}</resource>
+
 </resources>

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java?rev=1301720&r1=1301719&r2=1301720&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java Fri Mar 16 19:53:24 2012
@@ -138,37 +138,17 @@ abstract public class PregenConfig
   {
     try
     {
-      return Enums.parseEnumRequestParameter(external,
-                                             paramName,
-                                             enumClass,
-                                             Enums.displayNameEnumParser(enumClass),
-                                             defaultValue);
+      return Enums.parseDisplayNameEnumRequestParameter(external,
+                                                        paramName,
+                                                        enumClass,
+                                                        defaultValue);
     }
     catch (EnumParseException e)
     {
-      String message = _getIllegalDisplayNameRequestParamMessage(paramName,
-                                                                 e.getIllegalValue(),
-                                                                 enumClass);
-      throw new InvalidConfigException(message);
+      throw new InvalidConfigException(e.getMessage());
     }
   }
 
-  private static <E extends Enum> String _getIllegalDisplayNameRequestParamMessage(
-    String   paramName,
-    String   paramValue,
-    Class<E> enumClass
-    )
-  {
-    String validValues = Enums.patternOf(enumClass,
-                                         Enums.displayNameStringProducer(enumClass));
-
-    return _LOG.getMessage("ILLEGAL_REQUEST_PARAMETER_VALUE",
-                           new Object[] {
-                             paramValue,
-                             paramName,                             
-                             validValues });
-  }
-
   /**
    * Returns the (non-null) platform variants to pregenerate.
    * 

Modified: myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts?rev=1301720&r1=1301719&r2=1301720&view=diff
==============================================================================
--- myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts (original)
+++ myfaces/trinidad/branches/andys-skin-pregen/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts Fri Mar 16 19:53:24 2012
@@ -1190,8 +1190,6 @@ The skin {0} specified on the requestMap
 
 <resource key="SKIN_PREGEN_COMPLETED">Completed pregeneration of skin {0}.  Generated {1} files for {2} of {3} skin variants in {4} ms.  (Pregeneration output written to {5}.)</resource>
 
-<resource key="ILLEGAL_REQUEST_PARAMETER_VALUE">{0} is not a valid value for request parameter {1}.  Valid values are: {2}</resource>
-
 <resource key="ILLEGAL_SYSTEM_PROPERTY_VALUE">{0} is not a valid value for system property {1}.  Valid values are: {2}</resource>
 
 <resource key="SKIN_EMPTY_VERSION_RANGE">An unexecpted empty version range was detected during style sheet generation, possibly indicating a Trinidad skinning defect.</resource>