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