You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2012/07/27 12:27:48 UTC
svn commit: r1366329 -
/incubator/stanbol/trunk/commons/ldpath/clerezza/src/main/java/org/apache/stanbol/commons/ldpath/clerezza/ClerezzaBackend.java
Author: rwesten
Date: Fri Jul 27 10:27:48 2012
New Revision: 1366329
URL: http://svn.apache.org/viewvc?rev=1366329&view=rev
Log:
related to STANBOL-704: ClerezzaBackend now uses readLocks if the parsed TripleCollection supports read/write locks (instanceof LockableMGraph)
Modified:
incubator/stanbol/trunk/commons/ldpath/clerezza/src/main/java/org/apache/stanbol/commons/ldpath/clerezza/ClerezzaBackend.java
Modified: incubator/stanbol/trunk/commons/ldpath/clerezza/src/main/java/org/apache/stanbol/commons/ldpath/clerezza/ClerezzaBackend.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/commons/ldpath/clerezza/src/main/java/org/apache/stanbol/commons/ldpath/clerezza/ClerezzaBackend.java?rev=1366329&r1=1366328&r2=1366329&view=diff
==============================================================================
--- incubator/stanbol/trunk/commons/ldpath/clerezza/src/main/java/org/apache/stanbol/commons/ldpath/clerezza/ClerezzaBackend.java (original)
+++ incubator/stanbol/trunk/commons/ldpath/clerezza/src/main/java/org/apache/stanbol/commons/ldpath/clerezza/ClerezzaBackend.java Fri Jul 27 10:27:48 2012
@@ -30,6 +30,7 @@ import java.util.Iterator;
import java.util.Locale;
import java.util.Set;
import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.locks.Lock;
import org.apache.clerezza.rdf.core.BNode;
import org.apache.clerezza.rdf.core.Language;
@@ -44,6 +45,7 @@ import org.apache.clerezza.rdf.core.Trip
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.TypedLiteral;
import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl;
import org.apache.clerezza.rdf.core.impl.SimpleLiteralFactory;
import org.apache.clerezza.rdf.core.impl.TypedLiteralImpl;
@@ -248,9 +250,16 @@ public class ClerezzaBackend extends Abs
}
Collection<Resource> result = new ArrayList<Resource>();
- Iterator<Triple> triples = graph.filter((NonLiteral) subject, (UriRef) property, null);
- while (triples.hasNext()) {
- result.add(triples.next().getObject());
+ Lock readLock = readLockGraph();
+ try {
+ Iterator<Triple> triples = graph.filter((NonLiteral) subject, (UriRef) property, null);
+ while (triples.hasNext()) {
+ result.add(triples.next().getObject());
+ }
+ } finally {
+ if(readLock != null){ //will be null if #graph is a read-only graph instance
+ readLock.unlock();
+ }
}
return result;
@@ -263,11 +272,17 @@ public class ClerezzaBackend extends Abs
}
Collection<Resource> result = new ArrayList<Resource>();
- Iterator<Triple> triples = graph.filter(null, (UriRef) property, object);
- while (triples.hasNext()) {
- result.add(triples.next().getSubject());
+ Lock readLock = readLockGraph();
+ try {
+ Iterator<Triple> triples = graph.filter(null, (UriRef) property, object);
+ while (triples.hasNext()) {
+ result.add(triples.next().getSubject());
+ }
+ } finally {
+ if(readLock != null){ //will be null if #graph is a read-only graph instance
+ readLock.unlock();
+ }
}
-
return result;
}
@@ -370,4 +385,20 @@ public class ClerezzaBackend extends Abs
public ThreadPoolExecutor getThreadPool() {
return null;
}
+
+ /**
+ * @return the readLock or <code>null</code>if no read lock is needed
+ */
+ private Lock readLockGraph() {
+ final Lock readLock;
+ if(graph instanceof LockableMGraph){
+ readLock = ((LockableMGraph)graph).getLock().readLock();
+ readLock.lock();
+ } else {
+ readLock = null;
+ }
+ return readLock;
+ }
+
+
}
\ No newline at end of file