Hi Mathias, I don't see anything wrong offhand. Can you enter this in Jira, with a sample (including Ant build) I can run to recreate the problem?
Thanks, - Dennis Dennis M. Sosnoski SOA, Web Services, and XML Training and Consulting http://www.sosnoski.com - http://www.sosnoski.co.nz Seattle, WA +1-425-296-6194 - Wellington, NZ +64-4-298-6117 Mathias Hendrich wrote: > Hello, > > I have a problem with parsing a document after calling a get-method of an > attribute which has an abstract type and returns a specific type at the time. > It means that I have an object already assigned to the attribute when parsing > to the associated element of the xml document and want to update this object. > The problem is, the getter is called and returns a derived type which will be > set immediately via the setter without parsing the element. > After that an exception will be thrown showing that the next xml element is > expected but the parser has stopped at the element what was not fully parsed. > > If I don't use a superclass as "Inhaber" all goes as expected. The existing > object will be used and updated with the values from the xml document. > > This behavior looks like a bug to me or am I doing anything wrong here? > > Thanks in advance > Mathias > > binding - file: > > <mapping name="Steuerkonto" class="xmlbinding.Steuerkonto" > pre-set="preset" post-set="postset"> > <structure name="Inhaber"> > <structure set-method="setInhaber" > get-method="getInhaber" pre-set="presetInhaber"/> > <structure name="AdrKette"> > <collection add-method="addAdresse" > iter-method="createAdressIterator" type="xmlbinding.Steuerkonto" > item-type="xmlbinding.Adresse"> > <structure map-as="xmlbinding.StrAdr"/> > <structure > map-as="xmlbinding.GrossempfAdr"/> > <structure > map-as="xmlbinding.PostfAdr"/> > </collection> > </structure> > </structure> > </mapping> > <mapping class="xmlbinding.NatUndNNatPerson" abstract="true"> > </mapping> > <mapping name="NNatPers" class="xmlbinding.NNatPers" > extends="xmlbinding.NatUndNNatPerson"> > <value name="name" set-method="setName" get-method="getName" > usage="required" style="attribute"/> > </mapping> > <mapping name="NatPers" class="xmlbinding.NatPers" > extends="xmlbinding.NatUndNNatPerson"> > <value name="lastname" set-method="setLastname" > get-method="getLastname" usage="required" style="attribute"/> > <value name="firstname" set-method="setFirstname" > get-method="getFirstname" usage="optional" style="attribute"/> > </mapping> > <mapping name="StrAdr" class="xmlbinding.StrAdr"> > <structure map-as="Adresse"/> > <value name="str" field="str" usage="required" > style="attribute"/> > </mapping> > <mapping name="GrossempfAdr" class="xmlbinding.GrossempfAdr"> > <structure map-as="Adresse"/> > <value name="grempfname" field="grempfname" usage="required" > style="attribute"/> > </mapping> > <mapping name="PostfAdr" class="xmlbinding.PostfAdr"> > <structure map-as="Adresse"/> > <value name="postf" field="postf" usage="required" > style="attribute"/> > </mapping> > <mapping type-name="Adresse" class="xmlbinding.Adresse" abstract="true"> > <value name="Plz" field="plz" usage="required"/> > <value name="ort" field="ort" usage="required" > style="attribute"/> > <value name="adressArt" field="adressArt" usage="optional" > style="attribute"/> > </mapping> > > extract from Steuerkonto.java: > > protected NatUndNNatPerson inhaber; > public NatUndNNatPerson getInhaber() { > if (inhaber==null) { > inhaber=new NNatPers(); // simulating existing object > } > System.out.println("getInhaber: " + this.inhaber); > return this.inhaber; > } > > public void setInhaber(NatUndNNatPerson inhaber) { > System.out.println("setInhaber: " + inhaber); > this.inhaber = inhaber; > } > > XML-document > > <Steuerkonto> > <Inhaber> > <NNatPers name="NichtnatPerson"/> > <AdrKette> > <StrAdr ort="String" adressArt="String" str="String"> > <Plz>String</Plz> > </StrAdr> > <GrossempfAdr ort="String" adressArt="String" > grempfname="String"> > <Plz>String</Plz> > </GrossempfAdr> > <PostfAdr ort="String" adressArt="String" > postf="String"> > <Plz>String</Plz> > </PostfAdr> > </AdrKette> > </Inhaber> > </Steuerkonto> > > Exception: > > getInhaber: [EMAIL PROTECTED] > setInhaber: [EMAIL PROTECTED] > org.jibx.runtime.JiBXException: Expected "{http://xmlbinding}AdrKette" start > tag, found "{http://xmlbinding}NNatPers" start tag (line 5, col 36) > at > org.jibx.runtime.impl.UnmarshallingContext.throwStartTagNameError(Unknown > Source) > at org.jibx.runtime.impl.UnmarshallingContext.matchStart(Unknown Source) > at org.jibx.runtime.impl.UnmarshallingContext.parsePastStartTag(Unknown > Source) > at xmlbinding.Steuerkonto.JiBX_bindings_unmarshal_1_0(Steuerkonto.java) > at > xmlbinding.JiBX_JiBXTest2_bindings_bindingsSteuerkonto_access.unmarshal() > at org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(Unknown > Source) > at org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(Unknown > Source) > at org.jibx.extras.TestRoundtrip.runTest(Unknown Source) > at org.jibx.extras.TestRoundtrip.main(Unknown Source) > > Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ jibx-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jibx-users
