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

  • From: "mdarwin (JIRA)" <jira-no-reply@...>
  • To: issues@...
  • Subject: [JIRA] Commented: (JAXB-927) optionalProperty="primitive" does not work
  • Date: Fri, 6 Dec 2013 09:43: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 commented on JAXB-927:
------------------------------

Hi archenroot, yes I suppose that's exactly it - I personally don't mind if 
the returned type is Boolean and we rely on auto-unboxing, but it must never 
return a null.


It doesn't matter to me whether it's done inside jaxb or in the generated 
class.  Just as long as the myBoolean method guarantees to never return 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] Commented: (JAXB-927) optionalProperty="primitive" does not work

mdarwin (JIRA) 12/06/2013
Terms of Use; Privacy Policy; Copyright ©2013-2015 (revision 20150626.29986a4)
 
 
Close
loading
Please Confirm
Close