Here is the stack trace :

Caused by: java.lang.IllegalStateException:
java.lang.IllegalArgumentException: No enum const class
com.sgss.veristat.service.publisher.impl.TaskType.S
        at 
org.exolab.castor.mapping.handlers.EnumFieldHandler.convertUponSet(EnumFieldHandler.java:151)
        at 
org.exolab.castor.mapping.GeneralizedFieldHandler.setValue(GeneralizedFieldHandler.java:274)
        at 
org.exolab.castor.mapping.GeneralizedFieldHandler.setValue(GeneralizedFieldHandler.java:274)
        at 
org.exolab.castor.xml.UnmarshalHandler.setAttributeValueOnObject(UnmarshalHandler.java:3127)
        at 
org.exolab.castor.xml.UnmarshalHandler.processAttribute(UnmarshalHandler.java:3074)
        at 
org.exolab.castor.xml.UnmarshalHandler.processAttributes(UnmarshalHandler.java:2751)
        at 
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:2388)
        at 
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1418)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown 
Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown
Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
Source)
        at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:715)
        at 
com.sgss.veristat.service.publisher.impl.PublisherManager.getPublisherExtraction(PublisherManager.java:27)
        at 
com.sgss.test.veristat.service.publisher.PublisherManagerTest.testGetPublisherExtraction(PublisherManagerTest.java:20)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at junit.framework.TestCase.runTest(TestCase.java:168)
        at junit.framework.TestCase.runBare(TestCase.java:134)
        at junit.framework.TestResult$1.protect(TestResult.java:110)
        at junit.framework.TestResult.runProtected(TestResult.java:128)
        at junit.framework.TestResult.run(TestResult.java:113)
        at junit.framework.TestCase.run(TestCase.java:124)
        at junit.framework.TestSuite.runTest(TestSuite.java:232)
        at junit.framework.TestSuite.run(TestSuite.java:227)
        at 
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
        at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

Greg

2008/2/13, Matthias Epheser <[EMAIL PROTECTED]>:
> Grégoire Dariel schrieb:
> > I was using the 1.1.2.1 but I've just tried with the 1.2 and that
> > doesn't work anymore.
> > I saw that there was an improvement in the 1.2 for Java5 enum.
>
> As I implemented this new java5 support, i'm currently trying to
> reproduce your problem.
>
>   We have
> > to define the following method in the enum type :
> >
> > public static CompositeType fromValue(final java.lang.String value) {
> >         for (CompositeType c: CompositeType.values()) {
> >             if (c.value.equals(value)) {
> >                 return c;
> >             }
> >         }
> >         throw new IllegalArgumentException(value);
> >     }
>
> Yep, as castor only gets the value string during unmarshalling, we need
> this method to "map" the string value "S" to the actual enum constant.
>
> >
> > I tried using no handler and defining this method. The method
> > fromValue is actually called and returned the right value but I still
> > have the Exception :
> > java.lang.IllegalArgumentException: No enum const class TaskType.S
>
> Can you please provide the whole stacktrace, then I will have a look at
> the castor code that calls the fromValue method.
>
> regards
> matthias
>
> > Where am I wrong ?
> >
> > Thanks for your help :)
> > Greg
> >
> > 2008/2/8, Werner Guttmann <[EMAIL PROTECTED]>:
> >> What version are you using, if I may ask  ?
> >>
> >> Werner
> >>
> >> Grégoire Dariel wrote:
> >>> I'm trying to unmarshal an XML field to a Java5 Enum.
> >>> I'm using a GeneralizedFieldHandler to do this.
> >>>
> >>> Unfortunatly, I'm getting the following error trying to unmarshall :
> >>> java.lang.IllegalArgumentException: No enum const class TaskType.S
> >>> at java.lang.Enum.valueOf(Enum.java:192)
> >>> at TaskType.valueOf(TaskType.java:1)
> >>> ...
> >>>
> >>> Here is the mapping.xml :
> >>> <class name="Task">
> >>>                 <field name="type" type="TaskType" 
> >>> handler="TaskTypeHandler">
> >>>                           <bind-xml name="type" node="attribute" />
> >>>                 </field>
> >>> </class>
> >>>
> >>> Here is the xml data file :
> >>> <tache type="S">
> >>>
> >>>   Here is Task.java :
> >>> public class Task {
> >>>         private TaskType type;
> >>>         public TaskType getType() {
> >>>                 return type;
> >>>         }
> >>>
> >>>         public void setType(TaskType pType) {
> >>>                 type = pType;
> >>>           }
> >>> }
> >>>
> >>> Here is TaskType.java :
> >>> public enum TaskType {
> >>>         SCHEDULED('S'), OPTIONAL('O'), PROVOKED('P');
> >>>
> >>>         private char string;
> >>>
> >>>         TaskType(char pChar) {
> >>>                   string = pChar;
> >>>         }
> >>>
> >>>         public char getChar() {
> >>>                 return string;
> >>>         }
> >>> }
> >>>
> >>> And here is TaskTypeHandler :
> >>> public class TaskTypeHandler extends GeneralizedFieldHandler {
> >>>
> >>>         public TaskTypeHandler() {
> >>>                 super();
> >>>         }
> >>>
> >>>         public Object convertUponGet(Object pValue) {
> >>>                 return null;
> >>>         }
> >>>
> >>>         public Object convertUponSet(Object pValue) {
> >>>                   String tString = (String) pValue;
> >>>                 if (tString.equals("S")) {
> >>>                         return TaskType.SCHEDULED;
> >>>                   } else if (tString.equals("O")) {
> >>>                         return TaskType.OPTIONAL;
> >>>                 } else if (tString.equals("P")) {
> >>>                         return TaskType.PROVOKED;
> >>>                   } else {
> >>>                         return null;
> >>>                 }
> >>>         }
> >>>
> >>>         public Class<TaskType> getFieldType() {
> >>>                 return TaskType.class;
> >>>         }
> >>> }
> >>>
> >>>
> >>> It seems that Castor does not use the GeneralizedFieldHandler and uses
> >>> the default behaviour instead, that is calling TaskType.valueOf("S").
> >>>
> >>> Am I something wrong ? Is there a way to bypass the default behaviour ?
> >>>
> >>> Thanks,
> >>> Greg
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe from this list, please visit:
> >>>
> >>>     http://xircles.codehaus.org/manage_email
> >>>
> >>>
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe from this list, please visit:
> >>
> >>     http://xircles.codehaus.org/manage_email
> >>
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this list, please visit:
> >
> >     http://xircles.codehaus.org/manage_email
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email
>
>
>

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to