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