hi maria, unfortunately i'm not allowed to post concrete sample code due to legal restrictions of the company i'm working with.
but i can give you an overview of what needs to be done. think about the following value-entry that cause the problem: <value name="text" field="text" usage="optional" nillable="true"/> you could change that into a structure-entry if you would have an unmarshaller/marshaller: <structure name="text" usage="optional" nillable="true" unmarshaller="com.company.YourUnmarshaller"/> this unmarshaller does the following: - receive a jibx unmarshalling context where it can read the content XML structure easily - in this case there is no real "structure" as you would expect only content as you replace value-entries - so the unmarshaller simply has to read the content from the context, deserialize it into the correct datatype, and give it back deserialization is, in our case, NOT handled inside the unmarshaller, as we don't know which type exactly to create. so what we have are special jibx-setters on the target objects that allow to set the value as a String, and they handle their deserialization by themselves, eg.: public class MyClass { private Integer value; // normal setter, not used by JiBX public void setValue(Integer newValue) { this.value = newValue; } // setter used with JiBX, can be private as it will be included in byte code creation directly private void setJiBXValue(String valueAsString) { try { this.value = new Integer(valueAsString); } catch (NumberFormatException nfe) { // do your error handling here } } } this is the workaround that we use here until this error get's fixed (if ever). br, günther Am 28.03.2008 um 15:04 schrieb Maria Aschauer: > thanks for your reply. > > we decided to use only the attribute usage="optional" now, but in the > near future the support of both attributes is required and this > problem > has to be solved. therefore some sample code would be still very > helpful. > > br, > maria > > Günther Wieser schrieb: >> hi maria, >> >> i opened a bug for that in the codehaus jira for jibx. did this a few >> months ago, so far this bug has not been opened by the developers, >> unfortunately. >> >> we overcome this problem in our production systems by writing our own >> unmarshaller so that we could use a structure tag instead of the >> value >> tag. using structure plus our own unmarshaller solved this, the >> unmarshaller of course is quite easy as long as you can easily detect >> your datatypes coming easily (you need to create the correct datatype >> from an input string, our datatypes were able to do that already). >> >> if you need more details let me know, i could post some demo code if >> you need it (but it will take until tuesday as monday is off here at >> my place). >> >> br, >> günther >> >> Am 21.03.2008 um 11:18 schrieb Maria Aschauer: >> >> >>> hi, >>> i am facing the same problem now, is there any solution? >>> >>> lg maria >>> >>> Günther Wieser schrieb: >>> >>>> hi, >>>> >>>> we found a problem with using nillable="true" and optional="true" >>>> on >>>> the very same value tag. >>>> >>>> think about the following example binding: >>>> <?xml version="1.0" encoding="ISO-8859-2"?> >>>> <binding> >>>> <mapping name="Data" class="usageoptreq.UsageOptReqData" >>>> ordered="false" flexible="true"> >>>> <value name="optional1" field="optional1" nillable="true" >>>> usage="optional"/> >>>> <value name="optional2" field="optional2" nillable="true" >>>> usage="optional"/> >>>> <value name="optional3" field="optional3" nillable="true" >>>> usage="optional"/> >>>> <value name="optional4" field="optional4" nillable="true" >>>> usage="optional"/> >>>> </mapping> >>>> </binding> >>>> >>>> >>>> we get the following error during runtime (compilation works fine): >>>> >>>> java.lang.IndexOutOfBoundsException: only START_TAG can have >>>> attributes TEXT seen ...<optional1>OO Optional1<... @6:26 >>>> at org.xmlpull.mxp1.MXParser.getAttributeValue(MXParser.java:927) >>>> at org.jibx.runtime.impl.XMLPullReaderFactory >>>> $XMLPullReader.getAttributeValue(XMLPullReaderFactory.java:395) >>>> at >>>> org >>>> .jibx >>>> .runtime >>>> .impl >>>> .UnmarshallingContext.getAttributeValue(UnmarshallingContext.java: >>>> 356) >>>> at >>>> org >>>> .jibx >>>> .runtime >>>> .impl >>>> .UnmarshallingContext.attributeBoolean(UnmarshallingContext.java: >>>> 1881) >>>> at >>>> usageoptreq >>>> .UsageOptReqData.JiBX_binding_unmarshal_1_2(UsageOptReqData.java) >>>> at usageoptreq.JiBX_bindingUsageOptReqData_access.unmarshal() >>>> at >>>> org >>>> .jibx >>>> .runtime >>>> .impl >>>> .UnmarshallingContext.unmarshalElement(UnmarshallingContext.java: >>>> 2537) >>>> at >>>> org >>>> .jibx >>>> .runtime >>>> .impl >>>> .UnmarshallingContext.unmarshalDocument(UnmarshallingContext.java: >>>> 2680) >>>> at >>>> usageoptreq >>>> .UsageOptReqTest.testCompileAndTransform(UsageOptReqTest.java:34) >>>> 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:324) >>>> at junit.framework.TestCase.runTest(TestCase.java:154) >>>> at junit.framework.TestCase.runBare(TestCase.java:127) >>>> at junit.framework.TestResult$1.protect(TestResult.java:106) >>>> at junit.framework.TestResult.runProtected(TestResult.java:124) >>>> at junit.framework.TestResult.run(TestResult.java:109) >>>> at junit.framework.TestCase.run(TestCase.java:118) >>>> at junit.framework.TestSuite.runTest(TestSuite.java:208) >>>> at junit.framework.TestSuite.run(TestSuite.java:203) >>>> at >>>> org >>>> .eclipse >>>> .jdt >>>> .internal >>>> .junit >>>> .runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java: >>>> 128) >>>> 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) >>>> >>>> so far the only workaround we found is either not to use >>>> nillable="true" or not to use optional="true". you can guess that >>>> this >>>> is not what we wanted ;-) >>>> >>>> is there a chance to get a bugfix? doesn anyone know a better >>>> workaround? >>>> >>>> br, >>>> günther >>>> >>>> >>>> >>> ------------------------------------------------------------------------- >>> This SF.net email is sponsored by: Microsoft >>> Defy all challenges. Microsoft(R) Visual Studio 2008. >>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >>> _______________________________________________ >>> jibx-users mailing list >>> jibx-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/jibx-users >>> >>> >> >> >> >> > > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace > _______________________________________________ > jibx-users mailing list > jibx-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jibx-users > -- Günther Wieser creative-it Guglgasse 6/1/11/1 A-1110 Wien [EMAIL PROTECTED] http://www.creative-it.com ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ jibx-users mailing list jibx-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jibx-users