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]

Reply via email to