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. > + } > + } > + > 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]
