thanks a lot! Günther Wieser schrieb: > 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 >> >> > > > >
------------------------------------------------------------------------- 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