Author: sallen
Date: Tue Feb 5 00:44:58 2013
New Revision: 1442446
URL: http://svn.apache.org/viewvc?rev=1442446&view=rev
Log:
Further refinements to the streaming update capabilities.
Removed:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineStreaming.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreBasic.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreNull.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreWrapper.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngine.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineRegistry.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateSink.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/GraphStore.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/store/DatasetStoreGraph.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
(original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/ARQConstants.java
Tue Feb 5 00:44:58 2013
@@ -186,9 +186,6 @@ public class ARQConstants
*/
public static final Symbol sysCurrentQuery =
Symbol.create(systemVarNS+"query") ;
- /** Context key for the update request for the current update execution */
- public static final Symbol sysCurrentUpdateRequest =
Symbol.create(systemVarNS+"updateRequest") ;
-
/** Context key for the OpExecutor to be used */
public static final Symbol sysOpExecutorFactory =
Symbol.create(systemVarNS+"opExecutorFactory") ;
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreBasic.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreBasic.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreBasic.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreBasic.java
Tue Feb 5 00:44:58 2013
@@ -23,7 +23,6 @@ import com.hp.hpl.jena.query.DatasetFact
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
import com.hp.hpl.jena.sparql.core.DatasetGraphWrapper ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
public class GraphStoreBasic extends DatasetGraphWrapper implements GraphStore
{
@@ -44,11 +43,11 @@ public class GraphStoreBasic extends Dat
}
@Override
- public void startRequest(UpdateRequest request)
+ public void startRequest()
{}
@Override
- public void finishRequest(UpdateRequest request)
+ public void finishRequest()
{}
@Override
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreNull.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreNull.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreNull.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreNull.java
Tue Feb 5 00:44:58 2013
@@ -32,7 +32,6 @@ import com.hp.hpl.jena.query.DatasetFact
import com.hp.hpl.jena.sparql.core.DatasetGraphQuad ;
import com.hp.hpl.jena.sparql.core.Quad ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
import com.hp.hpl.jena.util.iterator.ExtendedIterator ;
import com.hp.hpl.jena.util.iterator.NullIterator ;
@@ -90,10 +89,10 @@ public class GraphStoreNull extends Data
}
@Override
- public void startRequest(UpdateRequest request)
+ public void startRequest()
{ }
@Override
- public void finishRequest(UpdateRequest request)
+ public void finishRequest()
{ }
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreWrapper.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreWrapper.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreWrapper.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/GraphStoreWrapper.java
Tue Feb 5 00:44:58 2013
@@ -21,7 +21,6 @@ package com.hp.hpl.jena.sparql.modify;
import com.hp.hpl.jena.query.Dataset ;
import com.hp.hpl.jena.sparql.core.DatasetGraphWrapper ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
public class GraphStoreWrapper extends DatasetGraphWrapper implements
GraphStore
{
@@ -38,11 +37,11 @@ public class GraphStoreWrapper extends D
{ return graphStore.toDataset() ; }
@Override
- public void startRequest(UpdateRequest request)
- { graphStore.startRequest(request) ; }
+ public void startRequest()
+ { graphStore.startRequest() ; }
@Override
- public void finishRequest(UpdateRequest request)
- { graphStore.finishRequest(request) ; }
+ public void finishRequest()
+ { graphStore.finishRequest() ; }
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngine.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngine.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngine.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngine.java
Tue Feb 5 00:44:58 2013
@@ -1,24 +1,40 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.hp.hpl.jena.sparql.modify;
-
-public interface UpdateEngine
-{
- public void execute() ;
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hp.hpl.jena.sparql.modify;
+
+/**
+ * An UpdateEngine provides an interface to execute a SPARQL update request.
+ */
+public interface UpdateEngine
+{
+ /**
+ * Signal start of a request being executed
+ */
+ public void startRequest();
+
+ /**
+ * Signal end of a request being executed
+ */
+ public void finishRequest();
+
+ /**
+ * Returns an {@linkplain UpdateSink} that accepts Update operations
+ */
+ public UpdateSink getUpdateSink();
+}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineBase.java
Tue Feb 5 00:44:58 2013
@@ -28,33 +28,13 @@ import com.hp.hpl.jena.sparql.engine.bin
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.sparql.util.NodeFactory ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
-public abstract class UpdateEngineBase implements UpdateEngine,
UpdateEngineStreaming
+public abstract class UpdateEngineBase implements UpdateEngine
{
protected final GraphStore graphStore ;
protected final Context context ;
protected final Binding startBinding ;
- protected final UpdateRequest request ;
- public UpdateEngineBase(GraphStore graphStore,
- UpdateRequest request,
- Binding input,
- Context context)
- {
- this.graphStore = graphStore ;
- this.request = request ;
- this.context = setupContext(context, graphStore) ;
-
- if ( input == null )
- {
- Log.warn(this, "Null initial input") ;
- input = BindingRoot.create() ;
- }
- this.startBinding = input ;
- this.context.put(ARQConstants.sysCurrentUpdateRequest, request) ;
- }
-
public UpdateEngineBase(GraphStore graphStore,
Binding input,
Context context)
@@ -68,7 +48,6 @@ public abstract class UpdateEngineBase i
input = BindingRoot.create() ;
}
this.startBinding = input ;
- this.request = null;
}
// Put any
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineFactory.java
Tue Feb 5 00:44:58 2013
@@ -21,24 +21,15 @@ package com.hp.hpl.jena.sparql.modify;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
/**
* Interface for factories that accept and process SPARQL update requests.
- * <p/>
- * The streaming methods may be the only methods called when inside of a
streaming-capable container, such as Fuseki. (TODO is this fair to
implementers?)
*/
public interface UpdateEngineFactory
{
- /** Answer whether this factory can produce an UpdateEngine for the
UpdateRequest and GraphStore */
- public boolean accept(UpdateRequest request, GraphStore graphStore,
Context context) ;
+ /** Answer whether this factory can produce an UpdateEngine for the
specified GraphStore */
+ public boolean accept(GraphStore graphStore, Context context) ;
- /** Create the request - having returned true to accept, should not fail
*/
- public UpdateEngine create(UpdateRequest request, GraphStore graphStore,
Binding inputBinding, Context context) ;
-
- /** Answer whether this factory can produce an UpdateEngineStreaming for
the specified GraphStore */
- public boolean acceptStreaming(GraphStore graphStore, Context context) ;
-
- /** Create the streaming engine - having returned true to accept, should
not fail */
- public UpdateEngineStreaming createStreaming(GraphStore graphStore,
Binding inputBinding, Context context);
+ /** Create the update engine - having returned true to accept, should not
fail */
+ public UpdateEngine create(GraphStore graphStore, Binding inputBinding,
Context context);
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineMain.java
Tue Feb 5 00:44:58 2013
@@ -19,71 +19,44 @@
package com.hp.hpl.jena.sparql.modify;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
-import com.hp.hpl.jena.sparql.modify.request.UpdateVisitor;
+import com.hp.hpl.jena.sparql.modify.request.UpdateVisitor ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.Update ;
-import com.hp.hpl.jena.update.UpdateRequest ;
/**
* Default implementation of an update engine
* <p>
* Developers who only want to change/extend the processing of individual
updates can easily
* </p>
- * Important note for implementers extending this class: Your GraphStore
implementation *must* be able to
- * accept <code>null</code> as a parameter to {@link
GraphStore#startRequest(UpdateRequest)} and
- * {@link GraphStore#finishRequest(UpdateRequest)} (TODO: Revisit this
decision)
*/
public class UpdateEngineMain extends UpdateEngineBase
{
/**
* Creates a new Update Engine
* @param graphStore Graph Store the updates operate over
- * @param request Update Request
* @param initialBinding Initial Bindings
* @param context Execution Context
*/
- public UpdateEngineMain(GraphStore graphStore, UpdateRequest request,
Binding initialBinding, Context context)
- {
- super(graphStore, request, initialBinding, context) ;
- }
-
- /**
- * Creates a new Update Engine
- * @param graphStore Graph Store the updates operate over
- * @param context Execution Context
- */
public UpdateEngineMain(GraphStore graphStore, Binding initialBinding,
Context context)
{
super(graphStore, initialBinding, context) ;
}
- /**
- * Executes the updates by creating a {@link UpdateVisitor} using the
{@link #prepareWorker()} method and then using that to visit each update
command in the Update Request
- */
- @Override
- public void execute()
- {
- graphStore.startRequest(request) ;
- UpdateVisitor worker = this.prepareWorker();
- for ( Update up : request ) {
- up.visit(worker) ;
- }
- graphStore.finishRequest(request) ;
- }
-
@Override
public void startRequest()
{
- graphStore.startRequest(null); // TODO Must accept null as an
argument here
+ graphStore.startRequest();
}
@Override
public void finishRequest()
{
- graphStore.finishRequest(null); // TODO Must accept null as an
argument here
+ graphStore.finishRequest();
}
+ /**
+ * Creates an {@link UpdateVisitorSink} by using the {@link UpdateVisitor}
provided by the {@link #prepareWorker()} method, which will be used to visit
each update operation.
+ */
@Override
public UpdateSink getUpdateSink()
{
@@ -101,25 +74,13 @@ public class UpdateEngineMain extends Up
private static UpdateEngineFactory factory = new UpdateEngineFactory()
{
@Override
- public boolean accept(UpdateRequest request, GraphStore graphStore,
Context context)
- {
- return true ;
- }
-
- @Override
- public UpdateEngine create(UpdateRequest request, GraphStore
graphStore, Binding inputBinding, Context context)
- {
- return new UpdateEngineMain(graphStore, request, inputBinding,
context) ;
- }
-
- @Override
- public boolean acceptStreaming(GraphStore graphStore, Context context)
+ public boolean accept(GraphStore graphStore, Context context)
{
return true ;
}
@Override
- public UpdateEngineStreaming createStreaming(GraphStore graphStore,
Binding initialBinding, Context context)
+ public UpdateEngine create(GraphStore graphStore, Binding
initialBinding, Context context)
{
return new UpdateEngineMain(graphStore, initialBinding, context);
}
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineRegistry.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineRegistry.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineRegistry.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineRegistry.java
Tue Feb 5 00:44:58 2013
@@ -23,7 +23,6 @@ import java.util.List ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
public class UpdateEngineRegistry
{
@@ -47,49 +46,24 @@ public class UpdateEngineRegistry
registry.add(UpdateEngineMain.getFactory()) ;
}
- /** Locate a suitable factory for this query and dataset from the default
registry
- *
- * @param request UpdateRequest
- * @param graphStore The graph store
- * @return A QueryExecutionFactory or null if none accept the request
- */
- public static UpdateEngineFactory findFactory(UpdateRequest request,
GraphStore graphStore, Context context)
- { return get().find(request, graphStore, context) ; }
-
/** Locate a suitable factory for this dataset from the default registry
*
* @param graphStore The graph store
* @return A QueryExecutionFactory or null if none accept the request
*/
- public static UpdateEngineFactory findStreamingFactory(GraphStore
graphStore, Context context)
- { return get().findStreaming(graphStore, context) ; }
-
- /** Locate a suitable factory for this query and dataset
- *
- * @param request UpdateRequest
- * @param graphStore A GraphStore
- * @return A UpdateProcessorFactroy or null if none accept the request
- */
- public UpdateEngineFactory find(UpdateRequest request, GraphStore
graphStore, Context context)
- {
- for ( UpdateEngineFactory f : factories )
- {
- if ( f.accept(request, graphStore, context) )
- return f ;
- }
- return null ;
- }
+ public static UpdateEngineFactory findFactory(GraphStore graphStore,
Context context)
+ { return get().find(graphStore, context) ; }
/** Locate a suitable factory for this dataset
*
* @param graphStore A GraphStore
* @return A UpdateProcessorFactroy or null if none accept the request
*/
- public UpdateEngineFactory findStreaming(GraphStore graphStore, Context
context)
+ public UpdateEngineFactory find(GraphStore graphStore, Context context)
{
for ( UpdateEngineFactory f : factories )
{
- if ( f.acceptStreaming(graphStore, context) )
+ if ( f.accept(graphStore, context) )
return f ;
}
return null ;
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java
Tue Feb 5 00:44:58 2013
@@ -18,6 +18,8 @@
package com.hp.hpl.jena.sparql.modify;
+import org.apache.jena.atlas.iterator.Iter ;
+
import com.hp.hpl.jena.query.QuerySolution ;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
import com.hp.hpl.jena.sparql.engine.binding.BindingFactory ;
@@ -52,8 +54,17 @@ public class UpdateProcessorBase impleme
@Override
public void execute()
{
- UpdateEngine proc = factory.create(request, graphStore,
initialBinding, context) ;
- proc.execute() ;
+ UpdateEngine uProc = factory.create(graphStore, initialBinding,
context);
+ uProc.startRequest();
+ try
+ {
+ UpdateSink sink = uProc.getUpdateSink();
+ Iter.sendToSink(request, sink); // Will call close on sink if
there are no exceptions
+ }
+ finally
+ {
+ uProc.finishRequest();
+ }
}
@Override
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorStreamingBase.java
Tue Feb 5 00:44:58 2013
@@ -35,14 +35,14 @@ public class UpdateProcessorStreamingBas
protected final GraphStore graphStore ;
protected final Context context ;
- protected final UpdateEngineStreaming proc;
+ protected final UpdateEngine proc;
public UpdateProcessorStreamingBase(GraphStore graphStore, Context
context, UpdateEngineFactory factory)
{
this.graphStore = graphStore ;
this.context = Context.setupContext(context, graphStore) ;
- proc = factory.createStreaming(graphStore, initialBinding, context) ;
+ proc = factory.create(graphStore, initialBinding, context) ;
}
@Override
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateSink.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateSink.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateSink.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateSink.java
Tue Feb 5 00:44:58 2013
@@ -25,12 +25,16 @@ import com.hp.hpl.jena.sparql.modify.req
import com.hp.hpl.jena.update.Update ;
/**
- * An update sink is used by the SPARQL Update parser, which sends queries and
sends quads to insert/delete data sinks.
+ * An {@linkplain UpdateSink} is an object usually created by a container
(such as a storage engine
+ * or an {@link com.hp.hpl.jena.update.UpdateRequest}) that can process or
store a single SPARQL Update
+ * request which consists of one or more SPARQL Update operations.
*/
+// TODO More documentation!
public interface UpdateSink extends Sink<Update>
{
public Prologue getPrologue();
+ // TODO make an interface for the quad sinks
public QuadDataAccSink getInsertDataSink();
public QuadDataAccSink getDeleteDataSink();
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/GraphStore.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/GraphStore.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/GraphStore.java
(original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/GraphStore.java
Tue Feb 5 00:44:58 2013
@@ -30,9 +30,9 @@ public interface GraphStore extends Data
public Dataset toDataset() ;
/** Signal start of a request being executed */
- public void startRequest(UpdateRequest request) ;
+ public void startRequest() ;
/** Signal end of a request being executed */
- public void finishRequest(UpdateRequest request) ;
+ public void finishRequest() ;
// public void sync() ;
// public void close() ;
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
(original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java
Tue Feb 5 00:44:58 2013
@@ -21,6 +21,7 @@ package com.hp.hpl.jena.update;
import java.io.InputStream ;
import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.iterator.Iter ;
import com.hp.hpl.jena.graph.Graph ;
import com.hp.hpl.jena.query.Dataset ;
@@ -339,8 +340,20 @@ public class UpdateAction
// All non-streaming updates come through here.
private static void execute$(UpdateRequest request, GraphStore graphStore,
Binding binding)
{
- UpdateProcessor uProc = UpdateExecutionFactory.create(request,
graphStore, binding) ;
- uProc.execute() ;
+ UpdateProcessorStreaming uProc =
UpdateExecutionFactory.createStreaming(graphStore, binding) ;
+
+ uProc.startRequest();
+ try
+ {
+ UpdateSink sink = uProc.getUpdateSink();
+ Iter.sendToSink(request, sink); // Will call close on sink if
there are no exceptions
+ }
+ finally
+ {
+ uProc.finishRequest();
+ }
+
+
}
/** Execute a single SPARQL Update operation.
@@ -473,11 +486,12 @@ public class UpdateAction
if ( in == null )
throw new UpdateException("File could not be opened:
"+fileName) ;
}
- parseExecute(usingList, dataset, in, baseURI, syntax) ;
+ parseExecute(usingList, dataset, in, null, baseURI, syntax) ;
}
/**
* Parse update operations into a GraphStore by parsing from an
InputStream.
+ * @param usingList A list of USING or USING NAMED statements that be
added to all {@link UpdateWithUsing} queries
* @param input The source of the update request (must be UTF-8).
*/
public static void parseExecute(UsingList usingList, DatasetGraph dataset,
InputStream input)
@@ -487,35 +501,38 @@ public class UpdateAction
/**
* Parse update operations into a GraphStore by parsing from an
InputStream.
+ * @param usingList A list of USING or USING NAMED statements that be
added to all {@link UpdateWithUsing} queries
* @param input The source of the update request (must be UTF-8).
* @param syntax The update language syntax
*/
public static void parseExecute(UsingList usingList, DatasetGraph dataset,
InputStream input, Syntax syntax)
{
- parseExecute(usingList, dataset, input, null, syntax) ;
+ parseExecute(usingList, dataset, input, null, null, syntax) ;
}
/**
* Parse update operations into a GraphStore by parsing from an
InputStream.
+ * @param usingList A list of USING or USING NAMED statements that be
added to all {@link UpdateWithUsing} queries
* @param input The source of the update request (must be UTF-8).
* @param baseURI The base URI for resolving relative URIs.
*/
public static void parseExecute(UsingList usingList, DatasetGraph dataset,
InputStream input, String baseURI)
{
- parseExecute(usingList, dataset, input, baseURI,
Syntax.defaultUpdateSyntax) ;
+ parseExecute(usingList, dataset, input, null, baseURI,
Syntax.defaultUpdateSyntax) ;
}
/**
* Parse update operations into a GraphStore by parsing from an
InputStream.
+ * @param usingList A list of USING or USING NAMED statements that be
added to all {@link UpdateWithUsing} queries
* @param input The source of the update request (must be UTF-8).
* @param baseURI The base URI for resolving relative URIs.
* @param syntax The update language syntax
*/
- public static void parseExecute(UsingList usingList, DatasetGraph dataset,
InputStream input, String baseURI, Syntax syntax)
+ public static void parseExecute(UsingList usingList, DatasetGraph dataset,
InputStream input, Binding binding, String baseURI, Syntax syntax)
{
GraphStore graphStore = GraphStoreFactory.create(dataset);
- UpdateProcessorStreaming uProc =
UpdateExecutionFactory.createStreaming(graphStore) ;
+ UpdateProcessorStreaming uProc =
UpdateExecutionFactory.createStreaming(graphStore, binding) ;
uProc.startRequest();
try
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
(original)
+++
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateExecutionFactory.java
Tue Feb 5 00:44:58 2013
@@ -108,6 +108,17 @@ public class UpdateExecutionFactory
* @param context (null means use merge of global and graph store
context))
* @return UpdateProcessor or null
*/
+ public static UpdateProcessorStreaming createStreaming(GraphStore
graphStore, Binding initialBinding)
+ {
+ return makeStreaming(graphStore, initialBinding, null) ;
+ }
+
+ /** Create an UpdateProcessor appropriate to the GraphStore, or null if no
available factory to make an UpdateProcessor
+ * @param graphStore
+ * @param initialBinding (may be null for none)
+ * @param context (null means use merge of global and graph store
context))
+ * @return UpdateProcessor or null
+ */
public static UpdateProcessorStreaming createStreaming(GraphStore
graphStore, Binding initialBinding, Context context)
{
return makeStreaming(graphStore, initialBinding, context) ;
@@ -134,7 +145,7 @@ public class UpdateExecutionFactory
context.putAll(graphStore.getContext()) ;
}
- UpdateEngineFactory f = UpdateEngineRegistry.get().find(updateRequest,
graphStore, context) ;
+ UpdateEngineFactory f = UpdateEngineRegistry.get().find(graphStore,
context) ;
if ( f == null )
return null ;
@@ -153,7 +164,7 @@ public class UpdateExecutionFactory
context.putAll(graphStore.getContext()) ;
}
- UpdateEngineFactory f =
UpdateEngineRegistry.get().findStreaming(graphStore, context) ;
+ UpdateEngineFactory f = UpdateEngineRegistry.get().find(graphStore,
context) ;
if ( f == null )
return null ;
Modified:
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
(original)
+++
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/modify/UpdateEngineSDB.java
Tue Feb 5 00:44:58 2013
@@ -20,53 +20,33 @@ package com.hp.hpl.jena.sdb.modify;
import com.hp.hpl.jena.sdb.store.DatasetStoreGraph ;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
-import com.hp.hpl.jena.sparql.modify.UpdateEngine ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineFactory ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineMain ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineRegistry ;
-import com.hp.hpl.jena.sparql.modify.UpdateEngineStreaming ;
+import com.hp.hpl.jena.sparql.modify.UpdateEngine ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
public class UpdateEngineSDB extends UpdateEngineMain
{
// More of a placeholder currently.
- public UpdateEngineSDB(DatasetStoreGraph graphStore, UpdateRequest
request, Binding inputBinding, Context context)
- { super(graphStore, request, inputBinding, context) ; }
-
public UpdateEngineSDB(DatasetStoreGraph graphStore, Binding inputBinding,
Context context)
{ super(graphStore, inputBinding, context) ; }
- @Override
- public void execute()
- { super.execute() ; }
// ---- Factory
public static UpdateEngineFactory getFactory() {
return new UpdateEngineFactory()
{
@Override
- public boolean accept(UpdateRequest request, GraphStore
graphStore, Context context)
- {
- return (graphStore instanceof DatasetStoreGraph) ;
- }
-
- @Override
- public UpdateEngine create(UpdateRequest request, GraphStore
graphStore, Binding inputBinding, Context context)
- {
- return new UpdateEngineSDB((DatasetStoreGraph)graphStore,
request, inputBinding, context) ;
- }
-
- @Override
- public boolean acceptStreaming(GraphStore graphStore, Context
context)
+ public boolean accept(GraphStore graphStore, Context context)
{
return (graphStore instanceof DatasetStoreGraph) ;
}
@Override
- public UpdateEngineStreaming createStreaming(GraphStore
graphStore, Binding initialBinding, Context context)
+ public UpdateEngine create(GraphStore graphStore, Binding
initialBinding, Context context)
{
return new UpdateEngineSDB((DatasetStoreGraph)graphStore,
initialBinding, context);
}
Modified:
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/store/DatasetStoreGraph.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/store/DatasetStoreGraph.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/store/DatasetStoreGraph.java
(original)
+++
jena/trunk/jena-sdb/src/main/java/com/hp/hpl/jena/sdb/store/DatasetStoreGraph.java
Tue Feb 5 00:44:58 2013
@@ -36,7 +36,6 @@ import com.hp.hpl.jena.sparql.core.Datas
import com.hp.hpl.jena.sparql.core.Quad ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
public class DatasetStoreGraph extends DatasetGraphCaching
implements DatasetGraph, Closeable, GraphStore
@@ -69,11 +68,11 @@ public class DatasetStoreGraph extends D
//---- Update
@Override
- public void startRequest(UpdateRequest request)
+ public void startRequest()
{}
@Override
- public void finishRequest(UpdateRequest request)
+ public void finishRequest()
{}
Modified:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
(original)
+++
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/modify/UpdateEngineTDB.java
Tue Feb 5 00:44:58 2013
@@ -19,21 +19,16 @@
package com.hp.hpl.jena.tdb.modify;
import com.hp.hpl.jena.sparql.engine.binding.Binding ;
-import com.hp.hpl.jena.sparql.modify.UpdateEngine ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineFactory ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineMain ;
import com.hp.hpl.jena.sparql.modify.UpdateEngineRegistry ;
-import com.hp.hpl.jena.sparql.modify.UpdateEngineStreaming ;
+import com.hp.hpl.jena.sparql.modify.UpdateEngine ;
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
public class UpdateEngineTDB extends UpdateEngineMain
{
- public UpdateEngineTDB(DatasetGraphTDB graphStore, UpdateRequest request,
Binding inputBinding, Context context)
- { super(graphStore, request, inputBinding, context) ; }
-
public UpdateEngineTDB(DatasetGraphTDB graphStore, Binding inputBinding,
Context context)
{ super(graphStore, inputBinding, context) ; }
@@ -43,25 +38,13 @@ public class UpdateEngineTDB extends Upd
return new UpdateEngineFactory()
{
@Override
- public boolean accept(UpdateRequest request, GraphStore
graphStore, Context context)
- {
- return (graphStore instanceof DatasetGraphTDB) ;
- }
-
- @Override
- public UpdateEngine create(UpdateRequest request, GraphStore
graphStore, Binding inputBinding, Context context)
- {
- return new UpdateEngineTDB((DatasetGraphTDB)graphStore,
request, inputBinding, context) ;
- }
-
- @Override
- public boolean acceptStreaming(GraphStore graphStore, Context
context)
+ public boolean accept(GraphStore graphStore, Context context)
{
return (graphStore instanceof DatasetGraphTDB) ;
}
@Override
- public UpdateEngineStreaming createStreaming(GraphStore
graphStore, Binding inputBinding, Context context)
+ public UpdateEngine create(GraphStore graphStore, Binding
inputBinding, Context context)
{
return new UpdateEngineTDB((DatasetGraphTDB)graphStore,
inputBinding, context);
}
Modified:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java
(original)
+++
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/DatasetGraphTDB.java
Tue Feb 5 00:44:58 2013
@@ -42,7 +42,6 @@ import com.hp.hpl.jena.tdb.sys.Session ;
import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
import com.hp.hpl.jena.tdb.transaction.DatasetGraphTxn ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
/** This is the class that creates a dataset over the storage via
* TripleTable, QuadTable and prefixes. These may be transactional.
@@ -290,11 +289,11 @@ public class DatasetGraphTDB extends Dat
// --- GraphStore
@Override
- public void startRequest(UpdateRequest request)
+ public void startRequest()
{ }
@Override
- public void finishRequest(UpdateRequest request)
+ public void finishRequest()
{ }
@Override
Modified:
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
URL:
http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java?rev=1442446&r1=1442445&r2=1442446&view=diff
==============================================================================
---
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
(original)
+++
jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/transaction/DatasetGraphTransaction.java
Tue Feb 5 00:44:58 2013
@@ -31,7 +31,6 @@ import com.hp.hpl.jena.tdb.TDB ;
import com.hp.hpl.jena.tdb.base.file.Location ;
import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
import com.hp.hpl.jena.update.GraphStore ;
-import com.hp.hpl.jena.update.UpdateRequest ;
/** Transactional DatasetGraph that allows one active transaction.
* For multiple read transactions, create multiple DatasetGraphTransaction
objects.
@@ -241,11 +240,11 @@ public class DatasetGraphTransaction ext
}
@Override
- public void startRequest(UpdateRequest request)
+ public void startRequest()
{}
@Override
- public void finishRequest(UpdateRequest request)
+ public void finishRequest()
{}
@Override