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 2012/08/08 12:14:24 UTC

svn commit: r1370728 - in /jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena: sparql/modify/UpdateEngineWorker.java update/UpdateAction.java

Author: andy
Date: Wed Aug  8 10:14:24 2012
New Revision: 1370728

URL: http://svn.apache.org/viewvc?rev=1370728&view=rev
Log:
Protect against SPARQL Update operating on a model then using named graphs.

Modified:
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/update/UpdateAction.java

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java?rev=1370728&r1=1370727&r2=1370728&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/modify/UpdateEngineWorker.java Wed Aug  8 10:14:24 2012
@@ -327,15 +327,12 @@ public class UpdateEngineWorker implemen
         Query query = elementToQuery(update.getWherePattern()) ;
         
         // USING/USING NAMED
-        DatasetGraph dsg = processUsing(update, query) ;
+        DatasetGraph dsg = processUsing(update) ;
         
         // USING overrides WITH
         if ( dsg == null && withGraph != null )
-        {
-            //Graph g = graphStore.getGraph(withGraph) ;
-            Graph g = graph(graphStore, withGraph) ;
-            dsg = new DatasetGraphAltDefaultGraph(graphStore, g) ;
-        }
+            dsg = processWith(update) ;    
+            
         if ( dsg == null )
             dsg = graphStore ;
         
@@ -363,7 +360,7 @@ public class UpdateEngineWorker implemen
     }
 
     // Indirection for subsystems to support USING/USING NAMED.
-    protected DatasetGraph processUsing(UpdateModify update, Query query)
+    protected DatasetGraph processUsing(UpdateModify update)
     {
         if ( update.getUsing().size() == 0 && update.getUsingNamed().size() == 0 )
             return null ;
@@ -379,7 +376,7 @@ public class UpdateEngineWorker implemen
                 
                 for ( Node gn : update.getUsing() )
                 {
-                    Graph g2 = graphStore.getGraph(gn) ;
+                    Graph g2 = graphOrDummy(graphStore, gn) ;
                     g.getBulkUpdateHandler().add(g2) ;
                 }
                 dsg.setDefaultGraph(g) ;
@@ -387,7 +384,8 @@ public class UpdateEngineWorker implemen
             else
             {
                 Node gn = update.getUsing().get(0) ;
-                dsg.setDefaultGraph(graphStore.getGraph(gn)) ;
+                Graph g = graphOrDummy(graphStore, gn) ;
+                dsg.setDefaultGraph(g) ;
             }
         }
         
@@ -397,11 +395,29 @@ public class UpdateEngineWorker implemen
             dsg = new DatasetGraphMap(dsg.getDefaultGraph()) ;
             
             for ( Node gn : update.getUsingNamed() )
-                dsg.addGraph(gn, graphStore.getGraph(gn)) ; 
+                dsg.addGraph(gn, graphOrDummy(graphStore, gn)) ;
         }
         return dsg ;
     }
     
+    protected DatasetGraph processWith(UpdateModify update)
+    {
+        Node withGraph = update.getWithIRI() ;
+        if ( withGraph == null )
+            return null ;
+        Graph g = graphOrDummy(graphStore, withGraph) ;
+        DatasetGraph dsg = new DatasetGraphAltDefaultGraph(graphStore, g) ;
+        return dsg ;
+    }
+    
+    private Graph graphOrDummy(DatasetGraph dsg, Node gn)
+    {
+        Graph g = graph(graphStore, gn) ;
+        if ( g == null )
+            g = GraphFactory.createGraphMem() ;
+        return g ;
+    }
+    
     protected static List<Quad> unused_convertBNodesToVariables(List<Quad> quads)
     {
         NodeTransform bnodesToVariables = new NodeTransformBNodesToVariables() ;
@@ -531,7 +547,7 @@ public class UpdateEngineWorker implemen
         {
             if ( dftGraph != null )
             {
-                Graph g = dsg.getGraph(dftGraph) ;
+                Graph g = graphOrDummy(dsg, dftGraph) ;
                 dsg = new DatasetGraphAltDefaultGraph(dsg, g) ;
             }
         }

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=1370728&r1=1370727&r2=1370728&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 Wed Aug  8 10:14:24 2012
@@ -229,6 +229,8 @@ public class UpdateAction
     }
     
     /** Execute SPARQL Update operations.
+     * Warning - changes on named graphs not supported by this operation.
+     * @see #execute(UpdateRequest, Dataset)
      * @param request
      * @param model
      */
@@ -256,6 +258,8 @@ public class UpdateAction
     }
 
     /** Execute SPARQL Update operations.
+     *  Warning - changes on named graphs not supported by this operation.
+     * @see #execute(UpdateRequest, DatasetGraph)
      * @param request
      * @param graph
      */