[ http://jira.codehaus.org/browse/JIBX-105?page=all ]

Dennis Sosnoski reassigned JIBX-105:
------------------------------------

    Assign To: Dennis Sosnoski

> 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



-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
jibx-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-devs

Reply via email to