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());