Author: rwesten
Date: Sat May 26 15:29:59 2012
New Revision: 1342911
URL: http://svn.apache.org/viewvc?rev=1342911&view=rev
Log:
fixes STANBOL-634, STANBOL-635, STANBOL-636: All related to improved
ErrorHandling in the case of Exception during
EnhancementEngine#computeEnhancement(..) methods calls
* EventJobManager now correctly sets status of the Chain to failed if a
requires Engine fails
* EvnetJobManager now correctly sets the ErrorMessage for ChainExceptions
* Enhancer Jersey now reports details on why Enhancement requests failed in the
Web UI
* KeywordlinkingEngine now throws EngineExceptions if the configured
ReferencedSite is not available
Modified:
incubator/stanbol/trunk/enhancer/engines/keywordextraction/src/main/java/org/apache/stanbol/enhancer/engines/keywordextraction/linking/EntityLinker.java
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJob.java
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java
Modified:
incubator/stanbol/trunk/enhancer/engines/keywordextraction/src/main/java/org/apache/stanbol/enhancer/engines/keywordextraction/linking/EntityLinker.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/engines/keywordextraction/src/main/java/org/apache/stanbol/enhancer/engines/keywordextraction/linking/EntityLinker.java?rev=1342911&r1=1342910&r2=1342911&view=diff
==============================================================================
---
incubator/stanbol/trunk/enhancer/engines/keywordextraction/src/main/java/org/apache/stanbol/enhancer/engines/keywordextraction/linking/EntityLinker.java
(original)
+++
incubator/stanbol/trunk/enhancer/engines/keywordextraction/src/main/java/org/apache/stanbol/enhancer/engines/keywordextraction/linking/EntityLinker.java
Sat May 26 15:29:59 2012
@@ -32,6 +32,7 @@ import org.apache.stanbol.commons.opennl
import
org.apache.stanbol.enhancer.engines.keywordextraction.impl.ProcessingState;
import
org.apache.stanbol.enhancer.engines.keywordextraction.linking.EntityLinkerConfig.RedirectProcessingMode;
import
org.apache.stanbol.enhancer.engines.keywordextraction.linking.Suggestion.MATCH;
+import org.apache.stanbol.enhancer.servicesapi.EngineException;
import org.apache.stanbol.entityhub.servicesapi.defaults.NamespaceEnum;
import org.apache.stanbol.entityhub.servicesapi.model.Reference;
import org.apache.stanbol.entityhub.servicesapi.model.Representation;
@@ -82,7 +83,7 @@ public class EntityLinker {
/**
* Steps over the sentences, chunks, tokens of the {@link #sentences}
*/
- public void process(){
+ public void process() throws EngineException {
while(state.next()) {
if(isProcessableToken(state.getToken())){
List<String> searchStrings = new
ArrayList<String>(config.getMaxSearchTokens());
@@ -269,10 +270,14 @@ public class EntityLinker {
* @return The sorted list with the suggestions.
* If there are no suggestions an empty list will be returned.
*/
- private List<Suggestion> lookupEntities(List<String> searchStrings) {
- Collection<? extends Representation> results = entitySearcher.lookup(
- config.getNameField(),config.getSelectedFields(),
+ private List<Suggestion> lookupEntities(List<String> searchStrings) throws
EngineException {
+ Collection<? extends Representation> results;
+ try {
+ results =
entitySearcher.lookup(config.getNameField(),config.getSelectedFields(),
searchStrings,
state.getSentence().getLanguage(),config.getDefaultLanguage());
+ } catch (RuntimeException e) {
+ throw new EngineException(e.getMessage(),e);
+ }
List<Suggestion> suggestions = new ArrayList<Suggestion>();
for(Representation result : results){
Suggestion match = matchLabels(result);
Modified:
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java?rev=1342911&r1=1342910&r2=1342911&view=diff
==============================================================================
---
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java
(original)
+++
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/AbstractEnhancerUiResource.java
Sat May 26 15:29:59 2012
@@ -121,9 +121,15 @@ public abstract class AbstractEnhancerUi
if(!buildAjaxview){ //rewrite to a normal EnhancementRequest
return enhanceFromData(ci, null, false, null, false, null, false,
null, headers);
} else { //enhance and build the AJAX response
- enhance(ci);
+ EnhancementException enhancementException;
+ try {
+ enhance(ci);
+ enhancementException = null;
+ } catch (EnhancementException e){
+ enhancementException = e;
+ }
ContentItemResource contentItemResource = new
ContentItemResource(null, ci, uriInfo, "",
- tcManager, serializer, servletContext);
+ tcManager, serializer, servletContext,
enhancementException);
contentItemResource.setRdfSerializationFormat(format);
Viewable ajaxView = new Viewable("/ajax/contentitem",
contentItemResource);
ResponseBuilder rb = Response.ok(ajaxView);
Modified:
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java?rev=1342911&r1=1342910&r2=1342911&view=diff
==============================================================================
---
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java
(original)
+++
incubator/stanbol/trunk/enhancer/jersey/src/main/java/org/apache/stanbol/enhancer/jersey/resource/ContentItemResource.java
Sat May 26 15:29:59 2012
@@ -37,6 +37,8 @@ import static org.apache.stanbol.enhance
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.text.DateFormat;
@@ -87,6 +89,7 @@ import org.apache.stanbol.commons.indexe
import org.apache.stanbol.commons.web.base.resource.BaseStanbolResource;
import org.apache.stanbol.enhancer.servicesapi.Blob;
import org.apache.stanbol.enhancer.servicesapi.ContentItem;
+import org.apache.stanbol.enhancer.servicesapi.EnhancementException;
import org.apache.stanbol.enhancer.servicesapi.NoSuchPartException;
import org.apache.stanbol.enhancer.servicesapi.helper.ContentItemHelper;
import org.apache.stanbol.enhancer.servicesapi.helper.EnhancementEngineHelper;
@@ -145,6 +148,8 @@ public class ContentItemResource extends
private ChainExecution chainExecution;
private
ArrayList<org.apache.stanbol.enhancer.jersey.resource.ContentItemResource.Execution>
engineExecutions;
+
+ private EnhancementException enhancementException;
public ContentItemResource(String localId,
ContentItem ci,
@@ -152,14 +157,15 @@ public class ContentItemResource extends
String storePath,
TcManager tcManager,
Serializer serializer,
- ServletContext servletContext) throws
IOException {
+ ServletContext servletContext,
+ EnhancementException enhancementException)
throws IOException {
this.contentItem = ci;
this.localId = localId;
this.uriInfo = uriInfo;
this.tcManager = tcManager;
this.serializer = serializer;
this.servletContext = servletContext;
-
+ this.enhancementException = enhancementException;
if (localId != null) {
URI rawURI =
uriInfo.getBaseUriBuilder().path(storePath).path("raw").path(localId).build();
Entry<UriRef,Blob> plainTextContentPart =
ContentItemHelper.getBlob(contentItem, Collections.singleton("text/plain"));
@@ -178,7 +184,9 @@ public class ContentItemResource extends
defaultThumbnails.put(SKOS_CONCEPT, getStaticRootUrl() +
"/home/images/black_gear_48.png");
defaultThumbnails.put(null, getStaticRootUrl() +
"/home/images/unknown_48.png");
long start = System.currentTimeMillis();
- initOccurrences();
+ if(enhancementException == null){
+ initOccurrences();
+ }
//init ExecutionMetadata
try {
executionMetadata = ci.getPart(ExecutionMetadata.CHAIN_EXECUTION,
MGraph.class);
@@ -203,9 +211,15 @@ public class ContentItemResource extends
}
public String getRdfMetadata(String mediatype) throws
UnsupportedEncodingException {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- serializer.serialize(out, contentItem.getMetadata(), mediatype);
- return out.toString("utf-8");
+ if(enhancementException == null){
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ serializer.serialize(out, contentItem.getMetadata(), mediatype);
+ return out.toString("utf-8");
+ } else {//in case of an exception print the stacktrace
+ StringWriter writer = new StringWriter();
+ enhancementException.printStackTrace(new PrintWriter(writer));
+ return writer.toString();
+ }
}
public String getRdfMetadata() throws UnsupportedEncodingException {
Modified:
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJob.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJob.java?rev=1342911&r1=1342910&r2=1342911&view=diff
==============================================================================
---
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJob.java
(original)
+++
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJob.java
Sat May 26 15:29:59 2012
@@ -610,7 +610,7 @@ public class EnhancementJob {
log.debug(">> w: {}:
{}","setFailed",ExecutionPlanHelper.getEngine(executionPlan, executionNode));
StringBuilder message = new StringBuilder();
message.append(String.format("Unable to process ContentItem '%s'
with " +
- "Enhancement Engine %s because the engine ",
+ "Enhancement Engine '%s' because the engine ",
contentItem.getUri(), engineName));
if(engine == null){
message.append("is currently not active");
@@ -629,9 +629,9 @@ public class EnhancementJob {
if(!optional && !isExecutionFailed(executionMetadata,
chainExecutionNode)){
//set also the whole chain to faild!
String chainMessage = String.format(
- "Enhancement Chain failed because of required Engine '%s'
failed" +
+ "Enhancement Chain failed because of required Engine '%s'
failed " +
"with Message: %s", engineName, message);
- setExecutionFaild(executionMetadata, execution, chainMessage);
+ setExecutionFaild(executionMetadata, chainExecutionNode,
chainMessage);
error = exception; //this member stores the exception to allow
//re-throwing by the EnhancementJobManager.
}
@@ -683,7 +683,7 @@ public class EnhancementJob {
public String getErrorMessage() {
readLock.lock();
try {
- return getString(executionMetadata, executionPlanNode,
ExecutionMetadata.STATUS_MESSAGE);
+ return getString(executionMetadata, chainExecutionNode,
ExecutionMetadata.STATUS_MESSAGE);
} finally {
readLock.unlock();
}
Modified:
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java?rev=1342911&r1=1342910&r2=1342911&view=diff
==============================================================================
---
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java
(original)
+++
incubator/stanbol/trunk/enhancer/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java
Sat May 26 15:29:59 2012
@@ -241,6 +241,8 @@ public class EnhancementJobHandler imple
job.setCompleted(execution);
} catch (EngineException e) {
job.setFailed(execution, engine, e);
+ } catch (RuntimeException e) {
+ job.setFailed(execution, engine, e);
}
} else { //CANNOT_ENHANCE
if(exception != null){