From: Dennis S. <dm...@so...> - 2004-07-13 20:07:38
|
Hi Scott, I'm redirecting this response to the users list, since it's the type of question that I like to have archived there. You certainly shouldn't be getting this failure in any case, but I see the likely cause of the problem. This goes back to the definition of the item-type attribute on the <collection>: "If this attribute is used it must be the fully-qualified class name for items contained in the collection, where the class has an mapping defined at an enclosing level." There's no mapping defined for java.lang.String - there's a default serialization/deserialization, but that's something that just works with text while a mapping needs to work with elements. Subtle distinction, I know, and it should be handled by giving you an explicit message that says "No mapping defined for java.lang.String" rather than causing a failure in code generation. To handle this properly you need to define how you want the collection of strings handled, something like: <collection field="editors"> <value name="editor"/> </collection> That tells JiBX to represent the individual string values from the collection as <editor>editor name text</editor>, which is what I suspect you want. - Dennis Stevenson, Scott W wrote: >Hello, > >I am new to jibx. So far it looks awesome, but I am getting an exception when generating the bindings that I think may be an error. I have classes held in collections recursively. As long as I done specify the item-type attribute it works fine, but if I specify item-type for anything I get the following exception when generating the bindings. Has anyone seen this before? > >Thanks, > >Scott... > > > <mapping name="ClassInfo" class="boeing.engineering.leangi3.metadata.ClassInfo"> > <value name="class-name" field="className"/> > <value name="display-name" field="displayName"/> > <value name="icon-file" field="iconFile"/> > <value name="default-editor" field="defaultEditor"/> > <value name="default-viewer" field="defaultViewer"/> > <value name="automatic-viewer" field="automaticViewer"/> > <value name="post-edit-callback" field="postEditCallback"/> > <collection field="editors" item-type="java.lang.String"/> // FAILS > <collection field="viewers" item-type="java.lang.String"/> > <collection field="propertyDescriptors" item-type="boeing.engineering.leangi3.metadata.PropertyInfo"/> > <collection field="methodDescriptors" item-type="boeing.engineering.leangi3.metadata.MethodInfo"/> > </mapping> > > <mapping name="ClassInfo" class="boeing.engineering.leangi3.metadata.ClassInfo"> > <value name="class-name" field="className"/> > <value name="display-name" field="displayName"/> > <value name="icon-file" field="iconFile"/> > <value name="default-editor" field="defaultEditor"/> > <value name="default-viewer" field="defaultViewer"/> > <value name="automatic-viewer" field="automaticViewer"/> > <value name="post-edit-callback" field="postEditCallback"/> > <collection field="editors"/> // WORKS > <collection field="viewers"/> > <collection field="propertyDescriptors"/> > <collection field="methodDescriptors"/> > </mapping> > > >Stack trace: > >U:\cvsProjects\ltk\build>java -jar u:\javastuff\jibx\lib\jibx-bind.jar binding.x >ml >Exception in thread "main" java.lang.IllegalStateException: Stack size mismatch >on branch > in method boeing.engineering.leangi3.metadata.JiBX_MungeAdapter.JiBX_binding_ma >rshal > generated by org.jibx.binding.def.NestedCollection@107ebe1 > from stack: > 0: org.jibx.runtime.impl.MarshallingContext > 1: java.lang.String > to stack: > 0: org.jibx.runtime.impl.MarshallingContext > > at org.jibx.binding.classes.BranchWrapper.setTarget(BranchWrapper.java:1 >84) > at org.jibx.binding.classes.BranchWrapper.setTarget(BranchWrapper.java:2 >01) > at org.jibx.binding.def.NestedCollection.genContentMarshal(NestedCollect >ion.java:208) > at org.jibx.binding.def.ObjectBinding.genMarshalContentCall(ObjectBindin >g.java:668) > at org.jibx.binding.def.ObjectBinding.genContentMarshal(ObjectBinding.ja >va:728) > at org.jibx.binding.def.ComponentProperty.genContentMarshal(ComponentPro >perty.java:241) > at org.jibx.binding.def.ElementWrapper.genContentMarshal(ElementWrapper. >java:380) > at org.jibx.binding.def.NestedStructure.genContentMarshal(NestedStructur >e.java:190) > at org.jibx.binding.def.ObjectBinding.genMarshalContentCall(ObjectBindin >g.java:668) > at org.jibx.binding.def.ObjectBinding.genContentMarshal(ObjectBinding.ja >va:728) > at org.jibx.binding.def.ElementWrapper.genContentMarshal(ElementWrapper. >java:380) > at org.jibx.binding.def.MappingDefinition.generateCode(MappingDefinition >.java:560) > at org.jibx.binding.def.DefinitionContext.generateCode(DefinitionContext >.java:593) > at org.jibx.binding.def.BindingDefinition.generateCode(BindingDefinition >.java:562) > at org.jibx.binding.Compile.compile(Compile.java:299) > at org.jibx.binding.Compile.main(Compile.java:367) > > >------------------------------------------------------- >This SF.Net email sponsored by Black Hat Briefings & Training. >Attend Black Hat Briefings & Training, Las Vegas July 24-29 - >digital self defense, top technical experts, no vendor pitches, >unmatched networking opportunities. Visit www.blackhat.com >_______________________________________________ >jibx-devs mailing list >jib...@li... >https://lists.sourceforge.net/lists/listinfo/jibx-devs > > > > |