Resolution: Won't Fix
Affects Version/s: 1.0-RC0
Fix Version/s: None
Environment:J2SE version 1.5.0_02-b09, Windows XP Professional (Service Pack 2)
Number of attachments :
I am able to use a Java 1.5 style enum for unmarshalling, like this:
<value name="language" field="language" deserializer="Test.Language.valueOf"/>
public enum Language
English, French, German
However, I get an binding compiler error when attempting to specify a default value for the enum:
<value name="language" field="language" usage="optional" default="English" deserializer="Test.Language.valueOf"/>
[bind] Using the following paths:
[bind] Using the following binding paths:
[bind] Running binding compiler version jibx-rc0
[bind] Error: Unable to load class Test.Language for converting default value of type Test.Language for value element at (line 4, col 118, in mapping.xml)
[bind] Error running binding compiler
[bind] org.jibx.runtime.JiBXException: Binding mapping.xml is unusable because of validation errors
[bind] at org.jibx.binding.Utility.loadBinding(Utility.java:361)
[bind] at org.jibx.binding.Utility.loadFileBinding(Utility.java:389)
[bind] at org.jibx.binding.Compile.compile(Compile.java:294)
It seems to have trouble loading my classes when trying to deal with the default value conversion. If I remove the "default" property, the error no longer occurs, though of course I lose the functionality that the "default" property provides.
For your information, I am currently working around this bug by adding a method "fromString" to my enum classes. This method will return the desired default if it is passed a null parameter. Otherwise, it returns the result of valueOf provided by the enum itself.
I have included an attachment, which contains a minimal project featuring this bug. It is a JBuilder project containing source files and an Ant build task.