hi,

using jibx 1.1.5, we found a problem with using getters and setters  
and primitive types.

here's an example class:

public class Address {

    private int test;

    private int getJiBXTest() {
        return this.test;
    }

    private void setJiBXTest(int test) {
        this.test=test;
    }
}

here's the binding (snippet):

        <mapping name="address" class="data.Address" abstract="true"  
flexible="true"
                ordered="false">
                <value name="test" set-method="setJiBXTest"
                        get-method="getJiBXTest" usage="required" 
nillable="true" />
        </mapping>

when compiling this, i get the following output:

  [bind] object binding for data.Address create class data.Address
     [bind] structure unordered, flexible
     [bind] element id from property from getJiXBId to setJiXBId  
(java.lang.Long)
     [bind] element street from property from getJiXBStreet to  
setJiXBStreet (java.lang.String)
     [bind] element city from property from getJiXBCity to setJiXBCity  
(java.lang.String)
     [bind] element yn from property from getJiBXYn to setJiBXYn  
(boolean)
     [bind] element test from property from getJiBXTest to setJiBXTest  
(int)
     [bind] Generating code for mapping data.Customer
     [bind] Error running binding compiler
     [bind] *** Error during code generation for file 'C:/JavaDev322/ 
JiXB Test/src/customer_binding.xml' - please enter a bug report for  
this error in Jira if the problem is not listed as fixed on the online  
status page ***
     [bind] java.lang.IllegalStateException: Internal error: Expected  
object reference on stack , found boolean
     [bind] full stack:
     [bind] 0: org.jibx.runtime.impl.MarshallingContext
     [bind] 1: boolean
     [bind] at  
org 
.jibx 
.binding.classes.MethodBuilder.verifyStackObject(MethodBuilder.java:551)
     [bind] at  
org 
.jibx.binding.classes.MethodBuilder.appendIFNONNULL(MethodBuilder.java: 
620)
     [bind] at  
org.jibx.binding.def.ValueChild.genMarshal(ValueChild.java:622)
     [bind] at  
org.jibx.binding.def.ValueChild.genContentMarshal(ValueChild.java:818)
     [bind] at  
org 
.jibx 
.binding.def.NestedStructure.genContentMarshal(NestedStructure.java:355)
     [bind] at  
org 
.jibx 
.binding.def.ObjectBinding.genMarshalContentCall(ObjectBinding.java:878)
     [bind] at  
org 
.jibx.binding.def.ObjectBinding.genContentMarshal(ObjectBinding.java: 
948)
     [bind] at  
org 
.jibx.binding.def.ElementWrapper.genContentMarshal(ElementWrapper.java: 
464)
     [bind] at  
org 
.jibx 
.binding 
.def.ComponentProperty.genContentMarshal(ComponentProperty.java:318)
     [bind] at  
org 
.jibx 
.binding 
.def.PassThroughComponent.genContentMarshal(PassThroughComponent.java: 
116)
     [bind] at  
org 
.jibx 
.binding.def.NestedCollection.genContentMarshal(NestedCollection.java: 
269)
     [bind] at  
org 
.jibx 
.binding.def.ObjectBinding.genMarshalContentCall(ObjectBinding.java:878)
     [bind] at  
org 
.jibx.binding.def.ObjectBinding.genContentMarshal(ObjectBinding.java: 
948)
     [bind] at  
org 
.jibx 
.binding 
.def.ComponentProperty.genContentMarshal(ComponentProperty.java:318)
     [bind] at  
org 
.jibx 
.binding.def.NestedStructure.genContentMarshal(NestedStructure.java:355)
     [bind] at  
org 
.jibx 
.binding.def.NestedStructure.genContentMarshal(NestedStructure.java:355)
     [bind] at  
org 
.jibx 
.binding.def.ObjectBinding.genMarshalContentCall(ObjectBinding.java:878)
     [bind] at  
org 
.jibx.binding.def.ObjectBinding.genContentMarshal(ObjectBinding.java: 
948)
     [bind] at  
org 
.jibx.binding.def.ElementWrapper.genContentMarshal(ElementWrapper.java: 
464)
     [bind] at  
org 
.jibx 
.binding 
.def 
.MappingDefinition 
.generateMarshalImplementation(MappingDefinition.java:797)
     [bind] at  
org 
.jibx 
.binding.def.MappingDefinition.generateCode(MappingDefinition.java:856)
     [bind] at  
org 
.jibx 
.binding.def.DefinitionContext.generateCode(DefinitionContext.java:669)
     [bind] at  
org 
.jibx 
.binding.def.BindingDefinition.generateCode(BindingDefinition.java:661)
     [bind] at org.jibx.binding.Compile.compile(Compile.java:305)
     [bind] at  
org.jibx.binding.ant.CompileTask.execute(CompileTask.java:248)
     [bind] at  
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
     [bind] at org.apache.tools.ant.Task.perform(Task.java:364)
     [bind] at org.apache.tools.ant.Target.execute(Target.java:341)
     [bind] at org.apache.tools.ant.Target.performTasks(Target.java:369)
     [bind] at  
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
     [bind] at org.apache.tools.ant.Project.executeTarget(Project.java: 
1185)
     [bind] at  
org 
.apache 
.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java: 
40)
     [bind] at  
org 
.eclipse 
.ant 
.internal 
.ui 
.antsupport 
.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
     [bind] at  
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
     [bind] at  
org 
.eclipse 
.ant 
.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java: 
423)
     [bind] at  
org 
.eclipse 
.ant 
.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java: 
137)


when i change the type of the getter/setter parameter/return value to  
Integer instead of int, everything works fine. so from the error  
message and from the workaround, i think jibx expects no primitives.  
if this is the case and this is something that cannot be changed, it  
should be stated in the documentation.

you may ask why we need setter and getter for an int value? well, of  
course we don't store the value in an int like in this example, we  
store it in a (very weird) data class that takes a primitive in its  
set method. so changing to field access won't help, because even a  
self-written serializer/deserializer won't help (accessing these data  
classes is very weird!).

br,
günther
-- 
Günther Wieser
creative-it
Guglgasse 6/1/11/1
A-1110 Wien
[EMAIL PROTECTED]
http://www.creative-it.com




-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to