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
*/