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