Author: mrglavas
Date: Fri Jul 25 12:56:13 2008
New Revision: 679889
URL: http://svn.apache.org/viewvc?rev=679889&view=rev
Log:
Fixing JIRA Issue #1323:
http://issues.apache.org/jira/browse/XERCESJ-1323
The conversion from XSDateTime to XMLGregorianCalendar was incorrect
for fractional seconds and timezone. Should be fixed now.
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DayDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDayDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TimeDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearDV.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearMonthDV.java
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
Fri Jul 25 12:56:13 2008
@@ -17,6 +17,8 @@
package org.apache.xerces.impl.dv.xs;
+import java.math.BigDecimal;
+
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.Duration;
import javax.xml.datatype.XMLGregorianCalendar;
@@ -1082,8 +1084,23 @@
return null;
}
-
protected Duration getDuration(DateTimeData data) {
return null;
}
+
+ protected final BigDecimal getFractionalSecondsAsBigDecimal(DateTimeData
data) {
+ StringBuffer buf = new StringBuffer();
+ append3(buf, data.unNormSecond);
+ String value = buf.toString();
+ int index = value.indexOf('.');
+ if (index == -1) {
+ return null;
+ }
+ value = value.substring(value.indexOf('.'));
+ BigDecimal _val = new BigDecimal(value);
+ if (_val.compareTo(BigDecimal.valueOf(0)) == 0) {
+ return null;
+ }
+ return _val;
+ }
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateDV.java
Fri Jul 25 12:56:13 2008
@@ -83,8 +83,10 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return factory.newXMLGregorianCalendar(date.unNormYear,
date.unNormMonth, date.unNormDay
- , DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.timezoneHr * 60 + date.timezoneMin);
+ return factory.newXMLGregorianCalendar(date.unNormYear,
date.unNormMonth,
+ date.unNormDay, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ date.hasTimeZone() ? (date.timezoneHr * 60 + date.timezoneMin)
: DatatypeConstants.FIELD_UNDEFINED);
}
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DateTimeDV.java
Fri Jul 25 12:56:13 2008
@@ -17,9 +17,9 @@
package org.apache.xerces.impl.dv.xs;
-import java.math.BigDecimal;
import java.math.BigInteger;
+import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.XMLGregorianCalendar;
import org.apache.xerces.impl.dv.InvalidDatatypeValueException;
@@ -85,7 +85,9 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return
factory.newXMLGregorianCalendar(BigInteger.valueOf(date.unNormYear),
date.unNormMonth, date.unNormDay
- , date.unNormHour, date.unNormMinute, (int)date.unNormSecond,
date.unNormSecond != 0?new BigDecimal(date.unNormSecond -
((int)date.unNormSecond)):null, date.timezoneHr * 60 + date.timezoneMin);
+ return
factory.newXMLGregorianCalendar(BigInteger.valueOf(date.unNormYear),
date.unNormMonth,
+ date.unNormDay, date.unNormHour, date.unNormMinute,
+ (int)date.unNormSecond, date.unNormSecond != 0 ?
getFractionalSecondsAsBigDecimal(date) : null,
+ date.hasTimeZone() ? (date.timezoneHr * 60 + date.timezoneMin)
: DatatypeConstants.FIELD_UNDEFINED);
}
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DayDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DayDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DayDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/DayDV.java
Fri Jul 25 12:56:13 2008
@@ -107,8 +107,10 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return
factory.newXMLGregorianCalendar(DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.unNormDay
- , DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.timezoneHr * 60 + date.timezoneMin);
+ return
factory.newXMLGregorianCalendar(DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ date.unNormDay, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ date.hasTimeZone() ? date.timezoneHr * 60 + date.timezoneMin :
DatatypeConstants.FIELD_UNDEFINED);
}
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDV.java
Fri Jul 25 12:56:13 2008
@@ -157,7 +157,9 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return
factory.newXMLGregorianCalendar(DatatypeConstants.FIELD_UNDEFINED,
date.unNormMonth, DatatypeConstants.FIELD_UNDEFINED
- , DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.timezoneHr * 60 + date.timezoneMin);
+ return
factory.newXMLGregorianCalendar(DatatypeConstants.FIELD_UNDEFINED,
date.unNormMonth,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ date.hasTimeZone() ? date.timezoneHr * 60 + date.timezoneMin :
DatatypeConstants.FIELD_UNDEFINED);
}
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDayDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDayDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDayDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/MonthDayDV.java
Fri Jul 25 12:56:13 2008
@@ -120,8 +120,10 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return
factory.newXMLGregorianCalendar(DatatypeConstants.FIELD_UNDEFINED,
date.unNormMonth, date.unNormDay
- , DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.timezoneHr * 60 + date.timezoneMin);
+ return
factory.newXMLGregorianCalendar(DatatypeConstants.FIELD_UNDEFINED,
date.unNormMonth, date.unNormDay,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ date.hasTimeZone() ? date.timezoneHr * 60 + date.timezoneMin :
DatatypeConstants.FIELD_UNDEFINED);
}
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TimeDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TimeDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TimeDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/TimeDV.java
Fri Jul 25 12:56:13 2008
@@ -17,8 +17,6 @@
package org.apache.xerces.impl.dv.xs;
-import java.math.BigDecimal;
-
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.XMLGregorianCalendar;
@@ -104,7 +102,9 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return factory.newXMLGregorianCalendar(null
- , DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.unNormHour, date.unNormMinute,
(int)date.unNormSecond, date.unNormSecond != 0?new BigDecimal(date.unNormSecond
- ((int)date.unNormSecond)):null, date.timezoneHr * 60 + date.timezoneMin);
+ return factory.newXMLGregorianCalendar(null,
DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED, date.unNormHour,
date.unNormMinute,
+ (int)date.unNormSecond, date.unNormSecond != 0 ?
getFractionalSecondsAsBigDecimal(date) : null,
+ date.hasTimeZone() ? (date.timezoneHr * 60 + date.timezoneMin)
: DatatypeConstants.FIELD_UNDEFINED);
}
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearDV.java
Fri Jul 25 12:56:13 2008
@@ -116,8 +116,10 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return factory.newXMLGregorianCalendar(date.unNormYear,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED
- , DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.timezoneHr * 60 + date.timezoneMin);
+ return factory.newXMLGregorianCalendar(date.unNormYear,
DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ date.hasTimeZone() ? date.timezoneHr * 60 + date.timezoneMin :
DatatypeConstants.FIELD_UNDEFINED);
}
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearMonthDV.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearMonthDV.java?rev=679889&r1=679888&r2=679889&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearMonthDV.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/xs/YearMonthDV.java
Fri Jul 25 12:56:13 2008
@@ -90,8 +90,10 @@
}
protected XMLGregorianCalendar getXMLGregorianCalendar(DateTimeData date) {
- return factory.newXMLGregorianCalendar(date.unNormYear,
date.unNormMonth, DatatypeConstants.FIELD_UNDEFINED
- , DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED, date.timezoneHr * 60 + date.timezoneMin);
+ return factory.newXMLGregorianCalendar(date.unNormYear,
date.unNormMonth, DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ DatatypeConstants.FIELD_UNDEFINED,
DatatypeConstants.FIELD_UNDEFINED,
+ date.hasTimeZone() ? date.timezoneHr * 60 + date.timezoneMin :
DatatypeConstants.FIELD_UNDEFINED);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]