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>.