[JIRA] Issue Comment Edited: (JAXB-927) optionalProperty="primitive" does not work

  • From: "mdarwin (JIRA)" <jira-no-reply@...>
  • To: issues@...
  • Subject: [JIRA] Issue Comment Edited: (JAXB-927) optionalProperty="primitive" does not work
  • Date: Fri, 6 Dec 2013 09:50:49 +0000 (UTC)
  • Auto-submitted: auto-generated


    [ 
https://java.net/jira/browse/JAXB-927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=371369#action_371369
 ] 

mdarwin edited comment on JAXB-927 at 12/6/13 9:49 AM:
-------------------------------------------------------

Hi archenroot,

Strictly speaking, to conform to the spec, the generated class should return 
boolean not Boolean (when the optionalProperty flag is set to primitive).

However, if the returned type is Boolean, that would work for me.  We can 
rely on auto-unboxing, but it must *never return a null* (obviously).

It doesn't matter to me whether it's done inside jaxb or in the generated 
class.  Just as long as the myBoolean method either returns boolean, or 
return Boolean and guarantees that it will _never_ be null.



      was (Author: mdarwin):
    Hi archenroot,

Strictly speaking, to conform to the spec, the generated class should return 
boolean not Boolean (when the optionalProperty flag is set to primitive).

However, if the returned type is Boolean, that would work for me.  We can 
rely on auto-unboxing, but it must never return a null (obviously).

It doesn't matter to me whether it's done inside jaxb or in the generated 
class.  Just as long as the myBoolean method either returns boolean, or 
return Boolean and guarantees that it will never be null.


  
> optionalProperty="primitive" does not work
> ------------------------------------------
>
>                 Key: JAXB-927
>                 URL: https://java.net/jira/browse/JAXB-927
>             Project: jaxb
>          Issue Type: Bug
>          Components: xjc
>    Affects Versions: 2.2.6
>         Environment: Platform: All
> OS: All
>            Reporter: mdarwin
>            Assignee: Martin Grebac
>
> When an xsd defines an optional boolean field, if the optionalProperty 
> attribute is set to "primitive", it should bind as it did in 1.0, according 
> to the spec, but it doesn't.
> For example, given the following xsd:
> {code:xml}
> <xs:element name="usage-auth-rate-charge">
>     <xs:complexType>
>         <xs:sequence>
>             <xs:element name="service-id" type="xs:string"/>
>             <xs:element name="pricepoint_custom_fields_required" 
> type="xs:boolean" minOccurs="0"/>
>         </xs:sequence>
>     </xs:complexType>
> </xs:element>
> {code}
> and specifying optionalProperty="primitive" in the binding xml, the 
> generated class looks like this:
> {code:java}
> public class UsageAuthRateCharge {
> ........
> public Boolean isPricepointCustomFieldsRequired() {
>     return pricepointCustomFieldsRequired;
> }
> {code}
> this method returns Boolean, not boolean as per the spec.
> The problem is that although boxing will work, if the supplied xml doesn't 
> contain a value for pricepoint_custom_fields_required, the class's Boolean 
> field is null, instead of false. So a NullPointerException will be seen 
> when doing something like this:
> {code:java}methodWhichTakesPrimitiveBooleanArg(myUsageAuthRateChargeInstance.isPricepointCustomFieldsRequired());{code}
> In the spec, it says the following:
> ??optionalProperty controls how a JAXB property with a primitive base type 
> that represents an optional non-nillable element/attribute is bound. If the 
> attribute has the value "wrapper", then the base type of the JAXB property 
> is the wrapper class for the primitive type. A user can indicate that this 
> optional property is not set by calling the setter with "null" value. If 
> the attribute's value is "primitive", it binds as it did in JAXB 1.0. If 
> the attribute's value is "isSet", it binds the optional property using the 
> primitive base type and also the isSet/unset methods are generated for the 
> optional property. The attribute's default value is "wrapper".??
> If you bind the above xml with jaxb1.0, you get generated objects with a 
> method getDisplay() which returns boolean (primitive).
> If you use jaxb 2.0 with optionalProperty set to "primitive" you should get 
> *exactly the same thing* - that's what the spec says.
> In JAXB 1.0, if minOccurs="0", and the xsd contains no default value for 
> the boolean, booleans are set to false by default. 
> NB This is a duplicate of 926 which was raised against an older version of 
> the code.  *This bug affects 2.2.6*.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://java.net/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


[JIRA] Issue Comment Edited: (JAXB-927) optionalProperty="primitive" does not work

mdarwin (JIRA) 12/06/2013

<Possible follow-up(s)>

[JIRA] Issue Comment Edited: (JAXB-927) optionalProperty="primitive" does not work

mdarwin (JIRA) 12/06/2013

[JIRA] Issue Comment Edited: (JAXB-927) optionalProperty="primitive" does not work

mdarwin (JIRA) 12/06/2013

[JIRA] Issue Comment Edited: (JAXB-927) optionalProperty="primitive" does not work

mdarwin (JIRA) 12/06/2013
Terms of Use; Privacy Policy; Copyright ©2013-2014 (revision 20140418.2d69abc)
 
 
Close
loading
Please Confirm
Close