You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2014/01/20 09:38:05 UTC
svn commit: r1559644 - in /stanbol/trunk/enhancer/generic:
nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/
nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/
nlp/src/main/java/org/apache/stanbol/enhancer/...
Author: rwesten
Date: Mon Jan 20 08:38:04 2014
New Revision: 1559644
URL: http://svn.apache.org/r1559644
Log:
STANBOL-1132: Applied patch provided by Cristian Petroaca on the 11.Januray to this issue
Modified:
stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java
stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java
stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java
stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java
stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java
stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java
stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java
Modified: stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java Mon Jan 20 08:38:04 2014
@@ -15,7 +15,6 @@
* limitations under the License.
*/package org.apache.stanbol.enhancer.nlp.json.valuetype.impl;
-import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -53,24 +52,21 @@ public class CorefFeatureSupport impleme
jCoref.put(IS_REPRESENTATIVE_TAG, coref.isRepresentative());
- Set<Span> mentions = coref.getMentions();
+ Set<Span> mentions = coref.getMentions();
+ ArrayNode jMentions = mapper.createArrayNode();
- if(!mentions.isEmpty()) {
- ArrayNode jMentions = mapper.createArrayNode();
+ for(Span mention : mentions) {
+ ObjectNode jMention = mapper.createObjectNode();
- for(Span mention : mentions) {
- ObjectNode jMention = mapper.createObjectNode();
-
- jMention.put(MENTION_TYPE_TAG, mention.getType().toString());
- jMention.put(MENTION_START_TAG, mention.getStart());
- jMention.put(MENTION_END_TAG, mention.getEnd());
-
- jMentions.add(jMention);
- }
+ jMention.put(MENTION_TYPE_TAG, mention.getType().toString());
+ jMention.put(MENTION_START_TAG, mention.getStart());
+ jMention.put(MENTION_END_TAG, mention.getEnd());
- jCoref.put(MENTIONS_TAG, jMentions);
+ jMentions.add(jMention);
}
+ jCoref.put(MENTIONS_TAG, jMentions);
+
return jCoref;
}
@@ -121,7 +117,7 @@ public class CorefFeatureSupport impleme
}
}
}
-
- return new CorefFeature(jIsRepresentative.asBoolean(), Collections.unmodifiableSet(mentions));
+
+ return new CorefFeature(jIsRepresentative.asBoolean(), mentions);
}
}
\ No newline at end of file
Modified: stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java Mon Jan 20 08:38:04 2014
@@ -41,7 +41,7 @@ public class DependencyRelationSupport i
private static final String RELATION_TYPE_TAG = "tag";
private static final String RELATION_STANBOL_TYPE_TAG = "relationType";
- private static final String RELATION_IS_DEPENDEE_TAG = "isDependent";
+ private static final String RELATION_IS_DEPENDENT_TAG = "isDependent";
private static final String RELATION_PARTNER_TYPE_TAG = "partnerType";
private static final String RELATION_PARTNER_START_TAG = "partnerStart";
private static final String RELATION_PARTNER_END_TAG = "partnerEnd";
@@ -54,7 +54,7 @@ public class DependencyRelationSupport i
GrammaticalRelationTag gramRelTag = relation.getGrammaticalRelationTag();
jDependencyRelation.put(RELATION_TYPE_TAG, gramRelTag.getTag());
jDependencyRelation.put(RELATION_STANBOL_TYPE_TAG, gramRelTag.getGrammaticalRelation().ordinal());
- jDependencyRelation.put(RELATION_IS_DEPENDEE_TAG, (relation.isDependent()));
+ jDependencyRelation.put(RELATION_IS_DEPENDENT_TAG, (relation.isDependent()));
Span partner = relation.getPartner();
if (partner != null) {
@@ -90,7 +90,7 @@ public class DependencyRelationSupport i
GrammaticalRelationTag gramRelTag = new GrammaticalRelationTag(tag.getTextValue(),
grammaticalRelation);
- JsonNode isDependent = jDependencyRelation.path(RELATION_IS_DEPENDEE_TAG);
+ JsonNode isDependent = jDependencyRelation.path(RELATION_IS_DEPENDENT_TAG);
if (!isDependent.isBoolean()) {
throw new IllegalStateException("Field 'isDependent' must have a true/false format");
Modified: stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java Mon Jan 20 08:38:04 2014
@@ -81,11 +81,11 @@ public class CorefFeatureSupportTest ext
Set<Span> obamaMentions = new HashSet<Span>();
obamaMentions.add(he);
obama.addAnnotation(NlpAnnotations.COREF_ANNOTATION,
- Value.value(new CorefFeature(true, Collections.unmodifiableSet(obamaMentions))));
+ Value.value(new CorefFeature(true, obamaMentions)));
Set<Span> heMentions = new HashSet<Span>();
heMentions.add(obama);
he.addAnnotation(NlpAnnotations.COREF_ANNOTATION,
- Value.value(new CorefFeature(false, Collections.unmodifiableSet(heMentions))));
+ Value.value(new CorefFeature(false, heMentions)));
}
}
Modified: stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java (original)
+++ stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java Mon Jan 20 08:38:04 2014
@@ -2,7 +2,6 @@ package org.apache.stanbol.enhancer.nlp.
import java.io.IOException;
-import org.apache.commons.io.FilenameUtils;
import org.apache.stanbol.enhancer.nlp.NlpAnnotations;
import org.apache.stanbol.enhancer.nlp.dependency.DependencyRelation;
import org.apache.stanbol.enhancer.nlp.dependency.GrammaticalRelation;
@@ -25,7 +24,7 @@ public class DependencyRelationSupportTe
+ " \"end\" : 5," + LINE_SEPARATOR
+ " \"stanbol.enhancer.nlp.dependency\" : {" + LINE_SEPARATOR
+ " \"tag\" : \"nsubj\"," + LINE_SEPARATOR
- + " \"relationType\" : 32," + LINE_SEPARATOR
+ + " \"relationType\" : 33," + LINE_SEPARATOR
+ " \"isDependent\" : true," + LINE_SEPARATOR
+ " \"partnerType\" : \"Token\"," + LINE_SEPARATOR
+ " \"partnerStart\" : 6," + LINE_SEPARATOR
@@ -40,7 +39,7 @@ public class DependencyRelationSupportTe
+ " \"end\" : 13," + LINE_SEPARATOR
+ " \"stanbol.enhancer.nlp.dependency\" : [ {" + LINE_SEPARATOR
+ " \"tag\" : \"root\"," + LINE_SEPARATOR
- + " \"relationType\" : 56," + LINE_SEPARATOR
+ + " \"relationType\" : 57," + LINE_SEPARATOR
+ " \"isDependent\" : true," + LINE_SEPARATOR
+ " \"partnerType\" : \"ROOT\"," + LINE_SEPARATOR
+ " \"partnerStart\" : 0," + LINE_SEPARATOR
@@ -48,7 +47,7 @@ public class DependencyRelationSupportTe
+ " \"class\" : \"org.apache.stanbol.enhancer.nlp.dependency.DependencyRelation\"" + LINE_SEPARATOR
+ " }, {" + LINE_SEPARATOR
+ " \"tag\" : \"nsubj\"," + LINE_SEPARATOR
- + " \"relationType\" : 32," + LINE_SEPARATOR
+ + " \"relationType\" : 33," + LINE_SEPARATOR
+ " \"isDependent\" : false," + LINE_SEPARATOR
+ " \"partnerType\" : \"Token\"," + LINE_SEPARATOR
+ " \"partnerStart\" : 0," + LINE_SEPARATOR
Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java (original)
+++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java Mon Jan 20 08:38:04 2014
@@ -42,19 +42,13 @@ public class CorefFeature {
*/
private Set<Span> mentions;
- public CorefFeature() {
- this(false, Collections.unmodifiableSet(Collections
- .<Span> emptySet()));
- }
-
- public CorefFeature(boolean isRepresentative) {
- this(isRepresentative, Collections.unmodifiableSet(Collections
- .<Span> emptySet()));
- }
-
public CorefFeature(boolean isRepresentative, Set<Span> mentions) {
+ if (mentions == null || mentions.isEmpty()) {
+ throw new IllegalArgumentException("The mentions set cannot be null or empty");
+ }
+
this.isRepresentative = isRepresentative;
- this.mentions = mentions;
+ this.mentions = Collections.unmodifiableSet(mentions);
}
/**
@@ -78,11 +72,25 @@ public class CorefFeature {
}
public int hashCode() {
- return (this.mentions != null) ? this.mentions.hashCode() : 0;
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (isRepresentative ? 1231 : 1237);
+ result = prime * result + mentions.hashCode();
+
+ return result;
}
public boolean equals(Object obj) {
- return (obj instanceof CorefFeature)
- && (this.mentions.equals(((CorefFeature) obj).getMentions()));
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+
+ CorefFeature other = (CorefFeature) obj;
+
+ return (isRepresentative == other.isRepresentative)
+ && (mentions.equals(other.mentions));
}
}
Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java (original)
+++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java Mon Jan 20 08:38:04 2014
@@ -45,6 +45,10 @@ public class DependencyRelation {
public DependencyRelation(GrammaticalRelationTag grammaticalRelationTag, boolean isDependent,
Span partner) {
+ if (grammaticalRelationTag == null) {
+ throw new IllegalArgumentException("The grammatical relation tag cannot be null");
+ }
+
this.grammaticalRelationTag = grammaticalRelationTag;
this.isDependent = isDependent;
this.partner = partner;
@@ -61,17 +65,12 @@ public class DependencyRelation {
public Span getPartner() {
return this.partner;
}
-
- public void setPartner(Span partner) {
- this.partner = partner;
- }
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((grammaticalRelationTag == null) ? 0
- : grammaticalRelationTag.hashCode());
+ result = prime * result + grammaticalRelationTag.hashCode();
result = prime * result + (isDependent ? 1231 : 1237);
result = prime * result + ((partner == null) ? 0 : partner.hashCode());
return result;
@@ -85,19 +84,16 @@ public class DependencyRelation {
return false;
if (getClass() != obj.getClass())
return false;
+
DependencyRelation other = (DependencyRelation) obj;
- if (grammaticalRelationTag == null) {
- if (other.grammaticalRelationTag != null)
- return false;
- } else if (!grammaticalRelationTag.equals(other.grammaticalRelationTag))
- return false;
- if (isDependent != other.isDependent)
- return false;
+
if (partner == null) {
if (other.partner != null)
return false;
} else if (!partner.equals(other.partner))
return false;
- return true;
+
+ return (grammaticalRelationTag.equals(other.grammaticalRelationTag))
+ && (isDependent == other.isDependent);
}
}
Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java (original)
+++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java Mon Jan 20 08:38:04 2014
@@ -214,6 +214,17 @@ public enum GrammaticalRelation {
* raise)
*/
DirectObject(Object),
+
+ /**
+ * The "discourse element" grammatical relation. This is used for interjections and
+ * other discourse particles and elements (which are not clearly linked to the structure
+ * of the sentence, except in an expressive way). We generally follow the
+ * guidelines of what the Penn Treebanks count as an INTJ. They
+ * define this to include: interjections (oh, uh-huh, Welcome), fillers (um, ah),
+ * and discourse markers (well, like, actually, but not: you know).
+ * We also use it for emoticons.
+ */
+ Discourse(Modifier),
/**
* This relation captures an existential "there". The main verb of
Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java (original)
+++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java Mon Jan 20 08:38:04 2014
@@ -39,6 +39,10 @@ public class GrammaticalRelationTag exte
GrammaticalRelation grammaticalRelation) {
this(tag);
+ if (grammaticalRelation == null) {
+ throw new IllegalArgumentException("The grammatical relation cannot be null");
+ }
+
this.grammaticalRelation = grammaticalRelation;
}
@@ -48,7 +52,11 @@ public class GrammaticalRelationTag exte
@Override
public int hashCode() {
- return super.hashCode() + grammaticalRelation.hashCode();
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + grammaticalRelation.hashCode();
+
+ return result;
}
@Override
Modified: stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java (original)
+++ stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java Mon Jan 20 08:38:04 2014
@@ -39,6 +39,8 @@ public interface ContentItem {
* The binary content stream. Shortcut for
* <code>{@link #getBlob()}{@link Blob#getStream() .getStream()}</code>
* @return the InputStream
+ * @deprecated use <code>{@link #getBlob()}{@link Blob#getStream() .getStream()}</code>
+ * instead
*/
InputStream getStream();
@@ -46,6 +48,8 @@ public interface ContentItem {
* The MimeType. Shortcut for
* <code>{@link #getBlob()}{@link Blob#getMimeType() .getMimeType()}</code>.
* @return the MimeType as string
+ * @deprecated use <code>{@link #getBlob()}{@link Blob#getMimeType() .getMimeType()}</code>
+ * instead
*/
String getMimeType();
Modified: stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java?rev=1559644&r1=1559643&r2=1559644&view=diff
==============================================================================
--- stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java (original)
+++ stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java Mon Jan 20 08:38:04 2014
@@ -16,6 +16,8 @@
*/
package org.apache.stanbol.enhancer.servicesapi;
+import java.util.Map;
+
/**
* Interface to internal or external semantic enhancement engines. There will
* usually be several of those, that the EnhancementJobManager uses to enhance
@@ -36,13 +38,13 @@ public interface EnhancementEngine {
/**
* Return value for {@link #canEnhance}, meaning this engine can enhance
* supplied {@link ContentItem}, and suggests enhancing it synchronously
- * instead of queuing a request for enhancement.
+ * instead of queueing a request for enhancement.
*/
int ENHANCE_SYNCHRONOUS = 1;
/**
* Return value for {@link #canEnhance}, meaning this engine can enhance
- * supplied {@link ContentItem}, and suggests queuing a request for
+ * supplied {@link ContentItem}, and suggests queueing a request for
* enhancement instead of enhancing it synchronously.
*/
int ENHANCE_ASYNC = 2;
@@ -52,23 +54,46 @@ public interface EnhancementEngine {
* suggests enhancing it synchronously or asynchronously. The
* {@link EnhancementJobManager} can force sync/async mode if desired, it is
* just a suggestion from the engine.
+ * <p>
+ * This method is expected to execute fast and MUST NOT change the parsed
+ * {@link ContentItem}. It is called with a read lock on the ContentItem.
+ * <p>
+ * <b>NOTE:</b> Returning {@link #CANNOT_ENHANCE} will cause the
+ * {@link EnhancementJobManager} to skip the execution of this Engine. If
+ * an {@link EngineException} is thrown the executed {@link Chain} will
+ * fail (unless this engine is marked as OPTIONAL).
+ *
+ * @param ci The ContentItem to enhance
+ * @param context The enhancement context: Request specific parameters
*
* @throws EngineException if the introspecting process of the content item
* fails
*/
int canEnhance(ContentItem ci) throws EngineException;
+ //int canEnhance(ContentItem ci, Map<String,Object> context) throws EngineException;
/**
* Compute enhancements for supplied ContentItem. The results of the process
- * are expected to be stored in the metadata of the content item.
+ * are expected to be stored in the {@link ContentItem#getMetadata() metadata
+ * of the content item} or by adding/modifying any contentPart.<p>
+ * Engines that do support {@link #ENHANCE_ASYNC} are required to use the
+ * {@link ContentItem#getLock()} to acquire read/write locks when reading/
+ * modifying information of the {@link ContentItem}. For Engines that that
+ * do use {@link #ENHANCE_SYNCHRONOUS} the {@link EnhancementJobManager}
+ * is responsible to acquire a write lock before calling this method.
+ * <p>
+ * <b>NOTE</b>: If an EnhancementEngine can not extract any information it
+ * is expected to return. In case an error is encountered during processing
+ * an {@link EngineException} need to be thrown.
*
- * The client (usually an {@link EnhancementJobManager}) should take care of
- * persistent storage of the enhanced {@link ContentItem}.
+ * @param ci The ContentItem to enhance
+ * @param context The enhancement context: Request specific parameters
*
* @throws EngineException if the underlying process failed to work as
* expected
*/
void computeEnhancements(ContentItem ci) throws EngineException;
+ //void computeEnhancements(ContentItem ci, Map<String,Object> context) throws EngineException;
/**
* Getter for the name of this EnhancementEngine instance as configured
* by {@link #PROPERTY_NAME}
Re: svn commit: r1559644 - in /stanbol/trunk/enhancer/generic:
nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/
nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/ nlp/src/main/java/org/apache/stanbol/enhancer/...
Posted by Rupert Westenthaler <ru...@gmail.com>.
FYI: With revision 1559644 I unintentionally committed changes to the
following two files.
stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java
stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java
Those where originating from some test regarding EnhancementProperties
(a feature paned for 1.0.0 at a later point in time). I reverted most
of those changes with 1559645 [2]. The only thing I kept are
improvements to the JavaDoc.
best
Rupert
[1] http://svn.apache.org/r1559644
[2] http://svn.apache.org/r1559645
On Mon, Jan 20, 2014 at 9:38 AM, <rw...@apache.org> wrote:
> Author: rwesten
> Date: Mon Jan 20 08:38:04 2014
> New Revision: 1559644
>
> URL: http://svn.apache.org/r1559644
> Log:
> STANBOL-1132: Applied patch provided by Cristian Petroaca on the 11.Januray to this issue
>
> Modified:
> stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java
> stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java
> stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java
> stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java
> stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java
> stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java
> stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java
> stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java
> stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java
> stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java
>
> Modified: stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/CorefFeatureSupport.java Mon Jan 20 08:38:04 2014
> @@ -15,7 +15,6 @@
> * limitations under the License.
> */package org.apache.stanbol.enhancer.nlp.json.valuetype.impl;
>
> -import java.util.Collections;
> import java.util.HashSet;
> import java.util.Set;
>
> @@ -53,24 +52,21 @@ public class CorefFeatureSupport impleme
>
> jCoref.put(IS_REPRESENTATIVE_TAG, coref.isRepresentative());
>
> - Set<Span> mentions = coref.getMentions();
> + Set<Span> mentions = coref.getMentions();
> + ArrayNode jMentions = mapper.createArrayNode();
>
> - if(!mentions.isEmpty()) {
> - ArrayNode jMentions = mapper.createArrayNode();
> + for(Span mention : mentions) {
> + ObjectNode jMention = mapper.createObjectNode();
>
> - for(Span mention : mentions) {
> - ObjectNode jMention = mapper.createObjectNode();
> -
> - jMention.put(MENTION_TYPE_TAG, mention.getType().toString());
> - jMention.put(MENTION_START_TAG, mention.getStart());
> - jMention.put(MENTION_END_TAG, mention.getEnd());
> -
> - jMentions.add(jMention);
> - }
> + jMention.put(MENTION_TYPE_TAG, mention.getType().toString());
> + jMention.put(MENTION_START_TAG, mention.getStart());
> + jMention.put(MENTION_END_TAG, mention.getEnd());
>
> - jCoref.put(MENTIONS_TAG, jMentions);
> + jMentions.add(jMention);
> }
>
> + jCoref.put(MENTIONS_TAG, jMentions);
> +
> return jCoref;
> }
>
> @@ -121,7 +117,7 @@ public class CorefFeatureSupport impleme
> }
> }
> }
> -
> - return new CorefFeature(jIsRepresentative.asBoolean(), Collections.unmodifiableSet(mentions));
> +
> + return new CorefFeature(jIsRepresentative.asBoolean(), mentions);
> }
> }
> \ No newline at end of file
>
> Modified: stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp-json/src/main/java/org/apache/stanbol/enhancer/nlp/json/valuetype/impl/DependencyRelationSupport.java Mon Jan 20 08:38:04 2014
> @@ -41,7 +41,7 @@ public class DependencyRelationSupport i
>
> private static final String RELATION_TYPE_TAG = "tag";
> private static final String RELATION_STANBOL_TYPE_TAG = "relationType";
> - private static final String RELATION_IS_DEPENDEE_TAG = "isDependent";
> + private static final String RELATION_IS_DEPENDENT_TAG = "isDependent";
> private static final String RELATION_PARTNER_TYPE_TAG = "partnerType";
> private static final String RELATION_PARTNER_START_TAG = "partnerStart";
> private static final String RELATION_PARTNER_END_TAG = "partnerEnd";
> @@ -54,7 +54,7 @@ public class DependencyRelationSupport i
> GrammaticalRelationTag gramRelTag = relation.getGrammaticalRelationTag();
> jDependencyRelation.put(RELATION_TYPE_TAG, gramRelTag.getTag());
> jDependencyRelation.put(RELATION_STANBOL_TYPE_TAG, gramRelTag.getGrammaticalRelation().ordinal());
> - jDependencyRelation.put(RELATION_IS_DEPENDEE_TAG, (relation.isDependent()));
> + jDependencyRelation.put(RELATION_IS_DEPENDENT_TAG, (relation.isDependent()));
>
> Span partner = relation.getPartner();
> if (partner != null) {
> @@ -90,7 +90,7 @@ public class DependencyRelationSupport i
> GrammaticalRelationTag gramRelTag = new GrammaticalRelationTag(tag.getTextValue(),
> grammaticalRelation);
>
> - JsonNode isDependent = jDependencyRelation.path(RELATION_IS_DEPENDEE_TAG);
> + JsonNode isDependent = jDependencyRelation.path(RELATION_IS_DEPENDENT_TAG);
>
> if (!isDependent.isBoolean()) {
> throw new IllegalStateException("Field 'isDependent' must have a true/false format");
>
> Modified: stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/CorefFeatureSupportTest.java Mon Jan 20 08:38:04 2014
> @@ -81,11 +81,11 @@ public class CorefFeatureSupportTest ext
> Set<Span> obamaMentions = new HashSet<Span>();
> obamaMentions.add(he);
> obama.addAnnotation(NlpAnnotations.COREF_ANNOTATION,
> - Value.value(new CorefFeature(true, Collections.unmodifiableSet(obamaMentions))));
> + Value.value(new CorefFeature(true, obamaMentions)));
>
> Set<Span> heMentions = new HashSet<Span>();
> heMentions.add(obama);
> he.addAnnotation(NlpAnnotations.COREF_ANNOTATION,
> - Value.value(new CorefFeature(false, Collections.unmodifiableSet(heMentions))));
> + Value.value(new CorefFeature(false, heMentions)));
> }
> }
>
> Modified: stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp-json/src/test/java/org/apache/stanbol/enhancer/nlp/json/valuetype/DependencyRelationSupportTest.java Mon Jan 20 08:38:04 2014
> @@ -2,7 +2,6 @@ package org.apache.stanbol.enhancer.nlp.
>
> import java.io.IOException;
>
> -import org.apache.commons.io.FilenameUtils;
> import org.apache.stanbol.enhancer.nlp.NlpAnnotations;
> import org.apache.stanbol.enhancer.nlp.dependency.DependencyRelation;
> import org.apache.stanbol.enhancer.nlp.dependency.GrammaticalRelation;
> @@ -25,7 +24,7 @@ public class DependencyRelationSupportTe
> + " \"end\" : 5," + LINE_SEPARATOR
> + " \"stanbol.enhancer.nlp.dependency\" : {" + LINE_SEPARATOR
> + " \"tag\" : \"nsubj\"," + LINE_SEPARATOR
> - + " \"relationType\" : 32," + LINE_SEPARATOR
> + + " \"relationType\" : 33," + LINE_SEPARATOR
> + " \"isDependent\" : true," + LINE_SEPARATOR
> + " \"partnerType\" : \"Token\"," + LINE_SEPARATOR
> + " \"partnerStart\" : 6," + LINE_SEPARATOR
> @@ -40,7 +39,7 @@ public class DependencyRelationSupportTe
> + " \"end\" : 13," + LINE_SEPARATOR
> + " \"stanbol.enhancer.nlp.dependency\" : [ {" + LINE_SEPARATOR
> + " \"tag\" : \"root\"," + LINE_SEPARATOR
> - + " \"relationType\" : 56," + LINE_SEPARATOR
> + + " \"relationType\" : 57," + LINE_SEPARATOR
> + " \"isDependent\" : true," + LINE_SEPARATOR
> + " \"partnerType\" : \"ROOT\"," + LINE_SEPARATOR
> + " \"partnerStart\" : 0," + LINE_SEPARATOR
> @@ -48,7 +47,7 @@ public class DependencyRelationSupportTe
> + " \"class\" : \"org.apache.stanbol.enhancer.nlp.dependency.DependencyRelation\"" + LINE_SEPARATOR
> + " }, {" + LINE_SEPARATOR
> + " \"tag\" : \"nsubj\"," + LINE_SEPARATOR
> - + " \"relationType\" : 32," + LINE_SEPARATOR
> + + " \"relationType\" : 33," + LINE_SEPARATOR
> + " \"isDependent\" : false," + LINE_SEPARATOR
> + " \"partnerType\" : \"Token\"," + LINE_SEPARATOR
> + " \"partnerStart\" : 0," + LINE_SEPARATOR
>
> Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/coref/CorefFeature.java Mon Jan 20 08:38:04 2014
> @@ -42,19 +42,13 @@ public class CorefFeature {
> */
> private Set<Span> mentions;
>
> - public CorefFeature() {
> - this(false, Collections.unmodifiableSet(Collections
> - .<Span> emptySet()));
> - }
> -
> - public CorefFeature(boolean isRepresentative) {
> - this(isRepresentative, Collections.unmodifiableSet(Collections
> - .<Span> emptySet()));
> - }
> -
> public CorefFeature(boolean isRepresentative, Set<Span> mentions) {
> + if (mentions == null || mentions.isEmpty()) {
> + throw new IllegalArgumentException("The mentions set cannot be null or empty");
> + }
> +
> this.isRepresentative = isRepresentative;
> - this.mentions = mentions;
> + this.mentions = Collections.unmodifiableSet(mentions);
> }
>
> /**
> @@ -78,11 +72,25 @@ public class CorefFeature {
> }
>
> public int hashCode() {
> - return (this.mentions != null) ? this.mentions.hashCode() : 0;
> + final int prime = 31;
> + int result = 1;
> + result = prime * result + (isRepresentative ? 1231 : 1237);
> + result = prime * result + mentions.hashCode();
> +
> + return result;
> }
>
> public boolean equals(Object obj) {
> - return (obj instanceof CorefFeature)
> - && (this.mentions.equals(((CorefFeature) obj).getMentions()));
> + if (this == obj)
> + return true;
> + if (obj == null)
> + return false;
> + if (getClass() != obj.getClass())
> + return false;
> +
> + CorefFeature other = (CorefFeature) obj;
> +
> + return (isRepresentative == other.isRepresentative)
> + && (mentions.equals(other.mentions));
> }
> }
>
> Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/DependencyRelation.java Mon Jan 20 08:38:04 2014
> @@ -45,6 +45,10 @@ public class DependencyRelation {
>
> public DependencyRelation(GrammaticalRelationTag grammaticalRelationTag, boolean isDependent,
> Span partner) {
> + if (grammaticalRelationTag == null) {
> + throw new IllegalArgumentException("The grammatical relation tag cannot be null");
> + }
> +
> this.grammaticalRelationTag = grammaticalRelationTag;
> this.isDependent = isDependent;
> this.partner = partner;
> @@ -61,17 +65,12 @@ public class DependencyRelation {
> public Span getPartner() {
> return this.partner;
> }
> -
> - public void setPartner(Span partner) {
> - this.partner = partner;
> - }
>
> @Override
> public int hashCode() {
> final int prime = 31;
> int result = 1;
> - result = prime * result + ((grammaticalRelationTag == null) ? 0
> - : grammaticalRelationTag.hashCode());
> + result = prime * result + grammaticalRelationTag.hashCode();
> result = prime * result + (isDependent ? 1231 : 1237);
> result = prime * result + ((partner == null) ? 0 : partner.hashCode());
> return result;
> @@ -85,19 +84,16 @@ public class DependencyRelation {
> return false;
> if (getClass() != obj.getClass())
> return false;
> +
> DependencyRelation other = (DependencyRelation) obj;
> - if (grammaticalRelationTag == null) {
> - if (other.grammaticalRelationTag != null)
> - return false;
> - } else if (!grammaticalRelationTag.equals(other.grammaticalRelationTag))
> - return false;
> - if (isDependent != other.isDependent)
> - return false;
> +
> if (partner == null) {
> if (other.partner != null)
> return false;
> } else if (!partner.equals(other.partner))
> return false;
> - return true;
> +
> + return (grammaticalRelationTag.equals(other.grammaticalRelationTag))
> + && (isDependent == other.isDependent);
> }
> }
>
> Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelation.java Mon Jan 20 08:38:04 2014
> @@ -214,6 +214,17 @@ public enum GrammaticalRelation {
> * raise)
> */
> DirectObject(Object),
> +
> + /**
> + * The "discourse element" grammatical relation. This is used for interjections and
> + * other discourse particles and elements (which are not clearly linked to the structure
> + * of the sentence, except in an expressive way). We generally follow the
> + * guidelines of what the Penn Treebanks count as an INTJ. They
> + * define this to include: interjections (oh, uh-huh, Welcome), fillers (um, ah),
> + * and discourse markers (well, like, actually, but not: you know).
> + * We also use it for emoticons.
> + */
> + Discourse(Modifier),
>
> /**
> * This relation captures an existential "there". The main verb of
>
> Modified: stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java (original)
> +++ stanbol/trunk/enhancer/generic/nlp/src/main/java/org/apache/stanbol/enhancer/nlp/dependency/GrammaticalRelationTag.java Mon Jan 20 08:38:04 2014
> @@ -39,6 +39,10 @@ public class GrammaticalRelationTag exte
> GrammaticalRelation grammaticalRelation) {
> this(tag);
>
> + if (grammaticalRelation == null) {
> + throw new IllegalArgumentException("The grammatical relation cannot be null");
> + }
> +
> this.grammaticalRelation = grammaticalRelation;
> }
>
> @@ -48,7 +52,11 @@ public class GrammaticalRelationTag exte
>
> @Override
> public int hashCode() {
> - return super.hashCode() + grammaticalRelation.hashCode();
> + final int prime = 31;
> + int result = super.hashCode();
> + result = prime * result + grammaticalRelation.hashCode();
> +
> + return result;
> }
>
> @Override
>
> Modified: stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java (original)
> +++ stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java Mon Jan 20 08:38:04 2014
> @@ -39,6 +39,8 @@ public interface ContentItem {
> * The binary content stream. Shortcut for
> * <code>{@link #getBlob()}{@link Blob#getStream() .getStream()}</code>
> * @return the InputStream
> + * @deprecated use <code>{@link #getBlob()}{@link Blob#getStream() .getStream()}</code>
> + * instead
> */
> InputStream getStream();
>
> @@ -46,6 +48,8 @@ public interface ContentItem {
> * The MimeType. Shortcut for
> * <code>{@link #getBlob()}{@link Blob#getMimeType() .getMimeType()}</code>.
> * @return the MimeType as string
> + * @deprecated use <code>{@link #getBlob()}{@link Blob#getMimeType() .getMimeType()}</code>
> + * instead
> */
> String getMimeType();
>
>
> Modified: stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java
> URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java?rev=1559644&r1=1559643&r2=1559644&view=diff
> ==============================================================================
> --- stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java (original)
> +++ stanbol/trunk/enhancer/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/EnhancementEngine.java Mon Jan 20 08:38:04 2014
> @@ -16,6 +16,8 @@
> */
> package org.apache.stanbol.enhancer.servicesapi;
>
> +import java.util.Map;
> +
> /**
> * Interface to internal or external semantic enhancement engines. There will
> * usually be several of those, that the EnhancementJobManager uses to enhance
> @@ -36,13 +38,13 @@ public interface EnhancementEngine {
> /**
> * Return value for {@link #canEnhance}, meaning this engine can enhance
> * supplied {@link ContentItem}, and suggests enhancing it synchronously
> - * instead of queuing a request for enhancement.
> + * instead of queueing a request for enhancement.
> */
> int ENHANCE_SYNCHRONOUS = 1;
>
> /**
> * Return value for {@link #canEnhance}, meaning this engine can enhance
> - * supplied {@link ContentItem}, and suggests queuing a request for
> + * supplied {@link ContentItem}, and suggests queueing a request for
> * enhancement instead of enhancing it synchronously.
> */
> int ENHANCE_ASYNC = 2;
> @@ -52,23 +54,46 @@ public interface EnhancementEngine {
> * suggests enhancing it synchronously or asynchronously. The
> * {@link EnhancementJobManager} can force sync/async mode if desired, it is
> * just a suggestion from the engine.
> + * <p>
> + * This method is expected to execute fast and MUST NOT change the parsed
> + * {@link ContentItem}. It is called with a read lock on the ContentItem.
> + * <p>
> + * <b>NOTE:</b> Returning {@link #CANNOT_ENHANCE} will cause the
> + * {@link EnhancementJobManager} to skip the execution of this Engine. If
> + * an {@link EngineException} is thrown the executed {@link Chain} will
> + * fail (unless this engine is marked as OPTIONAL).
> + *
> + * @param ci The ContentItem to enhance
> + * @param context The enhancement context: Request specific parameters
> *
> * @throws EngineException if the introspecting process of the content item
> * fails
> */
> int canEnhance(ContentItem ci) throws EngineException;
> + //int canEnhance(ContentItem ci, Map<String,Object> context) throws EngineException;
>
> /**
> * Compute enhancements for supplied ContentItem. The results of the process
> - * are expected to be stored in the metadata of the content item.
> + * are expected to be stored in the {@link ContentItem#getMetadata() metadata
> + * of the content item} or by adding/modifying any contentPart.<p>
> + * Engines that do support {@link #ENHANCE_ASYNC} are required to use the
> + * {@link ContentItem#getLock()} to acquire read/write locks when reading/
> + * modifying information of the {@link ContentItem}. For Engines that that
> + * do use {@link #ENHANCE_SYNCHRONOUS} the {@link EnhancementJobManager}
> + * is responsible to acquire a write lock before calling this method.
> + * <p>
> + * <b>NOTE</b>: If an EnhancementEngine can not extract any information it
> + * is expected to return. In case an error is encountered during processing
> + * an {@link EngineException} need to be thrown.
> *
> - * The client (usually an {@link EnhancementJobManager}) should take care of
> - * persistent storage of the enhanced {@link ContentItem}.
> + * @param ci The ContentItem to enhance
> + * @param context The enhancement context: Request specific parameters
> *
> * @throws EngineException if the underlying process failed to work as
> * expected
> */
> void computeEnhancements(ContentItem ci) throws EngineException;
> + //void computeEnhancements(ContentItem ci, Map<String,Object> context) throws EngineException;
> /**
> * Getter for the name of this EnhancementEngine instance as configured
> * by {@link #PROPERTY_NAME}
>
>
--
| Rupert Westenthaler rupert.westenthaler@gmail.com
| Bodenlehenstraße 11 ++43-699-11108907
| A-5500 Bischofshofen