Author: rwesten
Date: Tue Jan 22 11:50:52 2013
New Revision: 1436847

URL: http://svn.apache.org/viewvc?rev=1436847&view=rev
Log:
fix for STANBOL-903

Modified:
    
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/model/AnalysedTextUtils.java
    
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/utils/NlpEngineHelper.java

Modified: 
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/model/AnalysedTextUtils.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/model/AnalysedTextUtils.java?rev=1436847&r1=1436846&r2=1436847&view=diff
==============================================================================
--- 
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/model/AnalysedTextUtils.java
 (original)
+++ 
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/model/AnalysedTextUtils.java
 Tue Jan 22 11:50:52 2013
@@ -1,5 +1,6 @@
 package org.apache.stanbol.enhancer.nlp.model;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EnumSet;
@@ -10,11 +11,16 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.Map.Entry;
 
+import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.stanbol.enhancer.nlp.model.Span.SpanTypeEnum;
 import org.apache.stanbol.enhancer.nlp.model.impl.SectionImpl;
 import org.apache.stanbol.enhancer.nlp.model.impl.SpanImpl;
+import org.apache.stanbol.enhancer.servicesapi.Blob;
 import org.apache.stanbol.enhancer.servicesapi.ContentItem;
+import org.apache.stanbol.enhancer.servicesapi.EngineException;
+import org.apache.stanbol.enhancer.servicesapi.EnhancementEngine;
 import org.apache.stanbol.enhancer.servicesapi.NoSuchPartException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,7 +53,7 @@ public class AnalysedTextUtils {
             ci.getLock().readLock().unlock();
         }
     }
-    
+
     /**
      * Copies the elements of the parsed iterator to a list.
      * @param iterator the iterator

Modified: 
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/utils/NlpEngineHelper.java
URL: 
http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/utils/NlpEngineHelper.java?rev=1436847&r1=1436846&r2=1436847&view=diff
==============================================================================
--- 
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/utils/NlpEngineHelper.java
 (original)
+++ 
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/utils/NlpEngineHelper.java
 Tue Jan 22 11:50:52 2013
@@ -164,12 +164,21 @@ public final class NlpEngineHelper {
                     + "ContentPart because the parsed AnalysedTextFactory is 
NULL");
             }
             Entry<UriRef,Blob> textBlob = getPlainText(engine, ci, true);
-            log.debug(" ... create new AnalysedText instance for Engine {}", 
engine.getName());
+            //we need to create
+            ci.getLock().writeLock().lock();
             try {
-                at = analysedTextFactory.createAnalysedText(ci, 
textBlob.getValue());
+                //try again to retrieve (maybe an concurrent thread has created
+                //the content part in the meantime
+                at = AnalysedTextUtils.getAnalysedText(ci);
+                if(at == null){
+                    log.debug(" ... create new AnalysedText instance for 
Engine {}", engine.getName());
+                    at = analysedTextFactory.createAnalysedText(ci, 
textBlob.getValue());
+                }
             } catch (IOException e) {
                 throw new EngineException("Unable to create AnalysetText 
instance for Blob "
                     + textBlob.getKey()+ " of ContentItem "+ci.getUri()+"!",e);
+            } finally {
+                ci.getLock().writeLock().unlock();
             }
         } else {
             log.debug(" ... use existing AnalysedText instance for Engine {}", 
engine.getName());


Reply via email to