clerezza-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ha...@apache.org
Subject svn commit: r1058845 - /incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java
Date Fri, 14 Jan 2011 03:11:46 GMT
Author: hasan
Date: Fri Jan 14 03:11:45 2011
New Revision: 1058845

URL: http://svn.apache.org/viewvc?rev=1058845&view=rev
Log:
CLEREZZA-396: added missing lock and improved code

Modified:
    incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java?rev=1058845&r1=1058844&r2=1058845&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java
(original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.web/org.apache.clerezza.rdf.web.core/src/main/java/org/apache/clerezza/rdf/web/core/WebAccess.java
Fri Jan 14 03:11:45 2011
@@ -1,26 +1,28 @@
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
+ * or more contributor license agreements.
+ * See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
  */
 package org.apache.clerezza.rdf.web.core;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.security.AccessController;
+import java.util.concurrent.locks.Lock;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
@@ -48,6 +50,7 @@ import org.slf4j.LoggerFactory;
 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.access.LockableMGraph;
 import org.apache.clerezza.rdf.core.access.NoSuchEntityException;
 import org.apache.clerezza.rdf.core.access.TcManager;
 import org.apache.clerezza.rdf.core.serializedform.Parser;
@@ -87,7 +90,7 @@ public class WebAccess {
 					.type(MediaType.TEXT_PLAIN_TYPE).build();
 			throw new WebApplicationException(r);
 		}
-		TripleCollection result =  tcManager.getTriples(name);
+		TripleCollection result = tcManager.getTriples(name);
 		logger.debug("Got graph of size {} ", result.size());
 		int i = 1;
 		if (logger.isDebugEnabled()) {
@@ -111,14 +114,20 @@ public class WebAccess {
 	@PUT
 	public void putTriples(@QueryParam("name") UriRef name, TripleCollection triples) {
 		AccessController.checkPermission(new WebAccessPermission());
-		TripleCollection tc;
+		LockableMGraph mGraph;
 		try {
-			tc = tcManager.getTriples(name);
-			tc.clear();
+			mGraph = tcManager.getMGraph(name);
 		} catch (NoSuchEntityException e) {
-			tc = tcManager.createMGraph(name);
+			mGraph = tcManager.createMGraph(name);
+		}
+		Lock writeLock = mGraph.getLock().writeLock();
+		writeLock.lock();
+		try {
+			mGraph.clear();
+			mGraph.addAll(triples);
+		} finally {
+			writeLock.unlock();
 		}
-		tc.addAll(triples);
 	}
 
 	/**
@@ -160,38 +169,44 @@ public class WebAccess {
 		if (graph == null || (graph.length == 0)) {
 			responseWithBadRequest("no triples uploaded");
 		}
-		InputStream is = new ByteArrayInputStream(graph);
-
 		MediaType mediaType = formFile.getMediaType();
 		if (mediaType == null) {
 			responseWithBadRequest("mime-type not specified");
 		}
-		Graph parsedGraph = parser.parse(is, mediaType.toString());
-
 		String graphName = getFirstTextParameterValue(form, "name", true);
 		if (graphName == null) {
 			responseWithBadRequest("graph name not specified");
 		}
+		String mode = getFirstTextParameterValue(form, "mode", false);
+		if (mode != null) {
+			if (!(mode.equals("replace") || mode.equals("append"))) {
+				responseWithBadRequest("unknown mode");
+			}
+		} else {
+			mode = "append";
+		}
+		InputStream is = new ByteArrayInputStream(graph);
+		Graph parsedGraph = parser.parse(is, mediaType.toString());
 		UriRef graphUri = new UriRef(graphName);
-		TripleCollection tc;
+		LockableMGraph mGraph;
 		boolean newGraph = false;
 		try {
-			tc = tcManager.getTriples(graphUri);
-			String mode = getFirstTextParameterValue(form, "mode", false);
-			if (mode != null) {
-				if (mode.equals("replace")) {
-					tc.clear();
-				} else if (!mode.equals("append")) {
-					responseWithBadRequest("unknown mode");
-				}
-			}
+			mGraph = tcManager.getMGraph(graphUri);
 		} catch (NoSuchEntityException e) {
-			tc = tcManager.createMGraph(graphUri);
+			mGraph = tcManager.createMGraph(graphUri);
 			newGraph = true;
 		}
-		tc.addAll(parsedGraph);
-		String redirection = getFirstTextParameterValue(form, "redirection",
-				false);
+		Lock writeLock = mGraph.getLock().writeLock();
+		writeLock.lock();
+		try {
+			if (!newGraph && mode.equals("replace")) {
+				mGraph.clear();
+			}
+			mGraph.addAll(parsedGraph);
+		} finally {
+			writeLock.unlock();
+		}
+		String redirection = getFirstTextParameterValue(form, "redirection", false);
 		if (redirection == null) {
 			if (newGraph) {
 				return Response.status(Status.CREATED).build();



Mime
View raw message