Author: pkluegl
Date: Tue Dec 18 21:41:31 2018
New Revision: 1849241

URL: http://svn.apache.org/viewvc?rev=1849241&view=rev
Log:
UIMA-5415: added param, added test, added mention in docs

Added:
    
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java
Modified:
    
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
    
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java
    uima/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.overview.xml

Modified: 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java?rev=1849241&r1=1849240&r2=1849241&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
 Tue Dec 18 21:41:31 2018
@@ -481,6 +481,17 @@ public class RutaEngine extends JCasAnno
   @ConfigurationParameter(name = PARAM_MODIFY_DATAPATH, mandatory = false, 
defaultValue = "false")
   private boolean modifyDataPath;
 
+  /**
+   * This parameter specifies optional class names implementing the interface
+   * <code>org.apache.uima.ruta.visitor.RutaInferenceVisitor</code>, which 
will be notified during
+   * applying the rules.
+   * 
+   */
+  public static final String PARAM_INFERENCE_VISITORS = "inferenceVisitors";
+
+  @ConfigurationParameter(name = PARAM_INFERENCE_VISITORS, mandatory = false, 
defaultValue = {})
+  private String[] inferenceVisitors;
+
   private UimaContext context;
 
   private RutaModule script;
@@ -737,6 +748,20 @@ public class RutaEngine extends JCasAnno
     if (createdBy) {
       visitors.add(new CreatedByVisitor(verbalizer));
     }
+    if (inferenceVisitors != null && inferenceVisitors.length != 0) {
+      for (String eachClassName : inferenceVisitors) {
+        try {
+          Class<?> forName = getClassLoader().loadClass(eachClassName);
+          if (RutaInferenceVisitor.class.isAssignableFrom(forName)) {
+            RutaInferenceVisitor visitor = (RutaInferenceVisitor) 
forName.newInstance();
+            visitors.add(visitor);
+          }
+        } catch (Exception e) {
+          getLogger().log(Level.WARNING, "Failed to initialize inference 
visitor " + eachClassName);
+        }
+      }
+    }
+
     return new InferenceCrowd(visitors);
   }
 
@@ -936,7 +961,8 @@ public class RutaEngine extends JCasAnno
     AnalysisEngine eachEngine = null;
     try {
       @SuppressWarnings("unchecked")
-      Class<? extends AnalysisComponent> uimafitClass = (Class<? extends 
AnalysisComponent>) getClassLoader().loadClass(eachUimafitEngine);
+      Class<? extends AnalysisComponent> uimafitClass = (Class<? extends 
AnalysisComponent>) getClassLoader()
+              .loadClass(eachUimafitEngine);
       List<String> configurationData = 
script.getConfigurationData(eachUimafitEngine);
       AnalysisEngineDescription aed = 
AnalysisEngineFactory.createEngineDescription(uimafitClass,
               configurationData.toArray());

Modified: 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java?rev=1849241&r1=1849240&r2=1849241&view=diff
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java
 (original)
+++ 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/RutaEngineTest.java
 Tue Dec 18 21:41:31 2018
@@ -18,22 +18,20 @@
  */
 package org.apache.uima.ruta.engine;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.uima.analysis_engine.AnalysisEngine;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.fit.factory.AnalysisEngineFactory;
 import org.apache.uima.jcas.JCas;
-import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.ruta.TypeUsageInformation;
-import org.apache.uima.util.InvalidXMLException;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -86,21 +84,24 @@ public class RutaEngineTest {
 
   }
 
-  @Test
-  public void testInitializeVariableValues() throws 
ResourceInitializationException,
-          InvalidXMLException, IOException, AnalysisEngineProcessException {
+  @Test(expected = NotImplementedException.class)
+  public void testInferenceVisitors() throws Throwable {
 
     String document = "Some text.";
-    String script = "BOOLEAN var4 = false;";
-    script += "(CW SW) {var4 -> T1};";
+    String script = "CW;";
 
     AnalysisEngine ae = AnalysisEngineFactory.createEngine(RutaEngine.class, 
RutaEngine.PARAM_RULES,
-            script, RutaEngine.PARAM_VAR_NAMES, new String[] { "var1", "var2", 
"var3", "var4" },
-            RutaEngine.PARAM_VAR_VALUES, new String[] { "false", "false", 
"false", "true" });
+            script, RutaEngine.PARAM_INFERENCE_VISITORS,
+            new String[] { TestRutaInferenceVisitor.class.getName() });
 
     CAS cas = RutaTestUtils.getCAS(document);
-    ae.process(cas);
-    RutaTestUtils.assertAnnotationsEquals(cas, 1, 1);
+
+    try {
+      ae.process(cas);
+    } catch (AnalysisEngineProcessException e) {
+      Throwable cause = e.getCause();
+      throw cause;
+    }
   }
 
 }

Added: 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java?rev=1849241&view=auto
==============================================================================
--- 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java
 (added)
+++ 
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/engine/TestRutaInferenceVisitor.java
 Tue Dec 18 21:41:31 2018
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.uima.ruta.engine;
+
+import java.util.List;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaElement;
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.ScriptApply;
+import org.apache.uima.ruta.rule.AbstractRule;
+import org.apache.uima.ruta.rule.AbstractRuleMatch;
+import org.apache.uima.ruta.visitor.RutaInferenceVisitor;
+
+public class TestRutaInferenceVisitor implements RutaInferenceVisitor {
+
+  @Override
+  public void beginVisit(RutaElement element, ScriptApply result) {
+    throw new NotImplementedException();
+  }
+
+  @Override
+  public void endVisit(RutaElement element, ScriptApply result) {
+    throw new NotImplementedException();
+  }
+
+  @Override
+  public void finished(RutaStream stream, List<RutaInferenceVisitor> visitors) 
{
+    throw new NotImplementedException();
+  }
+
+  @Override
+  public void annotationAdded(AnnotationFS annotation,
+          AbstractRuleMatch<? extends AbstractRule> creator) {
+    throw new NotImplementedException();
+  }
+
+}

Modified: uima/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.overview.xml
URL: 
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.overview.xml?rev=1849241&r1=1849240&r2=1849241&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.overview.xml (original)
+++ uima/ruta/trunk/ruta-docbook/src/docbook/tools.ruta.overview.xml Tue Dec 18 
21:41:31 2018
@@ -964,6 +964,14 @@ Document{-> EXEC(MyAnalysisEngine, {MyTy
                   </entry>
                   <entry>Single String</entry>
                 </row>
+                <row>
+                  <entry>
+                    <link 
linkend='ugr.tools.ruta.ae.basic.parameter.inferenceVisitors'>inferenceVisitors</link>
+                  </entry>
+                  <entry>List of factory classes for additional inference 
visitors.
+                  </entry>
+                  <entry>Multi String</entry>
+                </row>
               </tbody>
             </tgroup>
           </table>
@@ -1250,6 +1258,14 @@ Document{-> EXEC(MyAnalysisEngine, {MyTy
             The default is set to ';'.
           </para>
         </section>
+        <section id="ugr.tools.ruta.ae.basic.parameter.inferenceVisitors">
+          <title>inferenceVisitors</title>
+          <para>
+            This parameter specifies optional class names implementing the 
interface
+               <code>org.apache.uima.ruta.visitor.RutaInferenceVisitor</code>, 
which will be notified during
+                       applying the rules.
+          </para>
+        </section>
       </section>
     </section>
     <section id="ugr.tools.ruta.ae.annotationwriter">


Reply via email to