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