You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2019/11/08 13:47:38 UTC

svn commit: r1869559 - in /uima/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/action/GetFeatureAction.java test/java/org/apache/uima/ruta/action/CreateTest.java test/java/org/apache/uima/ruta/action/GetFeatureTest.java

Author: pkluegl
Date: Fri Nov  8 13:47:38 2019
New Revision: 1869559

URL: http://svn.apache.org/viewvc?rev=1869559&view=rev
Log:
UIMA-4622: improving old action

Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/GetFeatureTest.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java?rev=1869559&r1=1869558&r2=1869559&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java Fri Nov  8 13:47:38 2019
@@ -35,8 +35,6 @@ import org.apache.uima.ruta.expression.s
 import org.apache.uima.ruta.rule.MatchContext;
 import org.apache.uima.ruta.rule.RuleElement;
 import org.apache.uima.ruta.rule.RuleMatch;
-import org.apache.uima.ruta.rule.RutaMatcher;
-import org.apache.uima.ruta.rule.RutaRuleElement;
 import org.apache.uima.ruta.visitor.InferenceCrowd;
 
 public class GetFeatureAction extends AbstractRutaAction {
@@ -55,36 +53,31 @@ public class GetFeatureAction extends Ab
   public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
     RuleMatch match = context.getRuleMatch();
     RuleElement element = context.getElement();
-    // TODO refactor
     RutaBlock parent = element.getParent();
 
-    Type type = null;
-    if (element instanceof RutaRuleElement) {
-      RutaMatcher matcher = ((RutaRuleElement) element).getMatcher();
-      if (matcher != null) {
-        type = matcher.getType(parent, stream);
-      }
-    }
-    if (type == null) {
+    AnnotationFS annotation = context.getAnnotation();
+    if (annotation == null) {
       return;
     }
 
     String stringValue = featureStringExpression.getStringValue(context, stream);
-    Feature featureByBaseName = type.getFeatureByBaseName(stringValue);
+
     RutaEnvironment environment = parent.getEnvironment();
     List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotationsOfElement(element);
     for (AnnotationFS annotationFS : matchedAnnotations) {
-      if (annotationFS.getType().getFeatureByBaseName(stringValue) == null) {
+      Feature featureByBaseName = annotationFS.getType().getFeatureByBaseName(stringValue);
+      if (featureByBaseName == null) {
         Logger.getLogger(this.getClass().getName()).log(Level.INFO,
                 "Can't access feature " + stringValue
                         + ", because it's not defined in the matched type: "
                         + annotationFS.getType().getName());
-        return;
+        continue;
       }
 
       TypeSystem typeSystem = stream.getCas().getTypeSystem();
       Type range = featureByBaseName.getRange();
       String featName = range.getName();
+
       if (environment.getVariableType(variable).equals(String.class)
               && typeSystem.subsumes(typeSystem.getType(CAS.TYPE_NAME_STRING), range)) {
         Object value = annotationFS.getStringValue(featureByBaseName);

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java?rev=1869559&r1=1869558&r2=1869559&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/CreateTest.java Fri Nov  8 13:47:38 2019
@@ -89,7 +89,7 @@ public class CreateTest {
   }
 
   @Test
-  public void testFeature() {
+  public void testFeature() throws Exception {
     String document = "Test.";
     String script = "";
     script += "W{-> CREATE(Inner, \"word\" = W)};";
@@ -122,13 +122,8 @@ public class CreateTest {
     String fn3 = "word";
     list.add(new TestFeature(fn3, "", "uima.tcas.Annotation"));
 
-    CAS cas = null;
-    try {
-      cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
-      Ruta.apply(cas, script);
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
+    CAS cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
+    Ruta.apply(cas, script);
 
     Type t = null;
     AnnotationIndex<AnnotationFS> ai = null;
@@ -145,6 +140,5 @@ public class CreateTest {
 
     assertEquals("Test", ((AnnotationFS) fv1).getCoveredText());
 
-    cas.release();
   }
 }

Modified: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/GetFeatureTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/GetFeatureTest.java?rev=1869559&r1=1869558&r2=1869559&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/GetFeatureTest.java (original)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/action/GetFeatureTest.java Fri Nov  8 13:47:38 2019
@@ -29,9 +29,7 @@ public class GetFeatureTest {
   public void test() {
 
     CAS cas = RutaTestUtils.processTestScript(this.getClass());
-    
     RutaTestUtils.assertAnnotationsEquals(cas, 1, 1);
-
-    cas.release();
   }
+
 }