Author: reto
Date: Tue May 28 15:41:43 2013
New Revision: 1486971

URL: http://svn.apache.org/r1486971
Log:
STANBOL-1085: changed Store interface to return LockableGraph, added locking 
were exception was reported. MOre locking might be needed.

Modified:
    
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
    stanbol/trunk/contenthub/store/solr/pom.xml
    
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java

Modified: 
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java?rev=1486971&r1=1486970&r2=1486971&view=diff
==============================================================================
--- 
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
 (original)
+++ 
stanbol/trunk/contenthub/servicesapi/src/main/java/org/apache/stanbol/contenthub/servicesapi/store/Store.java
 Tue May 28 15:41:43 2013
@@ -16,7 +16,7 @@
  */
 package org.apache.stanbol.contenthub.servicesapi.store;
 
-import org.apache.clerezza.rdf.core.MGraph;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
 import org.apache.stanbol.enhancer.servicesapi.ContentItem;
 import org.apache.stanbol.enhancer.servicesapi.helper.ContentItemHelper;
 
@@ -62,6 +62,6 @@ public interface Store {
     /**
      * Get the graph of triples of enhancements related to the content item 
from this store
      */
-    MGraph getEnhancementGraph();
+    LockableMGraph getEnhancementGraph();
 
 }

Modified: stanbol/trunk/contenthub/store/solr/pom.xml
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/contenthub/store/solr/pom.xml?rev=1486971&r1=1486970&r2=1486971&view=diff
==============================================================================
--- stanbol/trunk/contenthub/store/solr/pom.xml (original)
+++ stanbol/trunk/contenthub/store/solr/pom.xml Tue May 28 15:41:43 2013
@@ -67,7 +67,7 @@
     <dependency>
       <groupId>org.apache.stanbol</groupId>
       <artifactId>org.apache.stanbol.contenthub.servicesapi</artifactId>
-      <version>0.10.0</version>
+      <version>0.11.0-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.apache.stanbol</groupId>

Modified: 
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java?rev=1486971&r1=1486970&r2=1486971&view=diff
==============================================================================
--- 
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java
 (original)
+++ 
stanbol/trunk/contenthub/store/solr/src/main/java/org/apache/stanbol/contenthub/store/solr/SolrStoreImpl.java
 Tue May 28 15:41:43 2013
@@ -33,6 +33,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.concurrent.locks.Lock;
 
 import org.apache.clerezza.rdf.core.Literal;
 import org.apache.clerezza.rdf.core.MGraph;
@@ -40,6 +41,7 @@ import org.apache.clerezza.rdf.core.Reso
 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.sparql.ParseException;
@@ -150,9 +152,9 @@ public class SolrStoreImpl implements So
     }
 
     @Override
-    public MGraph getEnhancementGraph() {
+    public LockableMGraph getEnhancementGraph() {
         final UriRef graphUri = new UriRef(Constants.ENHANCEMENTS_GRAPH_URI);
-        MGraph enhancementGraph = null;
+        LockableMGraph enhancementGraph = null;
         try {
             enhancementGraph = tcManager.getMGraph(graphUri);
         } catch (NoSuchEntityException e) {
@@ -240,7 +242,7 @@ public class SolrStoreImpl implements So
     }
 
     private void removeEnhancements(String id) throws StoreException {
-        MGraph enhancementGraph = getEnhancementGraph();
+        LockableMGraph enhancementGraph = getEnhancementGraph();
         String enhancementQuery = QueryGenerator.getEnhancementsOfContent(id);
         SelectQuery selectQuery = null;
         try {
@@ -252,18 +254,23 @@ public class SolrStoreImpl implements So
         }
 
         List<Triple> willBeRemoved = new ArrayList<Triple>();
-        ResultSet resultSet = tcManager.executeSparqlQuery(selectQuery, 
enhancementGraph);
-        while (resultSet.hasNext()) {
-            SolutionMapping mapping = resultSet.next();
-            UriRef ref = (UriRef) mapping.get("enhID");
-            Iterator<Triple> tripleItr = 
this.getEnhancementGraph().filter(ref, null, null);
-            while (tripleItr.hasNext()) {
-                Triple triple = tripleItr.next();
-                willBeRemoved.add(triple);
+        Lock l = enhancementGraph.getLock().writeLock();
+        l.lock();
+        try {
+            ResultSet resultSet = tcManager.executeSparqlQuery(selectQuery, 
enhancementGraph);
+            while (resultSet.hasNext()) {
+                SolutionMapping mapping = resultSet.next();
+                UriRef ref = (UriRef) mapping.get("enhID");
+                Iterator<Triple> tripleItr = enhancementGraph.filter(ref, 
null, null);
+                while (tripleItr.hasNext()) {
+                    Triple triple = tripleItr.next();
+                    willBeRemoved.add(triple);
+                }
             }
+            enhancementGraph.removeAll(willBeRemoved);
+        } finally {
+            l.unlock();
         }
-
-        enhancementGraph.removeAll(willBeRemoved);
     }
 
     private void updateEnhancementGraph(ContentItem ci) throws StoreException {


Reply via email to