Author: fanningpj
Date: Thu Jan 6 21:27:52 2022
New Revision: 1896768
URL: http://svn.apache.org/viewvc?rev=1896768&view=rev
Log:
[XMLBEANS-588] try to fix issues with xpath and date/times
Modified:
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java
xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java
Modified:
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java
URL:
http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java?rev=1896768&r1=1896767&r2=1896768&view=diff
==============================================================================
---
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java
(original)
+++
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPath.java
Thu Jan 6 21:27:52 2022
@@ -22,6 +22,8 @@ import net.sf.saxon.om.NodeInfo;
import net.sf.saxon.om.SequenceTool;
import net.sf.saxon.sxpath.*;
import net.sf.saxon.tree.wrapper.VirtualNode;
+import net.sf.saxon.value.DateTimeValue;
+import net.sf.saxon.value.GDateValue;
import org.apache.xmlbeans.XmlOptions;
import org.apache.xmlbeans.impl.store.Cur;
import org.apache.xmlbeans.impl.xpath.Path;
@@ -115,6 +117,10 @@ public class SaxonXPath implements Path
retNodes.add(n);
} else if (o instanceof NodeInfo) {
retNodes.add(o.getStringValue());
+ } else if (o instanceof GDateValue) {
+ retNodes.add(o);
+ } else if (o instanceof DateTimeValue) {
+ retNodes.add(o);
} else {
retNodes.add(SequenceTool.convertToJava(o));
}
Modified:
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java
URL:
http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java?rev=1896768&r1=1896767&r2=1896768&view=diff
==============================================================================
---
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java
(original)
+++
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/xpath/saxon/SaxonXPathEngine.java
Thu Jan 6 21:27:52 2022
@@ -15,6 +15,8 @@
package org.apache.xmlbeans.impl.xpath.saxon;
+import net.sf.saxon.value.DateTimeValue;
+import net.sf.saxon.value.GDateValue;
import org.apache.xmlbeans.*;
import org.apache.xmlbeans.impl.store.Cur;
import org.apache.xmlbeans.impl.store.DomImpl;
@@ -69,6 +71,8 @@ public class SaxonXPathEngine extends XP
String value;
if (obj instanceof Date) {
value = xmlDateFormat.format((Date) obj);
+ } else if (obj instanceof GDateValue) {
+ value = ((GDateValue) obj).getStringValue();
} else if (obj instanceof BigDecimal) {
value = ((BigDecimal) obj).toPlainString();
} else {
@@ -119,8 +123,10 @@ public class SaxonXPathEngine extends XP
type = XmlBoolean.type;
} else if (node instanceof String) {
type = XmlString.type;
- } else if (node instanceof Date) {
+ } else if (node instanceof GDateValue) {
type = XmlDate.type;
+ } else if (node instanceof DateTimeValue) {
+ type = XmlDateTime.type;
} else {
type = XmlAnySimpleType.type;
}
Modified:
xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java
URL:
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java?rev=1896768&r1=1896767&r2=1896768&view=diff
==============================================================================
---
xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java
(original)
+++
xmlbeans/trunk/src/test/java/xmlcursor/xpath/complex/detailed/TypesTest.java
Thu Jan 6 21:27:52 2022
@@ -18,7 +18,6 @@ import org.apache.xmlbeans.*;
import org.junit.Before;
import org.junit.Test;
-import java.time.OffsetDateTime;
import java.util.Calendar;
import static org.junit.Assert.assertEquals;
@@ -36,36 +35,22 @@ public class TypesTest {
@Test
public void testDate() {
- boolean negativeOffset =
OffsetDateTime.now().getOffset().getTotalSeconds() < 0;
res = o.selectPath("xs:date(\"2000-01-01\")");
assertEquals(1, res.length);
Calendar d = ((XmlDate) res[0]).getCalendarValue();
- if (negativeOffset) {
- assertEquals(1999, d.get(Calendar.YEAR));
- assertEquals(11, d.get(Calendar.MONTH));
- assertEquals(31, d.get(Calendar.DAY_OF_MONTH));
- } else {
- assertEquals(2000, d.get(Calendar.YEAR));
- assertEquals(0, d.get(Calendar.MONTH));
- assertEquals(1, d.get(Calendar.DAY_OF_MONTH));
- }
+ assertEquals(2000, d.get(Calendar.YEAR));
+ assertEquals(0, d.get(Calendar.MONTH));
+ assertEquals(1, d.get(Calendar.DAY_OF_MONTH));
}
@Test
public void testZDate() {
- boolean negativeOffset =
OffsetDateTime.now().getOffset().getTotalSeconds() < 0;
res = o.selectPath("xs:date(\"2000-01-01Z\")");
assertEquals(1, res.length);
Calendar d = ((XmlDate) res[0]).getCalendarValue();
- if (negativeOffset) {
- assertEquals(1999, d.get(Calendar.YEAR));
- assertEquals(11, d.get(Calendar.MONTH));
- assertEquals(31, d.get(Calendar.DAY_OF_MONTH));
- } else {
- assertEquals(2000, d.get(Calendar.YEAR));
- assertEquals(0, d.get(Calendar.MONTH));
- assertEquals(1, d.get(Calendar.DAY_OF_MONTH));
- }
+ assertEquals(2000, d.get(Calendar.YEAR));
+ assertEquals(0, d.get(Calendar.MONTH));
+ assertEquals(1, d.get(Calendar.DAY_OF_MONTH));
}
@Test
@@ -145,7 +130,7 @@ public class TypesTest {
res = o.selectPath("current-dateTime()");
assertEquals(1, res.length);
System.out.println(res[0].schemaType());
- XmlDate dt = ((XmlDate) res[0]);
+ XmlDateTime dt = ((XmlDateTime) res[0]);
System.out.println(dt.xmlText());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]