[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