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 [EMAIL PROTECTED] 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
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jibx-devs
-------------------------------------------------------
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-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jibx-users
