You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by sa...@apache.org on 2014/06/30 23:24:34 UTC

svn commit: r1606935 - in /jena/Experimental/jena-client: pom.xml src/main/java/org/apache/jena/client/graph/DatasetGraphConnection.java src/main/java/org/apache/jena/client/graph/DatasetGraphUpdater.java

Author: sallen
Date: Mon Jun 30 21:24:34 2014
New Revision: 1606935

URL: http://svn.apache.org/r1606935
Log:
jena-client 1) Update to use Jena 2.11.2, and 2) Add auto commit mode for DatasetGraph updates

Modified:
    jena/Experimental/jena-client/pom.xml
    jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphConnection.java
    jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphUpdater.java

Modified: jena/Experimental/jena-client/pom.xml
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-client/pom.xml?rev=1606935&r1=1606934&r2=1606935&view=diff
==============================================================================
--- jena/Experimental/jena-client/pom.xml (original)
+++ jena/Experimental/jena-client/pom.xml Mon Jun 30 21:24:34 2014
@@ -20,7 +20,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.jena</groupId>
   <artifactId>jena-client</artifactId>
-  <version>0.0.11-SNAPSHOT</version>
+  <version>0.0.12-SNAPSHOT</version>
   <name>Apache Jena - Client (SPARQL 1.1 Client API)</name>
   <description>Client is a library that provides an API for querying and updating local or remote SPARQL 1.1 endpoints.</description>
   
@@ -47,7 +47,7 @@
     <dependency>
       <groupId>org.apache.jena</groupId>
       <artifactId>jena-arq</artifactId>
-      <version>2.10.0</version>
+      <version>2.11.2</version>
     </dependency>
 
     <dependency>

Modified: jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphConnection.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphConnection.java?rev=1606935&r1=1606934&r2=1606935&view=diff
==============================================================================
--- jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphConnection.java (original)
+++ jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphConnection.java Mon Jun 30 21:24:34 2014
@@ -33,6 +33,8 @@ public class DatasetGraphConnection exte
 {
     private final DatasetGraph dsg;
     
+    private boolean autoCommitMode = true;
+    
     DatasetGraphConnection(DatasetGraphRepository repo, DatasetGraph dsg)
     {
         super(repo);
@@ -42,7 +44,7 @@ public class DatasetGraphConnection exte
     @Override
     protected Updater doCreateStreamingUpdater()
     {
-        DatasetGraphUpdater updater = new DatasetGraphUpdater(dsg);
+        DatasetGraphUpdater updater = new DatasetGraphUpdater(dsg, autoCommitMode);
         updater.open();
         return updater;
     }
@@ -86,6 +88,7 @@ public class DatasetGraphConnection exte
     @Override
     public void begin(ReadWrite readWrite)
     {
+        autoCommitMode = false;
         if (supportsTransactions())
         {
             ((Transactional)dsg).begin(readWrite);
@@ -95,6 +98,7 @@ public class DatasetGraphConnection exte
     @Override
     public void commit()
     {
+        autoCommitMode = true;
         if (supportsTransactions())
         {
             ((Transactional)dsg).commit();
@@ -104,6 +108,7 @@ public class DatasetGraphConnection exte
     @Override
     public void abort()
     {
+        autoCommitMode = true;
         if (supportsTransactions())
         {
             ((Transactional)dsg).abort();
@@ -113,6 +118,7 @@ public class DatasetGraphConnection exte
     @Override
     public void end()
     {
+        autoCommitMode = true;
         if (supportsTransactions())
         {
             ((Transactional)dsg).end();

Modified: jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphUpdater.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphUpdater.java?rev=1606935&r1=1606934&r2=1606935&view=diff
==============================================================================
--- jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphUpdater.java (original)
+++ jena/Experimental/jena-client/src/main/java/org/apache/jena/client/graph/DatasetGraphUpdater.java Mon Jun 30 21:24:34 2014
@@ -21,26 +21,37 @@ import java.util.Iterator;
 
 import org.apache.jena.client.UpdaterBase;
 
+import com.hp.hpl.jena.query.ReadWrite ;
 import com.hp.hpl.jena.sparql.core.DatasetGraph;
 import com.hp.hpl.jena.sparql.core.Quad;
+import com.hp.hpl.jena.sparql.core.Transactional ;
 import com.hp.hpl.jena.update.Update;
 import com.hp.hpl.jena.update.UpdateAction;
 import com.hp.hpl.jena.update.UpdateRequest;
 
-// TODO This is not atomic!  But the underlying DatasetGraph isn't atomic anyway...
 class DatasetGraphUpdater extends UpdaterBase
 {
     private final DatasetGraph dsg;
+    private final boolean autoCommitMode;
     
     private boolean opened = false;
     
-    public DatasetGraphUpdater(DatasetGraph dsg)
+    // This is so that we know whether or not to call commit() or abort() for auto-commit transactions, assuming that the Updater is used in a try/finally block.
+    // The idea is that we will be left in a non-quiescent state if one of the update operations on the DatasetGraph fails and throws an exception.
+    private boolean quiescent = true;
+    
+    public DatasetGraphUpdater(DatasetGraph dsg, boolean autoCommitMode)
     {
         this.dsg = dsg;
+        this.autoCommitMode = autoCommitMode;
     }
     
     public void open()
     {
+        if (autoCommitMode && dsg instanceof Transactional)
+        {
+            ((Transactional)dsg).begin(ReadWrite.WRITE);
+        }
         opened = true;
     }
     
@@ -56,20 +67,24 @@ class DatasetGraphUpdater extends Update
     protected void doInsert(Iterator<? extends Quad> it)
     {
         checkOpen();
+        quiescent = false;
         while (it.hasNext())
         {
             dsg.add(it.next());
         }
+        quiescent = true;
     }
 
     @Override
     protected void doDelete(Iterator<? extends Quad> it)
     {
         checkOpen();
+        quiescent = false;
         while (it.hasNext())
         {
             dsg.delete(it.next());
         }
+        quiescent = true;
     }
     
     @Override
@@ -77,6 +92,7 @@ class DatasetGraphUpdater extends Update
     {
         checkOpen();
         
+        quiescent = false;
         // TODO make this streaming
         UpdateRequest req = new UpdateRequest();
         while (it.hasNext())
@@ -84,6 +100,7 @@ class DatasetGraphUpdater extends Update
             req.add(it.next());
         }
         UpdateAction.execute(req, dsg);
+        quiescent = true;
     }
     
     @Override
@@ -92,6 +109,18 @@ class DatasetGraphUpdater extends Update
         if (opened)
         {
             opened = false;
+            if (autoCommitMode && dsg instanceof Transactional)
+            {
+                Transactional trans = (Transactional)dsg;
+                if (quiescent)
+                {
+                    trans.commit();
+                }
+                else
+                {
+                    trans.abort();
+                }
+            }
         }
     }
 }