You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2015/08/01 19:27:16 UTC
svn commit: r1693745 -
/tika/trunk/tika-core/src/main/java/org/apache/tika/language/translate/DefaultTranslator.java
Author: nick
Date: Sat Aug 1 17:27:16 2015
New Revision: 1693745
URL: http://svn.apache.org/r1693745
Log:
If DefaultTranslator has multiple translators loaded, use the first available, not just blindly the first
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/language/translate/DefaultTranslator.java
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/language/translate/DefaultTranslator.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/language/translate/DefaultTranslator.java?rev=1693745&r1=1693744&r2=1693745&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/language/translate/DefaultTranslator.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/language/translate/DefaultTranslator.java Sat Aug 1 17:27:16 2015
@@ -17,15 +17,22 @@
package org.apache.tika.language.translate;
-import org.apache.tika.config.ServiceLoader;
-import org.apache.tika.exception.TikaException;
-
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-public class DefaultTranslator implements Translator{
+import org.apache.tika.config.ServiceLoader;
+import org.apache.tika.exception.TikaException;
+
+/**
+ * A translator which picks the first available {@link Translator}
+ * implementations available through the
+ * {@link javax.imageio.spi.ServiceRegistry service provider mechanism}.
+ *
+ * @since Apache Tika 1.6
+ */
+public class DefaultTranslator implements Translator {
private transient final ServiceLoader loader;
public DefaultTranslator(ServiceLoader loader) {
@@ -58,17 +65,39 @@ public class DefaultTranslator implement
});
return translators;
}
+ /**
+ * Returns the first available translator, or null if none are
+ */
+ private static Translator getFirstAvailable(ServiceLoader loader) {
+ for (Translator t : getDefaultTranslators(loader)) {
+ if (t.isAvailable()) return t;
+ }
+ return null;
+ }
+ /**
+ * Translate, using the first available service-loaded translator
+ */
public String translate(String text, String sourceLanguage, String targetLanguage) throws TikaException, IOException {
- return getDefaultTranslators(loader).get(0).translate(text, sourceLanguage, targetLanguage);
+ Translator t = getFirstAvailable(loader);
+ if (t != null) {
+ return t.translate(text, sourceLanguage, targetLanguage);
+ }
+ throw new TikaException("No translators currently available");
}
+ /**
+ * Translate, using the first available service-loaded translator
+ */
public String translate(String text, String targetLanguage) throws TikaException, IOException {
- return getDefaultTranslators(loader).get(0).translate(text, targetLanguage);
+ Translator t = getFirstAvailable(loader);
+ if (t != null) {
+ return t.translate(text, targetLanguage);
+ }
+ throw new TikaException("No translators currently available");
}
public boolean isAvailable() {
- return getDefaultTranslators(loader).get(0).isAvailable();
+ return getFirstAvailable(loader) != null;
}
-
}