Hi there,

any ideas for the issue? Should I file a bug? Or should I attach a POC
source package?

Cheers,
Sven

> Hi,
>
> I've generated data classes based on a predefined xsd. One of the
> types defines a choice of various base types. So far so good. But If
> the data type is a atomar java data type (int, long, byte etc) and the
> value is '0', the xml element created while serialization remains empty.
>
> <value />
> instead of
> <value><integer>0</integer><value>
>
> The generator created a choice class wrapping the types like:
>
> public class TYPEValue {
>     private Choice choice;
>     public get/setChoice(...);
>
>     public static class Choice {
>         private int choiceSelect = -1;
>         private static final int LONG_CHOICE = 0;
>         private static final int INTEGER_CHOICE = 1;
>         ...
>         private static final int UTF8_STRING_CHOICE = 12;
>
>         private long _long;
>         private int _integer;
>         ...
>         private String UTF8String;
>         public boolean ifInteger() {
>             return  choiceSelect ==  INTEGER_CHOICE;
>         }
>        
>         public void setInteger(int _integer) {
>             setChoiceSelect(INTEGER_CHOICE);
>             this._integer = _integer;
>         }
>        
>     }
> }
>
> Unfortunately will be neither the choice nor the value serialized, if
> the atomar java types (int, long, byte, short etc) '0'.
>
> TYPEValue type = new TYPEValue();
> TYPEValue.Choice choice = new TYPEValue.Choice();
> choice.setInteger(0);
> type.setChoice(choice);
>
> will be serialized as
> <parent>
>     ...
>     <value />
> </parent>
>
> where choice.setInteger(1);will be serialized as
> <parent>
>     ...
>     <value>
>         <integer>1</integer>
>     </value>
> </parent>
>
> With the consequence, that the deserialization loses the choice
> information too. That means the choice member of the TYPEValue object
> stays null - what makes sense from the xml information set.
>
>
> I tried to override the empty element by using own
> serializer/deserializer, without success - the xml element remains
> without choice and int value. So I decompiled the - by the binding
> compiler created class TYPEValue$Choice. Surprise:
> public static void JiBX_binding_marshal_1_0(ext arg1,
> MarshallingContext arg2) throws JiBXException {
>             arg2.pushObject(arg1);
>             arg2;
>             ...
>
>             if(!arg1.ifInteger()) goto _L4; else goto _L3
> _L3:
>             3;
>             "integer";
>             int i = arg1.getInteger();
>             i;
>             _*if(i != 0) goto _L6; else goto _L5*_
> _L5:
>             JVM INSTR pop ;
>             JVM INSTR pop ;
>             JVM INSTR pop ;
>               goto _L4
> _L6:
>             JiBXConverter.writeInt(); // my customized serializer
>             element();
> _L4:
>             ....
>
> The choice value will be inspected and skipped explicit for atomar
> java data types. May I override this behaviour? Is this a bug?
>
> Thanks in advance
> Sven
>
>
> ------------------------------------------------------------------------------
>
>
> _______________________________________________
> jibx-users mailing list
> jibx-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jibx-users

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to