Author: rwesten
Date: Thu Mar  6 15:18:59 2014
New Revision: 1574911

URL: http://svn.apache.org/r1574911
Log:
fix for STANBOL-1293: Error Codes that indicate situations as discribed by the 
issue are now silently ignored. Also added a unit test and logging of the error 
code in case of an Exception

Modified:
    
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/main/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEnhancementEngine.java
    
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/test/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEngineTest.java

Modified: 
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/main/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEnhancementEngine.java
URL: 
http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancement-engines/langdetect/src/main/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEnhancementEngine.java?rev=1574911&r1=1574910&r2=1574911&view=diff
==============================================================================
--- 
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/main/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEnhancementEngine.java
 (original)
+++ 
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/main/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEnhancementEngine.java
 Thu Mar  6 15:18:59 2014
@@ -232,13 +232,23 @@ public class LanguageDetectionEnhancemen
             languages = languageIdentifier.getLanguages(text);
             log.debug("language identified: {}",languages);
         } catch (LangDetectException e) {
-            StringBuilder msg = new StringBuilder("Could not identify language 
of text: ");
-            if(text.length() < 200){
-                msg.append(text);
+            Enum<?> errorCode = (Enum<?>)e.getCode();
+            //NOTE: 
https://code.google.com/p/language-detection/issues/detail?id=49
+            //ErrorCode enumeration is not visible. This engine wants to 
silently
+            //ignore " 0 - NoTextError" and "5 - CantDetectError"
+            if(errorCode.ordinal() != 0 && errorCode.ordinal() != 5) {
+                StringBuilder msg = new StringBuilder("Could not identify 
language of text: ");
+                if(text.length() < 200){
+                    msg.append(text);
+                } else {
+                    msg.append(text.subSequence(0, 199)).append("...");
+                }
+                msg.append(" (Error Code: ").append(errorCode.ordinal())
+                        .append(" - ").append(errorCode.name()).append(")");
+                throw new EngineException(this, ci, msg.toString(), e);
             } else {
-                msg.append(text.subSequence(0, 199)).append("...");
+                log.debug("No text to detect the language from present in 
ContentItem ",ci);
             }
-            throw new EngineException(this, ci, msg.toString(), e);
         }
         
         // add language to metadata

Modified: 
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/test/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEngineTest.java
URL: 
http://svn.apache.org/viewvc/stanbol/branches/release-0.12/enhancement-engines/langdetect/src/test/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEngineTest.java?rev=1574911&r1=1574910&r2=1574911&view=diff
==============================================================================
--- 
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/test/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEngineTest.java
 (original)
+++ 
stanbol/branches/release-0.12/enhancement-engines/langdetect/src/test/java/org/apache/stanbol/enhancer/engines/langdetect/LanguageDetectionEngineTest.java
 Thu Mar  6 15:18:59 2014
@@ -16,7 +16,7 @@
  */
 package org.apache.stanbol.enhancer.engines.langdetect;
 
-import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.assertEquals;
 import static 
org.apache.stanbol.enhancer.test.helper.EnhancementStructureHelper.validateAllEntityAnnotations;
 import static 
org.apache.stanbol.enhancer.test.helper.EnhancementStructureHelper.validateAllTextAnnotations;
 import static org.junit.Assert.assertEquals;
@@ -134,4 +134,14 @@ public class LanguageDetectionEngineTest
         assertEquals("No EntityAnnotations are expected",0, entityAnnoNum);
 
     }
+    
+    @Test
+    public void testNonTextContent() throws EngineException, 
ConfigurationException, LangDetectException, IOException {
+        LanguageDetectionEnhancementEngine langIdEngine = new 
LanguageDetectionEnhancementEngine();
+        ComponentContext context =  new MockComponentContext();
+        context.getProperties().put(EnhancementEngine.PROPERTY_NAME, 
"langdetect");
+        langIdEngine.activate(context);
+        ContentItem ci = ciFactory.createContentItem(new StringSource("123"));
+        langIdEngine.computeEnhancements(ci);
+    }
 }


Reply via email to