You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by mi...@apache.org on 2010/08/30 11:13:12 UTC
svn commit: r990735 - in
/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src:
main/java/org/apache/clerezza/platform/typehandlerspace/
test/java/org/apache/clerezza/platform/typehandlerspace/
Author: mir
Date: Mon Aug 30 09:13:12 2010
New Revision: 990735
URL: http://svn.apache.org/viewvc?rev=990735&view=rev
Log:
CLEREZZA-288: added missing locks
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerDiscoveryImpl.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpace.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/test/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpaceTest.java
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerDiscoveryImpl.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerDiscoveryImpl.java?rev=990735&r1=990734&r2=990735&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerDiscoveryImpl.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerDiscoveryImpl.java Mon Aug 30 09:13:12 2010
@@ -27,6 +27,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.locks.Lock;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
@@ -38,6 +39,7 @@ import org.apache.clerezza.platform.conf
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.Resource;
import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.clerezza.rdf.ontologies.RDFS;
import org.apache.clerezza.rdf.utils.RdfList;
import org.apache.felix.scr.annotations.ReferencePolicy;
@@ -69,7 +71,7 @@ public class TypeHandlerDiscoveryImpl im
private final Map<UriRef, Object> typeHandlerMap = Collections.synchronizedMap(
new HashMap<UriRef, Object>());
-
+ LockableMGraph systemGraph;
protected void bindTypeHandler(Object typeHandler) {
if (typePriorityList != null) {
@@ -88,10 +90,12 @@ public class TypeHandlerDiscoveryImpl im
protected void bindSystemGraph(MGraph systemGraph) {
typePriorityList = new RdfList(
new UriRef("http://tpf.localhost/typePriorityList"), systemGraph);
+ this.systemGraph = (LockableMGraph) systemGraph;
}
protected void unbindSystemGraph(MGraph systemGraph) {
typePriorityList = null;
+ this.systemGraph = null;
}
protected void activate(ComponentContext context) throws Exception {
@@ -109,13 +113,19 @@ public class TypeHandlerDiscoveryImpl im
@Override
public Object run() {
- for (Resource type : typePriorityList) {
- if (types.contains(type)) {
- Object result = typeHandlerMap.get(type);
- if (result != null) {
- return result;
+ Lock readLock = systemGraph.getLock().readLock();
+ readLock.lock();
+ try {
+ for (Resource type : typePriorityList) {
+ if (types.contains(type)) {
+ Object result = typeHandlerMap.get(type);
+ if (result != null) {
+ return result;
+ }
}
}
+ } finally {
+ readLock.unlock();
}
return typeHandlerMap.get(RDFS.Resource);
}
@@ -130,12 +140,18 @@ public class TypeHandlerDiscoveryImpl im
}
for (String typeUriString : supportedTypes.types()) {
UriRef typeUri = new UriRef(typeUriString);
- if (!typePriorityList.contains(typeUri)) {
- if (supportedTypes.prioritize()) {
- typePriorityList.add(0, typeUri);
- } else {
- typePriorityList.add(typeUri);
+ Lock writeLock = systemGraph.getLock().writeLock();
+ writeLock.lock();
+ try {
+ if (!typePriorityList.contains(typeUri)) {
+ if (supportedTypes.prioritize()) {
+ typePriorityList.add(0, typeUri);
+ } else {
+ typePriorityList.add(typeUri);
+ }
}
+ } finally {
+ writeLock.unlock();
}
typeHandlerMap.put(typeUri, component);
}
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpace.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpace.java?rev=990735&r1=990734&r2=990735&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpace.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/main/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpace.java Mon Aug 30 09:13:12 2010
@@ -21,6 +21,7 @@ package org.apache.clerezza.platform.typ
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import java.util.concurrent.locks.Lock;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@@ -28,13 +29,13 @@ import javax.ws.rs.core.Context;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriInfo;
-import org.apache.clerezza.jaxrs.extensions.HttpRequest;
import org.apache.clerezza.jaxrs.extensions.ResourceMethodException;
import org.apache.clerezza.jaxrs.extensions.RootResourceExecutor;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.Resource;
import org.apache.clerezza.rdf.core.Triple;
import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.ontologies.RDF;
import org.apache.clerezza.rdf.utils.GraphNode;
@@ -102,7 +103,7 @@ public class TypeHandlerSpace {
}
private Object getTypeHandler(String absoluteUriPath) throws ResourceMethodException {
- MGraph contentMGraph = tcManager.getMGraph(CONTENT_GRAPH_URI);
+ LockableMGraph contentMGraph = tcManager.getMGraph(CONTENT_GRAPH_URI);
UriRef uri = new UriRef(absoluteUriPath);
Set<UriRef> rdfTypes = getRdfTypesOfUriRef(contentMGraph, uri);
@@ -111,19 +112,26 @@ public class TypeHandlerSpace {
}
- private Set<UriRef> getRdfTypesOfUriRef(MGraph contentMGraph, UriRef uri) {
- Iterator<Triple> typeStmts = contentMGraph.filter(uri, RDF.type, null);
+ private Set<UriRef> getRdfTypesOfUriRef(LockableMGraph contentMGraph, UriRef uri) {
Set<UriRef> rdfTypes = new HashSet<UriRef>();
- while (typeStmts.hasNext()) {
- Triple triple = typeStmts.next();
- Resource typeStmtObj = triple.getObject();
- if (!(typeStmtObj instanceof UriRef)) {
- throw new RuntimeException(
- "RDF type is expected to be a URI but is "+typeStmtObj+
- "(in "+triple+")");
+ Lock readLock = contentMGraph.getLock().readLock();
+ readLock.lock();
+ try {
+ Iterator<Triple> typeStmts = contentMGraph.filter(uri, RDF.type, null);
+
+ while (typeStmts.hasNext()) {
+ Triple triple = typeStmts.next();
+ Resource typeStmtObj = triple.getObject();
+ if (!(typeStmtObj instanceof UriRef)) {
+ throw new RuntimeException(
+ "RDF type is expected to be a URI but is " + typeStmtObj
+ + "(in " + triple + ")");
+ }
+ UriRef rdfType = (UriRef) typeStmtObj;
+ rdfTypes.add(rdfType);
}
- UriRef rdfType = (UriRef) typeStmtObj;
- rdfTypes.add(rdfType);
+ } finally {
+ readLock.unlock();
}
return rdfTypes;
}
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/test/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpaceTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/test/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpaceTest.java?rev=990735&r1=990734&r2=990735&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/test/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpaceTest.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typehandlerspace/src/test/java/org/apache/clerezza/platform/typehandlerspace/TypeHandlerSpaceTest.java Mon Aug 30 09:13:12 2010
@@ -45,10 +45,10 @@ import org.apache.clerezza.rdf.core.even
import org.apache.clerezza.rdf.core.event.GraphListener;
import org.apache.clerezza.triaxrs.RootResourceExecutorImpl;
import org.apache.clerezza.jaxrs.testutils.TestWebServer;
-import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.Triple;
import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.access.LockableMGraph;
+import org.apache.clerezza.rdf.core.access.LockableMGraphWrapper;
import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
import org.apache.clerezza.rdf.core.impl.TripleImpl;
@@ -60,7 +60,7 @@ import org.apache.clerezza.rdf.ontologie
*/
public class TypeHandlerSpaceTest {
- private static MGraph mGraph = new SimpleMGraph();
+ private static LockableMGraph mGraph = new LockableMGraphWrapper(new SimpleMGraph());
UriRef myType = new UriRef("org.example/myType");
@@ -210,7 +210,7 @@ public class TypeHandlerSpaceTest {
@Override
public ReadWriteLock getLock() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return mGraph.getLock();
}
@Override