You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by to...@apache.org on 2010/06/24 08:45:04 UTC
svn commit: r957434 -
/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/GraphNode.java
Author: tommaso
Date: Thu Jun 24 06:45:04 2010
New Revision: 957434
URL: http://svn.apache.org/viewvc?rev=957434&view=rev
Log:
[CLEREZZA-245] - added read/writeLock methods to GraphNode to permit a clean use of graph locking
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/GraphNode.java
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/GraphNode.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/GraphNode.java?rev=957434&r1=957433&r2=957434&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/GraphNode.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.utils/src/main/java/org/apache/clerezza/rdf/utils/GraphNode.java Thu Jun 24 06:45:04 2010
@@ -18,26 +18,14 @@
*/
package org.apache.clerezza.rdf.utils;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.clerezza.rdf.core.BNode;
-import org.apache.clerezza.rdf.core.Graph;
-import org.apache.clerezza.rdf.core.Literal;
-import org.apache.clerezza.rdf.core.LiteralFactory;
-import org.apache.clerezza.rdf.core.MGraph;
-import org.apache.clerezza.rdf.core.NonLiteral;
-import org.apache.clerezza.rdf.core.Resource;
-import org.apache.clerezza.rdf.core.Triple;
-import org.apache.clerezza.rdf.core.TripleCollection;
-import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.*;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
import org.apache.clerezza.rdf.core.impl.TripleImpl;
+import java.util.*;
+import java.util.concurrent.locks.Lock;
+
/**
* This class represents a node in the context of a graph. It provides
* utility methods to explore and modify its neighbourhood. The method
@@ -630,4 +618,39 @@ public class GraphNode {
public int hashCode() {
return 13 * getNode().hashCode() + getGraph().hashCode();
}
+
+ /**
+ * @return a ReadLock if the underlying Graph is a LockableMGraph it returns its lock, otherwise null
+ */
+ public Lock readLock() {
+ if (getGraph() instanceof LockableMGraph) {
+ return ((LockableMGraph) getGraph()).getLock().readLock();
+ }
+ return new FakeLock();
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Lock writeLock() {
+ if (getGraph() instanceof LockableMGraph) {
+ return ((LockableMGraph) getGraph()).getLock().writeLock();
+ }
+ return new FakeLock();
+ }
+
+ private static class FakeLock implements Lock {
+ public void lock(){}
+
+ public void lockInterruptibly() throws java.lang.InterruptedException {}
+
+ public boolean tryLock() {return false;}
+
+ public boolean tryLock(long l, java.util.concurrent.TimeUnit timeUnit) throws java.lang.InterruptedException {return false;}
+
+ public void unlock(){}
+
+ public java.util.concurrent.locks.Condition newCondition() {return null;}
+ }
}