On Sun, Feb 21, 2010 at 8:03 PM, sebb <[email protected]> wrote: > On 21/02/2010, [email protected] <[email protected]> wrote: >> Author: niallp >> Date: Sun Feb 21 02:52:56 2010 >> New Revision: 912292 >> >> URL: http://svn.apache.org/viewvc?rev=912292&view=rev >> Log: >> LANG-76 EnumUtils.getEnum() doesn't work in 1.5+ - force initialization of >> the Enum class using Class.forName() thanks to Marcus Schulte for the >> solution >> (Note: for JDK 1.5+ the Ant build compiles EnumUtilsLang76Test with >> source/target 1.5 which causes this problem to occur) >> >> Added: >> >> commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/enums/EnumUtilsLang76Test.java >> (with props) >> Modified: >> commons/proper/lang/branches/LANG_2_X/build.xml >> >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enum/Enum.java >> >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enums/Enum.java >> >> commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/enums/EnumUtilsTest.java >> > ... >> Modified: >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enum/Enum.java >> URL: >> http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enum/Enum.java?rev=912292&r1=912291&r2=912292&view=diff >> ============================================================================== >> --- >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enum/Enum.java >> (original) >> +++ >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enum/Enum.java >> Sun Feb 21 02:52:56 2010 >> @@ -484,6 +484,17 @@ >> throw new IllegalArgumentException("The Class must be a >> subclass of Enum"); >> } >> Entry entry = (Entry) cEnumClasses.get(enumClass); >> + >> + if (entry == null) { >> + try { >> + // LANG-76 - try to force class initialization for JDK 1.5+ >> + Class.forName(enumClass.getName(), true, >> enumClass.getClassLoader()); >> + entry = (Entry) cEnumClasses.get(enumClass); >> + } catch (Throwable t) { >> + // Ignore > > Not a good idea to ignore Throwable.
OK I've changed it to Exception: http://svn.apache.org/viewvc?view=revision&revision=912394 Niall >> + } >> + } >> + >> return entry; >> } >> >> >> Modified: >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enums/Enum.java >> URL: >> http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enums/Enum.java?rev=912292&r1=912291&r2=912292&view=diff >> ============================================================================== >> --- >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enums/Enum.java >> (original) >> +++ >> commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/enums/Enum.java >> Sun Feb 21 02:52:56 2010 >> @@ -530,6 +530,17 @@ >> throw new IllegalArgumentException("The Class must be a >> subclass of Enum"); >> } >> Entry entry = (Entry) cEnumClasses.get(enumClass); >> + >> + if (entry == null) { >> + try { >> + // LANG-76 - try to force class initialization for JDK 1.5+ >> + Class.forName(enumClass.getName(), true, >> enumClass.getClassLoader()); >> + entry = (Entry) cEnumClasses.get(enumClass); >> + } catch (Throwable t) { >> + // Ignore > > Ditto. > >> + } >> + } >> + >> return entry; >> } >> >> > > ... > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
