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 2013/02/06 13:13:15 UTC
svn commit: r1442922 - in
/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify:
UpdateEngine.java UpdateEngineBase.java UpdateEngineMain.java
UpdateEngineNonStreaming.java UpdateProcessorBase.java
Author: andy
Date: Wed Feb 6 12:13:15 2013
New Revision: 1442922
URL: http://svn.apache.org/viewvc?rev=1442922&view=rev
Log:
Add UpdateEngine.execute
Move loop to push update operations to the UpdateEngineWorker
from UpdateProcessorBase to UpdateEngineMain using UpdateEngine.execute
Modified:
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/UpdateEngineMain.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateProcessorBase.java
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=1442922&r1=1442921&r2=1442922&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 Wed Feb 6 12:13:15 2013
@@ -18,8 +18,19 @@
package com.hp.hpl.jena.sparql.modify;
+import com.hp.hpl.jena.update.UpdateRequest ;
+
/**
* An UpdateEngine provides an interface to execute a SPARQL update request.
+ * An update engine is use-once; that is, it executes a single SPARQL Update request
+ * (there may be multiple operations in one request).
+ *
+ * An UpdateEngine is called in the sequence:
+ * <ul>
+ * <li>startRequest()</li>
+ * <li>execute()</li>
+ * <li>finishRequest()</li>
+ * </ul>
*/
public interface UpdateEngine
{
@@ -29,6 +40,11 @@ public interface UpdateEngine
public void startRequest();
/**
+ * Signal start of a request being executed
+ */
+ public void execute(UpdateRequest request);
+
+ /**
* Signal end of a request being executed
*/
public void finishRequest();
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=1442922&r1=1442921&r2=1442922&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 Wed Feb 6 12:13:15 2013
@@ -18,12 +18,15 @@
package com.hp.hpl.jena.sparql.modify;
+import org.apache.jena.atlas.iterator.Iter ;
+
import com.hp.hpl.jena.query.ARQ ;
import com.hp.hpl.jena.sparql.ARQConstants ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
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
{
@@ -37,6 +40,13 @@ public abstract class UpdateEngineBase i
this.context = setupContext(context, graphStore) ;
}
+ @Override
+ public void execute(UpdateRequest request)
+ {
+ UpdateSink sink = getUpdateSink();
+ Iter.sendToSink(request, sink); // Will call close on sink if there are no exceptions
+ }
+
// Put any
private static Context setupContext(Context context, DatasetGraph dataset)
{
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=1442922&r1=1442921&r2=1442922&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 Wed Feb 6 12:13:15 2013
@@ -18,9 +18,12 @@
package com.hp.hpl.jena.sparql.modify;
+import org.apache.jena.atlas.iterator.Iter ;
+
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.UpdateRequest ;
/**
* Default implementation of an update engine
@@ -52,13 +55,26 @@ public class UpdateEngineMain extends Up
graphStore.finishRequest();
}
+ @Override
+ public void execute(UpdateRequest request)
+ {
+ UpdateSink sink = getUpdateSink();
+ Iter.sendToSink(request, sink); // Will call close on sink if there are no exceptions
+ }
+
+ private UpdateSink updateSink = null ;
+
/**
- * Creates an {@link UpdateVisitorSink} by using the {@link UpdateVisitor} provided by the {@link #prepareWorker()} method, which will be used to visit each update operation.
+ * Returns the {@link UpdateSink}. In this implementation, this is done by
+ * with an {@link UpdateVisitor} which will visit each update operation
+ * and send the operation to the associated {@link UpdateEngineWorker}.
*/
@Override
public UpdateSink getUpdateSink()
{
- return new UpdateVisitorSink(this.prepareWorker());
+ if ( updateSink == null )
+ updateSink = new UpdateVisitorSink(this.prepareWorker());
+ return updateSink ;
}
/**
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java?rev=1442922&r1=1442921&r2=1442922&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineNonStreaming.java Wed Feb 6 12:13:15 2013
@@ -25,12 +25,14 @@ import com.hp.hpl.jena.update.Update ;
import com.hp.hpl.jena.update.UpdateRequest ;
/**
- * Default implementation of an update engine that does not stream data, instead it will build it up into an
+ * Example implementation of an update engine that does not stream data, instead it will build it up into an
* in-memory UpdateRequest, and then traverse it after all update operations have finished.
*/
-public class UpdateEngineNonStreaming extends UpdateEngineBase
+public class UpdateEngineNonStreaming extends UpdateEngineMain
{
- protected final UpdateRequest request;
+ // This is the internal accumulator of upate operations used to not change the
+ // UpdateRequest at the application level.
+ protected final UpdateRequest accRequests;
/**
* Creates a new Update Engine
@@ -40,19 +42,19 @@ public class UpdateEngineNonStreaming ex
public UpdateEngineNonStreaming(GraphStore graphStore, Context context)
{
super(graphStore, context) ;
- request = new UpdateRequest();
+ accRequests = new UpdateRequest();
}
@Override
public void startRequest()
{
- // Do nothing, we will call startRequest() on the graphstore in the execute() method
+ graphStore.startRequest() ;
}
@Override
public void finishRequest()
{
- // Do nothing, we will call finishRequest() on the graphstore in the execute() method
+ graphStore.finishRequest();
}
/**
@@ -63,7 +65,7 @@ public class UpdateEngineNonStreaming ex
public UpdateSink getUpdateSink()
{
// Override the close() method to call execute() when we're done accepting update operations
- return new UpdateRequestSink(request)
+ return new UpdateRequestSink(accRequests)
{
@Override
public void close()
@@ -75,25 +77,15 @@ public class UpdateEngineNonStreaming ex
}
/**
- * Called after all of the update operations have been added to {@link #request}.
+ * Called after all of the update operations have been added to {@link #accRequests}.
*/
protected void execute()
{
- graphStore.startRequest() ;
UpdateVisitor worker = this.prepareWorker() ;
- for ( Update up : request )
+ for ( Update up : accRequests )
{
up.visit(worker) ;
}
- graphStore.finishRequest();
- }
-
- /**
- * Creates the {@link UpdateVisitor} which will do the work of applying the updates
- * @return The update visitor to be used to apply the updates
- */
- protected UpdateVisitor prepareWorker() {
- return new UpdateEngineWorker(graphStore, context) ;
}
private static UpdateEngineFactory factory = new UpdateEngineFactory()
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=1442922&r1=1442921&r2=1442922&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 Wed Feb 6 12:13:15 2013
@@ -18,8 +18,6 @@
package com.hp.hpl.jena.sparql.modify;
-import org.apache.jena.atlas.iterator.Iter ;
-
import com.hp.hpl.jena.sparql.util.Context ;
import com.hp.hpl.jena.update.GraphStore ;
import com.hp.hpl.jena.update.UpdateProcessor ;
@@ -51,14 +49,11 @@ public class UpdateProcessorBase impleme
{
UpdateEngine uProc = factory.create(graphStore, 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();
+
+ try {
+ uProc.execute(request) ;
+ } finally {
+ uProc.finishRequest() ;
}
}