[ 
https://issues.apache.org/jira/browse/XMLBEANS-343?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

J Blaufuss updated XMLBEANS-343:
--------------------------------

    Attachment: dateElementSchema.xsd

Schema for bug example

> Using java.util.Calendar with XmlBeans properties causes Calendar object to 
> be modified
> ---------------------------------------------------------------------------------------
>
>                 Key: XMLBEANS-343
>                 URL: https://issues.apache.org/jira/browse/XMLBEANS-343
>             Project: XMLBeans
>          Issue Type: Bug
>    Affects Versions:  Version 2.3
>         Environment: Apache XmlBeans version 2.3.0-r540734
> J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20060504 (JIT enabled)
> J9VM - 20060501_06428_lHdSMR
> JIT  - 20060428_1800_r8
> GC   - 20060501_AA
>            Reporter: J Blaufuss
>            Priority: Minor
>         Attachments: dateElementSchema.xsd
>
>
> A java.util.Calendar object is modified after being passed to a XmlBeans 
> object setter method.  Specifically, if a field is cleared on the Calendar 
> before being passed in, it may be uncleared by the setter.  I believe this 
> behavior is incorrect, as my expectation is that XmlBeans will not tamper 
> with the data that it's given.  For an example, see below.
> The effect of this is if your schema specifies an element with type xs:date, 
> but for whatever reason you cannot or do not want to have the time zone 
> appear in your xml, you have to explicitly clear the ZONE_OFFSET field on the 
> calendar *each time* before you use it to set an XmlBean object property.  
> Otherwise, the second time you use a calendar to set a date it will appear 
> with a timezone in your xml.
> **** schema for the example bean ****
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> elementFormDefault="qualified" attributeFormDefault="unqualified">
>       <xs:element name="date" type="xs:date"/>
> </xs:schema>
> **** example code ****
> package test;
> import java.util.Calendar;
> import noNamespace.DateDocument;
> public class Test2
> {
>       public static void main(String args[])
>       {
>               // create a new calendar
>               Calendar calendar = Calendar.getInstance();
>               calendar.set(Calendar.YEAR, 1844);
>               calendar.set(Calendar.MONTH, Calendar.JANUARY);
>               calendar.set(Calendar.DAY_OF_MONTH, 1);
>               
>               // clear time zone from calendar
>               calendar.clear(Calendar.ZONE_OFFSET);
>               
>               // store the before status of the ZONE_OFFSET field
>               // before == false
>               boolean before = calendar.isSet(Calendar.ZONE_OFFSET);
>               
>               // create bean & set a element with type xs:date with calendar
>               DateDocument dateDoc = DateDocument.Factory.newInstance();
>               dateDoc.setDate(calendar);
>               
>               // store the after status of the ZONE_OFFSET field
>               // I expect both before & after to equal false,
>               // but after == true in this case
>               boolean after = calendar.isSet(Calendar.ZONE_OFFSET);
>               
>               if (before != after)
>               {
>                       System.out
>                                       .println("Change detected in 
> ZONE_OFFSET field: before:"
>                                                       + before + " after:" + 
> after);
>               }
>               else
>               {
>                       System.out.println("No change detected.");
>               }
>       }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to