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:30:03 UTC

[myfaces-trinidad] 22/30: Checkpoint: added Enums.parseDisplayNameEnumRequestParameter() convenience method.

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 de3a2b5a0c7173dffd9ab455ac560da9c34fdede
Author: Andy Schwartz <an...@apache.org>
AuthorDate: Fri Mar 16 19:53:24 2012 +0000

    Checkpoint: added  Enums.parseDisplayNameEnumRequestParameter() convenience method.
---
 .../org/apache/myfaces/trinidad/util/Enums.java    | 41 ++++++++++++++++++++++
 .../myfaces/trinidad/resource/LoggerBundle.xrts    |  2 ++
 .../skin/pregen/config/PregenConfig.java           | 30 +++-------------
 .../trinidadinternal/resource/LoggerBundle.xrts    |  2 --
 4 files changed, 48 insertions(+), 27 deletions(-)

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 f7d7862..c78d93e 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
@@ -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);
 }
diff --git a/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts b/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts
index 6bd9c9f..fee54b5 100644
--- a/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts
+++ b/trinidad-api/src/main/xrts/org/apache/myfaces/trinidad/resource/LoggerBundle.xrts
@@ -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>
diff --git a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
index 69f5260..95c5384 100644
--- a/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
+++ b/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/skin/pregen/config/PregenConfig.java
@@ -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.
    * 
diff --git a/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts b/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
index aa65d7f..5f9d6d4 100644
--- a/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
+++ b/trinidad-impl/src/main/xrts/org/apache/myfaces/trinidadinternal/resource/LoggerBundle.xrts
@@ -1190,8 +1190,6 @@ The skin {0} specified on the requestMap will be used even though the consumer''
 
 <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>

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