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

Reply via email to