Author: rwesten
Date: Wed May 16 10:01:47 2012
New Revision: 1339101
URL: http://svn.apache.org/viewvc?rev=1339101&view=rev
Log:
STANBOL-583: Ensures write locks are used while writing Enhancements in the
CELI Lemmatizer engine.
In my opinnion the Lemmatizer Engine is now ready to use. However I would
really like to see unit tests for longer tests with special chars to ensure the
absence of similar issues as for the CELI NER engine before giving a final
green light.
Modified:
incubator/stanbol/branches/celi-enhancement-engines/engines/celi/src/main/java/org/apache/stanbol/enhancer/engines/celi/lemmatizer/impl/CeliLemmatizerEnhancementEngine.java
Modified:
incubator/stanbol/branches/celi-enhancement-engines/engines/celi/src/main/java/org/apache/stanbol/enhancer/engines/celi/lemmatizer/impl/CeliLemmatizerEnhancementEngine.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/branches/celi-enhancement-engines/engines/celi/src/main/java/org/apache/stanbol/enhancer/engines/celi/lemmatizer/impl/CeliLemmatizerEnhancementEngine.java?rev=1339101&r1=1339100&r2=1339101&view=diff
==============================================================================
---
incubator/stanbol/branches/celi-enhancement-engines/engines/celi/src/main/java/org/apache/stanbol/enhancer/engines/celi/lemmatizer/impl/CeliLemmatizerEnhancementEngine.java
(original)
+++
incubator/stanbol/branches/celi-enhancement-engines/engines/celi/src/main/java/org/apache/stanbol/enhancer/engines/celi/lemmatizer/impl/CeliLemmatizerEnhancementEngine.java
Wed May 16 10:01:47 2012
@@ -187,13 +187,24 @@ public class CeliLemmatizerEnhancementEn
return;
}
- try {
-
- MGraph g = ci.getMetadata();
- LiteralFactory literalFactory =
LiteralFactory.getInstance();
+ MGraph g = ci.getMetadata();
+ LiteralFactory literalFactory = LiteralFactory.getInstance();
- if (this.completeMorphoAnalysis) {
- List<LexicalEntry> terms =
this.client.performMorfologicalAnalysis(text, language);
+ if (this.completeMorphoAnalysis) {
+ List<LexicalEntry> terms;
+ try {
+ terms = this.client.performMorfologicalAnalysis(text,
language);
+ } catch (IOException e) {
+ throw new EngineException("Error while calling the CELI
Lemmatizer"
+ +" service (configured URL: "
+ +serviceURL+")!",e);
+ } catch (SOAPException e) {
+ throw new EngineException("Error wile encoding/decoding the
request/"
+ +"response to the CELI lemmatizer service!",e);
+ }
+ //get a write lock before writing the enhancements
+ ci.getLock().writeLock().lock();
+ try {
for (LexicalEntry le : terms) {
if(!le.termReadings.isEmpty()){
UriRef textAnnotation =
EnhancementEngineHelper.createTextEnhancement(ci, this);
@@ -215,22 +226,31 @@ public class CeliLemmatizerEnhancementEn
}
} //TODO: check if it is OK to ignore
lexical entries with no readings
}
- } else {
- String lemmatizedContents =
this.client.lemmatizeContents(text, language);
-
+ } finally {
+ ci.getLock().writeLock().unlock();
+ }
+ } else {
+ String lemmatizedContents;
+ try {
+ lemmatizedContents = this.client.lemmatizeContents(text,
language);
+ } catch (IOException e) {
+ throw new EngineException("Error while calling the CELI
Lemmatizer"
+ +" service (configured URL: "
+ +serviceURL+")!",e);
+ } catch (SOAPException e) {
+ throw new EngineException("Error wile encoding/decoding the
request/"
+ +"response to the CELI lemmatizer service!",e);
+ }
+ //get a write lock before writing the enhancements
+ ci.getLock().writeLock().lock();
+ try {
UriRef textEnhancement =
EnhancementEngineHelper.createTextEnhancement(ci, this);
g.add(new TripleImpl(textEnhancement,
hasLemmaForm,
new
PlainLiteralImpl(lemmatizedContents,lang)));
- }
- } catch (IOException e) {
- throw new EngineException("Error while calling the CELI Lemmatizer"
- +" service (configured URL: "
- +serviceURL+")!",e);
- } catch (SOAPException e) {
- throw new EngineException("Error wile encoding/decoding the
request/"
- +"response to the CELI lemmatizer service!",e);
- }
-
+ } finally {
+ ci.getLock().writeLock().unlock();
+ }
+ }
}
private boolean isLangSupported(String language) {