This is an automated email from the ASF dual-hosted git repository. afs pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit d0bca10a8e7e9fc8d2565ecf2813ef07ed0d0ee0 Author: Andy Seaborne <[email protected]> AuthorDate: Sun Jul 26 10:35:37 2026 +0100 GH-4094: Allow execution timestamp to be set by query/update builders --- .../java/org/apache/jena/sparql/engine/QueryEngineBase.java | 2 +- .../java/org/apache/jena/sparql/exec/QueryExecDataset.java | 2 +- .../java/org/apache/jena/sparql/modify/UpdateEngineBase.java | 10 +++------- .../org/apache/jena/sparql/modify/UpdateProcessorBase.java | 2 +- .../jena/sparql/modify/UpdateProcessorStreamingBase.java | 10 +++++----- .../src/main/java/org/apache/jena/sparql/util/Context.java | 7 +++++++ 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryEngineBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryEngineBase.java index f9427eea7d..f60bf0e5ae 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryEngineBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/QueryEngineBase.java @@ -97,7 +97,7 @@ public abstract class QueryEngineBase implements OpEval, Closeable // so it can be changed after initialization. if ( context == null ) context = Context.setupContextForDataset(context, dataset); - Context.setCurrentDateTime(context); + Context.setCurrentDateTimeIfUndef(context); this.query = null; setOp(op); } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/exec/QueryExecDataset.java b/jena-arq/src/main/java/org/apache/jena/sparql/exec/QueryExecDataset.java index 430f6facd0..7c23f1b829 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/exec/QueryExecDataset.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/exec/QueryExecDataset.java @@ -114,7 +114,7 @@ public class QueryExecDataset implements QueryExec } private void init() { - Context.setCurrentDateTime(context); + Context.setCurrentDateTimeIfUndef(context); if ( query != null ) context.put(ARQConstants.sysCurrentQuery, query); } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineBase.java index 186690713d..33d67f58d4 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateEngineBase.java @@ -21,31 +21,27 @@ package org.apache.jena.sparql.modify; -import org.apache.jena.sparql.ARQConstants ; import org.apache.jena.sparql.core.DatasetGraph ; import org.apache.jena.sparql.util.Context ; -import org.apache.jena.sparql.util.NodeFactoryExtra ; public abstract class UpdateEngineBase implements UpdateEngine { protected final DatasetGraph datasetGraph ; protected final Context context ; - public UpdateEngineBase(DatasetGraph datasetGraph, Context context) - { + public UpdateEngineBase(DatasetGraph datasetGraph, Context context) { this.datasetGraph = datasetGraph ; this.context = setupContext(context, datasetGraph) ; } - private Context setupContext(Context cxt, DatasetGraph dataset) - { + private Context setupContext(Context cxt, DatasetGraph dataset) { // The following setup is effectively the same as in QueryEngineBase Context result = cxt; if ( result == null ) result = Context.setupContextForDataset(cxt, dataset); - result.set(ARQConstants.sysCurrentTime, NodeFactoryExtra.nowAsDateTime()) ; + Context.setCurrentDateTimeIfUndef(result); return result ; } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorBase.java index 3ff59cc2bb..7c9db09e9e 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorBase.java @@ -53,7 +53,7 @@ public class UpdateProcessorBase implements UpdateProcessor this.request = request ; this.datasetGraph = datasetGraph ; this.context = context; - Context.setCurrentDateTime(this.context) ; + Context.setCurrentDateTimeIfUndef(this.context) ; this.factory = factory ; this.timeout = timeout; Context.getOrSetCancelSignal(this.context) ; diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorStreamingBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorStreamingBase.java index 7bbf64a5cd..41b77826a6 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorStreamingBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/modify/UpdateProcessorStreamingBase.java @@ -26,8 +26,9 @@ import org.apache.jena.sparql.core.Prologue; import org.apache.jena.sparql.util.Context; import org.apache.jena.update.UpdateProcessorStreaming; -/** Class to hold the general state of a update request execution. - * See query ExecutionContext +/** + * Class to hold the general state of a update request execution. + * See query ExecutionContext */ public class UpdateProcessorStreamingBase implements UpdateProcessorStreaming { @@ -37,12 +38,11 @@ public class UpdateProcessorStreamingBase implements UpdateProcessorStreaming protected final UpdateEngine proc; protected final Prologue prologue; - public UpdateProcessorStreamingBase(DatasetGraph datasetGraph, Prologue prologue, Context context, UpdateEngineFactory factory) - { + public UpdateProcessorStreamingBase(DatasetGraph datasetGraph, Prologue prologue, Context context, UpdateEngineFactory factory) { this.datasetGraph = datasetGraph; this.prologue = prologue; this.context = context; - Context.setCurrentDateTime(this.context); + Context.setCurrentDateTimeIfUndef(this.context); proc = factory.create(datasetGraph, context); } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java index d497f04782..f75af215aa 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/Context.java @@ -445,10 +445,17 @@ public class Context { return context; } + /** Set the current time in the context, overwriting any previous setting */ public static void setCurrentDateTime(Context context) { context.set(ARQConstants.sysCurrentTime, NodeFactoryExtra.nowAsDateTime()); } + /** Set the current time in the context if there is no setting */ + public static void setCurrentDateTimeIfUndef(Context context) { + if ( ! context.isDefined(ARQConstants.sysCurrentTime) ) + setCurrentDateTime(context); + } + public static AtomicBoolean getCancelSignal(Context context) { if ( context == null ) return null;
