[ http://jira.codehaus.org/browse/JIBX-105?page=all ] Dennis Sosnoski closed JIBX-105: --------------------------------
> Marshalling throws null value exception when value not null > ----------------------------------------------------------- > > Key: JIBX-105 > URL: http://jira.codehaus.org/browse/JIBX-105 > Project: JiBX > Type: Bug > Components: core > Versions: JiBX 1.1, JiBX 1.0.1 > Environment: blackdown-jdk-1.4.2.03 > Reporter: Nathan Egge > Assignee: Dennis Sosnoski > Attachments: jibx-test.tar.gz > > > I have a project where I have a Survey object that contains a Set of Locale > objects. These are managed by hibernate and the collection is lazy loaded. > I have the following binding definition: > <binding> > <mapping name="survey" class="model.Survey"> > <value name="name" field="name"/> > <collection name="locales" field="locales" > factory="model.Survey.hashSetFactory"> > <structure name="locale" type="model.Locale" pre-get="debug"> > <value name="language" field="language"/> > </structure> > </collection> > </mapping> > </binding> > I have a JUnit test that attempts to load the Survey object and serialize it > using JiBX. When it runs here is the output: > test-module: > [echo] Testing domain... > [mkdir] Created dir: /home/nathan/svn/jibx-test/build/test/data > [junit] DEBUG --- Locale.debug()V(27) | id=1 > [junit] DEBUG --- Locale.debug()V(28) | language=en > [junit] DEBUG --- Locale.debug()V(29) | country=null > [junit] DEBUG --- Locale.debug()V(30) | variant=null > [junit] DEBUG --- Locale.debug()V(31) | description=English > [junit] Testsuite: test.JibxTest > [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.531 sec > [junit] ------------- Standard Error ----------------- > [junit] org.jibx.runtime.JiBXException: null value for element "language" > from object of type model.Locale$$EnhancerByCGLIB$$9405c66f > [junit] at > org.jibx.runtime.impl.MarshallingContext.element(ILjava/lang/String;Ljava/lang/String;)Lorg/jibx/runtime/impl/MarshallingContext;(Unknown > Source) > [junit] at > model.Locale.JiBX_binding_marshal_2_0(Lorg/jibx/runtime/impl/MarshallingContext;)V(Locale.java:???) > [junit] at > model.JiBX_MungeAdapter.JiBX_binding_marshal_1_0(Ljava/util/Set;Lorg/jibx/runtime/impl/MarshallingContext;)V(:???) > [junit] at > model.Survey.JiBX_binding_marshal_2_0(Lorg/jibx/runtime/impl/MarshallingContext;)V(Survey.java:???) > [junit] at > model.JiBX_bindingSurvey_access.marshal(Ljava/lang/Object;Lorg/jibx/runtime/IMarshallingContext;)V(:???) > [junit] at > model.Survey.marshal(Lorg/jibx/runtime/IMarshallingContext;)V(Survey.java:???) > [junit] at > org.jibx.runtime.impl.MarshallingContext.marshalRoot(Ljava/lang/Object;)V(Unknown > Source) > [junit] at > org.jibx.runtime.impl.MarshallingContext.marshalDocument(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Boolean;Ljava/io/OutputStream;)V(Unknown > Source) > [junit] at test.JibxTest.testJibx()V(JibxTest.java:27) > [junit] at > jrockit.reflect.NativeMethodInvoker.invoke0(Ljava/lang/Object;ILjava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown > Source) > [junit] at > jrockit.reflect.NativeMethodInvoker.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown > Source) > [junit] at > jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown > Source) > [junit] at > java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;I)Ljava/lang/Object;(Unknown > Source) > [junit] at junit.framework.TestCase.runTest()V(TestCase.java:154) > [junit] at junit.framework.TestCase.runBare()V(TestCase.java:127) > [junit] at > junit.framework.TestResult$1.protect()V(TestResult.java:106) > [junit] at > junit.framework.TestResult.runProtected(Ljunit/framework/Test;Ljunit/framework/Protectable;)V(TestResult.java:124) > [junit] at > junit.framework.TestResult.run(Ljunit/framework/TestCase;)V(TestResult.java:109) > [junit] at > junit.framework.TestCase.run(Ljunit/framework/TestResult;)V(TestCase.java:118) > [junit] at > junit.framework.TestSuite.runTest(Ljunit/framework/Test;Ljunit/framework/TestResult;)V(TestSuite.java:208) > [junit] at > junit.framework.TestSuite.run(Ljunit/framework/TestResult;)V(TestSuite.java:203) > [junit] at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run()V(JUnitTestRunner.java:289) > [junit] at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(Lorg/apache/tools/ant/taskdefs/optional/junit/JUnitTest;ZZZZLjava/util/Properties;)I(JUnitTestRunner.java:656) > [junit] at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main([Ljava/lang/String;)V(JUnitTestRunner.java:558) > [junit] ------------- ---------------- --------------- > I'm not sure what exactly is going on, but when i disassembled the modified > Locale.class using Jad v1.5.8e, this is what the > model.Locale.JiBX_binding_marshal_2_0 method looked like: > public final void JiBX_binding_marshal_2_0(MarshallingContext arg1) > throws JiBXException > { > debug(); > arg1.pushObject(this); > arg1.element(0, "language", language); > arg1.popObject(); > return; > } > Somehow its printing out the fields of the Locale object, and then trying to > add the language field to the MarshallingContext and it becomes null before > the call to element(). > I have created a project that demonstrates this behavior. I will tar it up > and attach it.h -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------- All the advantages of Linux Managed Hosting--Without the Cost and Risk! Fully trained technicians. The highest number of Red Hat certifications in the hosting industry. Fanatical Support. Click to learn more http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642 _______________________________________________ jibx-devs mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jibx-devs
