[prev in list] [next in list] [prev in thread] [next in thread]
List: xmlbeans-dev
Subject: [jira] Created: (XMLBEANS-343) Using java.util.Calendar with
From: "J Blaufuss (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date: 2007-08-27 19:01:44
Message-ID: 19824803.1188241304344.JavaMail.jira () brutus
[Download RAW message or body]
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
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: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic