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">