You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xmlbeans.apache.org by "J Blaufuss (JIRA)" <xm...@xml.apache.org> on 2007/08/27 21:07:31 UTC

[jira] Updated: (XMLBEANS-343) Using java.util.Calendar with XmlBeans properties causes Calendar object to be modified

     [ 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: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org