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


Reply via email to