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();
+ }
+ }
}
}
}