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/08/11 12:38:52 UTC
svn commit: r1617241 -
/stanbol/trunk/enhancement-engines/restful-nlp/src/main/java/org/apache/stanbol/enhancer/engines/restful/nlp/impl/RestfulNlpAnalysisEngine.java
Author: rwesten
Date: Mon Aug 11 10:38:51 2014
New Revision: 1617241
URL: http://svn.apache.org/r1617241
Log:
merged fix for STANBOL-1368 to trunk
Modified:
stanbol/trunk/enhancement-engines/restful-nlp/src/main/java/org/apache/stanbol/enhancer/engines/restful/nlp/impl/RestfulNlpAnalysisEngine.java
Modified: stanbol/trunk/enhancement-engines/restful-nlp/src/main/java/org/apache/stanbol/enhancer/engines/restful/nlp/impl/RestfulNlpAnalysisEngine.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancement-engines/restful-nlp/src/main/java/org/apache/stanbol/enhancer/engines/restful/nlp/impl/RestfulNlpAnalysisEngine.java?rev=1617241&r1=1617240&r2=1617241&view=diff
==============================================================================
--- stanbol/trunk/enhancement-engines/restful-nlp/src/main/java/org/apache/stanbol/enhancer/engines/restful/nlp/impl/RestfulNlpAnalysisEngine.java (original)
+++ stanbol/trunk/enhancement-engines/restful-nlp/src/main/java/org/apache/stanbol/enhancer/engines/restful/nlp/impl/RestfulNlpAnalysisEngine.java Mon Aug 11 10:38:51 2014
@@ -289,12 +289,12 @@ public class RestfulNlpAnalysisEngine ex
Exception e = pae.getException();
if(e instanceof ClientProtocolException) {
//force re-initialisation upon error
- serviceInitialised = false;
+ setRESTfulNlpAnalysisServiceUnavailable();
throw new EngineException(this, ci, "Exception while executing Request "
+ "on RESTful NLP Analysis Service at "+analysisServiceUrl, e);
} else if(e instanceof IOException) {
//force re-initialisation upon error
- serviceInitialised = false;
+ setRESTfulNlpAnalysisServiceUnavailable();
throw new EngineException(this, ci, "Exception while executing Request "
+ "on RESTful NLP Analysis Service at "+analysisServiceUrl, e);
} else {
@@ -313,7 +313,7 @@ public class RestfulNlpAnalysisEngine ex
Span span = spans.next();
switch (span.getType()) {
case Sentence:
- context = context;
+ context = (Sentence)span;
break;
default:
Value<NerTag> nerAnno = span.getAnnotation(NER_ANNOTATION);
@@ -443,11 +443,12 @@ public class RestfulNlpAnalysisEngine ex
connectionManager.setMaxTotal(20);
connectionManager.setDefaultMaxPerRoute(20);
- //initially set the language config to validate the config
- //but reset to the default as this is done in the
- // #initRESTfulNlpAnalysisService(..) method
+ //NOTE: The list of supported languages is the combination of the
+ // languages enabled by the configuration (#languageConfig) and the
+ // languages supported by the RESTful NLP Analysis Service
+ // (#supportedLanguages)
+ //init the language configuration with the engine configuration
languageConfig.setConfiguration(config);
- languageConfig.setDefault(); //reset to the default
httpClient = new DefaultHttpClient(connectionManager,httpParams);
if(usr != null){
@@ -477,7 +478,15 @@ public class RestfulNlpAnalysisEngine ex
+ "currently not available (url: '"+analysisServiceUrl+"')");
}
}
-
+ /**
+ * to be called after handling an exception while calling the remote service
+ * that indicates that the service is no longer available.
+ */
+ private void setRESTfulNlpAnalysisServiceUnavailable(){
+ serviceInitialised = false;
+ supportedLanguages.clear();
+ }
+
/**
* initialises the RESRfulNlpAnalysis if not yet done.
*/
@@ -496,18 +505,15 @@ public class RestfulNlpAnalysisEngine ex
try {
supported = AccessController.doPrivileged(new PrivilegedExceptionAction<String>() {
public String run() throws IOException {
- return httpClient.execute(new HttpGet(analysisServiceUrl),
- new BasicResponseHandler());
+ HttpGet request = new HttpGet(analysisServiceUrl);
+ request.setHeader(HttpHeaders.ACCEPT, ContentType.APPLICATION_JSON.toString());
+ return httpClient.execute(request,new BasicResponseHandler());
}
});
serviceInitialised = true;
} catch (PrivilegedActionException pae) {
Exception e = pae.getException();
- if(serviceInitialised){
- //reset the language config if the service get unavailable
- languageConfig.setDefault();
- serviceInitialised = false;
- }
+ setRESTfulNlpAnalysisServiceUnavailable();
if(e instanceof IOException){
log.warn("Unable to initialise RESTful NLP Analysis Service!", e);
return false;
@@ -515,19 +521,11 @@ public class RestfulNlpAnalysisEngine ex
throw RuntimeException.class.cast(e);
}
}
- //for the correct language configuration we need to combine the parsed
- //language configuration with the languages supported by the
- //RESTful NLP Analysis Service
-
- //set the parsed config
- try {
- languageConfig.setConfiguration(config);
- } catch (ConfigurationException e) {
- //the config was already checked in the activate method ... so this
- //should never happen
- throw new IllegalStateException(e.getMessage(),e);
- }
- //parse the supported languages
+ //NOTE: The list of supported languages is the combination of the
+ // languages enabled by the configuration (#languageConfig) and the
+ // languages supported by the RESTful NLP Analysis Service
+ // (#supportedLanguages)
+ //parse the supported languages from the initialization response
StringTokenizer st = new StringTokenizer(supported, "{[\",]}");
while(st.hasMoreElements()){
supportedLanguages.add(st.nextToken());