You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by le...@apache.org on 2016/10/26 05:57:37 UTC

tika git commit: TIKA-1343 Stabalize check for JoshuaNetworkTranslator availability.

Repository: tika
Updated Branches:
  refs/heads/master dadbf55c5 -> 8d5eaaac1


TIKA-1343 Stabalize check for JoshuaNetworkTranslator availability.


Project: http://git-wip-us.apache.org/repos/asf/tika/repo
Commit: http://git-wip-us.apache.org/repos/asf/tika/commit/8d5eaaac
Tree: http://git-wip-us.apache.org/repos/asf/tika/tree/8d5eaaac
Diff: http://git-wip-us.apache.org/repos/asf/tika/diff/8d5eaaac

Branch: refs/heads/master
Commit: 8d5eaaac119ec88a5286e6de667dd4ab8257c3b0
Parents: dadbf55
Author: Lewis John McGibbney <le...@gmail.com>
Authored: Tue Oct 25 22:57:30 2016 -0700
Committer: Lewis John McGibbney <le...@gmail.com>
Committed: Tue Oct 25 22:57:30 2016 -0700

----------------------------------------------------------------------
 .../translate/JoshuaNetworkTranslator.java      | 51 +++++++++++++++++---
 1 file changed, 44 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tika/blob/8d5eaaac/tika-translate/src/main/java/org/apache/tika/language/translate/JoshuaNetworkTranslator.java
----------------------------------------------------------------------
diff --git a/tika-translate/src/main/java/org/apache/tika/language/translate/JoshuaNetworkTranslator.java b/tika-translate/src/main/java/org/apache/tika/language/translate/JoshuaNetworkTranslator.java
index 8cf0adf..ede9b19 100644
--- a/tika-translate/src/main/java/org/apache/tika/language/translate/JoshuaNetworkTranslator.java
+++ b/tika-translate/src/main/java/org/apache/tika/language/translate/JoshuaNetworkTranslator.java
@@ -22,6 +22,9 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
@@ -69,6 +72,8 @@ public class JoshuaNetworkTranslator extends AbstractTranslator {
   private static final String JOSHUA_SERVER = "joshua.server.url";
 
   private String networkServer;
+  
+  private String networkURI;
 
   /**
    * Default constructor which first checks for the presence of
@@ -110,6 +115,12 @@ public class JoshuaNetworkTranslator extends AbstractTranslator {
   @Override
   public String translate(String text, String sourceLanguage,
       String targetLanguage) throws TikaException, IOException {
+    //create networkURI
+    if (!networkServer.endsWith("/")) {
+      networkURI = networkServer + "/" + targetLanguage;
+    } else {
+      networkURI = networkServer + targetLanguage;
+    }
     if (!this.isAvailable())
       return text;
 
@@ -131,12 +142,7 @@ public class JoshuaNetworkTranslator extends AbstractTranslator {
     JacksonJsonProvider jacksonJsonProvider = new JacksonJsonProvider();
     providers.add(jacksonJsonProvider);
 
-    //create client
-    if (!networkServer.endsWith("/")) {
-      client = WebClient.create(networkServer + "/" + targetLanguage, providers);
-    } else {
-      client = WebClient.create(networkServer + targetLanguage, providers);
-    }
+    client = WebClient.create(networkURI, providers);
 
     ObjectMapper requestMapper = new ObjectMapper();
     ObjectNode jsonNode = requestMapper.createObjectNode();
@@ -189,7 +195,38 @@ public class JoshuaNetworkTranslator extends AbstractTranslator {
    */
   @Override
   public boolean isAvailable() {
-    return this.networkServer!=null;
+    if (this.networkServer!=null) {
+      URL url = null;
+      try {
+        url = new URL(networkURI);
+      } catch (MalformedURLException mue) {
+        LOG.error("Error reading {} property from {}. {}", JOSHUA_SERVER, PROPERTIES_FILE, mue);
+      }
+      HttpURLConnection connection = null;
+      try {
+        if (url!=null) {
+          connection = (HttpURLConnection) url.openConnection();
+          connection.setRequestProperty("Connection", "close");
+          connection.setConnectTimeout(2000); // Timeout 2 seconds
+          connection.connect();
+          return tryResponseCode(connection);
+        }
+      } catch (IOException ioe) {
+        LOG.error("Error whilst checking availability of {}. {}", JOSHUA_SERVER, ioe);
+      }
+    }
+    return false;
+  }
+
+  private boolean tryResponseCode(HttpURLConnection connection) {
+    // If the web service is available
+    try {
+      if (connection.getResponseCode() == 200)
+        return true;
+    } catch (IOException ioe) {
+      LOG.error("Error retreiving response code from Joshua Network Translator. {}", ioe);
+    }
+    return false;
   }
 
 }