You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sebb <se...@gmail.com> on 2010/02/21 21:03:45 UTC

Re: svn commit: r912292 - in /commons/proper/lang/branches/LANG_2_X: ./ src/main/java/org/apache/commons/lang/enum/ src/main/java/org/apache/commons/lang/enums/ src/test/java/org/apache/commons/lang/enums/

On 21/02/2010, niallp@apache.org <ni...@apache.org> 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: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r912292 - in /commons/proper/lang/branches/LANG_2_X: ./ src/main/java/org/apache/commons/lang/enum/ src/main/java/org/apache/commons/lang/enums/ src/test/java/org/apache/commons/lang/enums/

Posted by Niall Pemberton <ni...@gmail.com>.
On Sun, Feb 21, 2010 at 8:03 PM, sebb <se...@gmail.com> wrote:
> On 21/02/2010, niallp@apache.org <ni...@apache.org> 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: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org