You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2023/01/13 22:46:27 UTC
[jena] branch main updated: GH-1713: Use ARQ timezone for adjust.
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/main by this push:
new 8cfb1c2e18 GH-1713: Use ARQ timezone for adjust.
new ff2a302369 Merge pull request #1717 from afs/gh-1713
8cfb1c2e18 is described below
commit 8cfb1c2e1806256fcead3e9afbd1a5b52237bdac
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Fri Jan 13 17:45:20 2023 +0000
GH-1713: Use ARQ timezone for adjust.
---
.../jena/sparql/expr/nodevalue/XSDDuration.java | 2 +-
.../jena/sparql/expr/nodevalue/XSDFuncOp.java | 12 ---------
.../org/apache/jena/sparql/expr/TestFunctions.java | 4 ++-
.../library/TestFnFunctionsDateTimeDuration.java | 29 ++++++++--------------
4 files changed, 15 insertions(+), 32 deletions(-)
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDDuration.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDDuration.java
index 088e149edd..9b58264ea0 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDDuration.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDDuration.java
@@ -26,7 +26,7 @@ import org.apache.jena.sparql.expr.Expr;
import javax.xml.datatype.DatatypeConstants.Field;
/**
- * Functions relating to XSD durations (F&O 3.1), using
+ * Functions relating to XSD durations (F&O 3.1), using
* {@code javax.xml.datatype.Duration}
*/
public class XSDDuration {
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
index fa01d2a621..ce5c1d17a7 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
@@ -1676,19 +1676,7 @@ public class XSDFuncOp
// minutes are used for the timezone in XMLGregorianCalendar
private static final int implicitTimezoneMinutes() { return 0; }
- // Server-local timezone
- // private static NodeValue serverTimezone() {
- // }
- //
- // /**
- // * Calculate the server current local timezone in minutes
- // */
- // private static int localTimezoneOffsetMinutes() {
- // return TimeZone.getDefault().getOffset(new Date().getTime())/(1000*60);
- // }
-
/**
- *
* <a href="https://www.w3.org/TR/xpath-functions-3/#func-implicit-timezone">Implciit Timezone</a>
* // https://www.w3.org/TR/xpath-functions-3/#comp.datetime
*/
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java
index ced43a1f78..d25b9e7e98 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestFunctions.java
@@ -74,7 +74,9 @@ public class TestFunctions
@Test public void exprSprintf_21() { test_exprSprintf_tz_exact("2005-10-14T12:09:43+00:00") ; }
// Timezone +11:00 can be a day behind
@Test public void exprSprintf_22() { test_exprSprintf_tz_exact("2005-10-14T10:09:43+11:00") ; }
+
private static void test_exprSprintf_tz_exact(String nodeStr) {
+ // JVM default timezone.
String exprStr = "afn:sprintf('%1$tm %1$te,%1$tY', "+NodeValue.makeDateTime(nodeStr).toString()+")" ;
Expr expr = ExprUtils.parse(exprStr) ;
NodeValue r = expr.eval(null, LibTestExpr.createTest()) ;
@@ -89,7 +91,7 @@ public class TestFunctions
} catch (ParseException e) {
assertFalse("Cannot parse the input date string. Message:"+e.getMessage(),false);
}
- // print the date based on the current timeZone.
+ // print the date based on the JVM timezone.
SimpleDateFormat stdFormatOut = new SimpleDateFormat("MM dd,yyyy");
stdFormatOut.setTimeZone(TimeZone.getDefault());
String outDate = stdFormatOut.format(dtDate);
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctionsDateTimeDuration.java b/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctionsDateTimeDuration.java
index f26272ce41..3fb34e2dc9 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctionsDateTimeDuration.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/function/library/TestFnFunctionsDateTimeDuration.java
@@ -20,15 +20,13 @@ package org.apache.jena.sparql.function.library;
import static org.apache.jena.sparql.expr.LibTestExpr.test;
import static org.junit.Assert.fail;
-import java.util.Date;
-import java.util.TimeZone;
-
import org.apache.jena.datatypes.xsd.XSDDatatype;
import org.apache.jena.query.ARQ;
import org.apache.jena.sparql.expr.Expr;
import org.apache.jena.sparql.expr.ExprEvalException;
import org.apache.jena.sparql.expr.LibTestExpr;
import org.apache.jena.sparql.expr.NodeValue;
+import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp;
import org.apache.jena.sparql.util.ExprUtils;
import org.apache.jena.sys.JenaSystem ;
import org.junit.Test ;
@@ -142,13 +140,13 @@ public class TestFnFunctionsDateTimeDuration {
@Test public void exprAdjustDatetimeToTz_01(){
test(
"fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime)",
- "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime,"+getTimezoneDurationString()+")");
}
@Test public void exprAdjustDatetimeToTz_02(){
test(
"fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime)",
- "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ "fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00-07:00'^^xsd:dateTime,"+getTimezoneDurationString()+")");
}
@Test public void exprAdjustDatetimeToTz_03() { test("fn:adjust-dateTime-to-timezone('2002-03-07T10:00:00'^^xsd:dateTime,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeDateTime("2002-03-07T10:00:00-10:00"));}
@@ -166,13 +164,13 @@ public class TestFnFunctionsDateTimeDuration {
@Test public void exprAdjustDateToTz_01(){
test(
"fn:adjust-date-to-timezone('2002-03-07'^^xsd:date)",
- "fn:adjust-date-to-timezone('2002-03-07'^^xsd:date,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ "fn:adjust-date-to-timezone('2002-03-07'^^xsd:date,"+getTimezoneDurationString()+")");
}
@Test public void exprAdjustDateToTz_02(){
test(
"fn:adjust-date-to-timezone('2002-03-07-07:00'^^xsd:date)",
- "fn:adjust-date-to-timezone('2002-03-07-07:00'^^xsd:date,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ "fn:adjust-date-to-timezone('2002-03-07-07:00'^^xsd:date,"+getTimezoneDurationString()+")");
}
@Test public void exprAdjustDateToTz_03() { test("fn:adjust-date-to-timezone('2002-03-07'^^xsd:date,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeDate("2002-03-07-10:00"));}
@@ -186,13 +184,13 @@ public class TestFnFunctionsDateTimeDuration {
@Test public void exprAdjustTimeToTz_01(){
test(
"fn:adjust-time-to-timezone('10:00:00'^^xsd:time)",
- "fn:adjust-time-to-timezone('10:00:00'^^xsd:time,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ "fn:adjust-time-to-timezone('10:00:00'^^xsd:time,"+getTimezoneDurationString()+")");
}
@Test public void exprAdjustTimeToTz_02(){
test(
"fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time)",
- "fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time,'"+getDynamicDurationString()+"'^^xsd:dayTimeDuration)");
+ "fn:adjust-time-to-timezone('10:00:00-07:00'^^xsd:time,"+getTimezoneDurationString()+")");
}
@Test public void exprAdjustTimeToTz_03() { test("fn:adjust-time-to-timezone('10:00:00'^^xsd:time,'-PT10H'^^xsd:dayTimeDuration)",NodeValue.makeNode("10:00:00-10:00",XSDDatatype.XSDtime));}
@@ -208,14 +206,9 @@ public class TestFnFunctionsDateTimeDuration {
@Test public void localTimezone_1() { test("fn:implicit-timezone()", nv->nv.isDayTimeDuration()); }
- private String getDynamicDurationString(){
- int tzOffset = TimeZone.getDefault().getOffset(new Date().getTime()) / (1000*60);
- String off = "PT"+Math.abs(tzOffset)+"M";
- if(tzOffset < 0)
- off = "-"+off;
- return off;
+ /** Return syntax for the timezone as a day-time duration */
+ private String getTimezoneDurationString(){
+ // Timezone for ARQ is not the JVM timezone.
+ return XSDFuncOp.implicitTimezone().asQuotedString();
}
-
-
-
}