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 2016/01/04 16:57:52 UTC
svn commit: r1722903 - in /uima/ruta/trunk/ruta-core/src:
main/antlr3/org/apache/uima/ruta/parser/ main/java/org/apache/uima/ruta/
main/java/org/apache/uima/ruta/action/
main/java/org/apache/uima/ruta/expression/
main/java/org/apache/uima/ruta/expressi...
Author: pkluegl
Date: Mon Jan 4 15:57:51 2016
New Revision: 1722903
URL: http://svn.apache.org/viewvc?rev=1722903&view=rev
Log:
UIMA-4657
- some first tests
Added:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java (with props)
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/IAnnotationListExpression.java (with props)
uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java (with props)
Modified:
uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/AnnotationTypeExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationFeatureExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java
Modified: uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g?rev=1722903&r1=1722902&r2=1722903&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g (original)
+++ uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g Mon Jan 4 15:57:51 2016
@@ -864,7 +864,8 @@ String label = null;
(l = Identifier {label = l.getText();} COLON)?
start = STARTANCHOR? (
rea = ruleElementAnnotation[container]{re = rea;}
- |re1 = ruleElementType[container] {re = re1;}
+ |
+ re1 = ruleElementType[container] {re = re1;}
| re2 = ruleElementLiteral[container] {re = re2;}
| (ruleElementComposed[null])=>re3 = ruleElementComposed[container] {re = re3;}
| (ruleElementWildCard[null])=> re5 = ruleElementWildCard[container] {re = re5;}
@@ -966,8 +967,7 @@ ruleElementType [RuleElementContainer co
ruleElementAnnotation [RuleElementContainer container] returns [RutaRuleElement re = null]
:
-
- (annotationAddressExpression)=>aExpr = annotationAddressExpression
+ (annotationExpression2)=>aExpr = annotationExpression2
{re = factory.createRuleElement(aExpr, null, null, null, container, $blockDeclaration::env);}
q = quantifierPart?
(LCURLY c = conditions? (THEN a = actions)? RCURLY)?
@@ -1930,9 +1930,9 @@ actionAssign returns [AbstractRutaAction
:
name = ASSIGN LPAREN
(
- {isVariableOfType($blockDeclaration::env, input.LT(1).getText(), "TYPE")}?
- nv = Identifier COMMA e1 = typeExpression
- {action = ActionFactory.createAssignAction(nv, e1,$blockDeclaration::env);}
+ {isVariableOfType($blockDeclaration::env, input.LT(1).getText(), "ANNOTATION")||isVariableOfType($blockDeclaration::env, input.LT(1).getText(), "TYPE")}?
+ nv = Identifier COMMA ea = annotationOrTypeExpression
+ {action = ActionFactory.createAssignAction(nv, ea,$blockDeclaration::env);}
|
{isVariableOfType($blockDeclaration::env, input.LT(1).getText(), "BOOLEAN")}?
nv = Identifier COMMA e2 = booleanExpression
@@ -2215,7 +2215,17 @@ annotationExpression returns [IRutaExpre
aae = annotationAddressExpression {expr = aae;}
|
ale = annotationLabelExpression {expr = ale;}
-
+ ;
+
+annotationExpression2 returns [IRutaExpression expr = null]
+ :
+ {isVariableOfType($blockDeclaration::env,input.LT(1).getText(), "ANNOTATION") }?
+ id = Identifier {expr = ExpressionFactory.createAnnotationVariableExpression(id);}
+ |
+ {isVariableOfType($blockDeclaration::env,input.LT(1).getText(), "ANNOTATIONLIST") }?
+ id = Identifier {expr = ExpressionFactory.createAnnotationListVariableExpression(id);}
+ |
+ aae = annotationAddressExpression {expr = aae;}
;
annotationAddressExpression returns [IAnnotationExpression expr = null]
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java?rev=1722903&r1=1722902&r2=1722903&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaStream.java Mon Jan 4 15:57:51 2016
@@ -969,7 +969,9 @@ public class RutaStream extends FSIterat
}
} else {
Type t = ate.getType(context, this);
- assignAnnotationByTypeInWindow(annotation, feature, context, t);
+ if(t != null) {
+ assignAnnotationByTypeInWindow(annotation, feature, context, t);
+ }
}
} else if (value instanceof IAnnotationExpression && !feature.getRange().isPrimitive()) {
IAnnotationExpression ae = (IAnnotationExpression) value;
@@ -1033,4 +1035,18 @@ public class RutaStream extends FSIterat
}
}
}
+
+ public AnnotationFS getSingleAnnotationByTypeInContext(Type type, MatchContext context) {
+ List<AnnotationFS> inWindow = this.getAnnotationsInWindow(context.getAnnotation(), type);
+ if(inWindow != null&& !inWindow.isEmpty()) {
+ return inWindow.get(0);
+ }
+ return null;
+ }
+
+ public List<AnnotationFS> getAnnotationsByTypeInContext(Type type, MatchContext context) {
+ List<AnnotationFS> inWindow = this.getAnnotationsInWindow(context.getAnnotation(), type);
+ return inWindow;
+ }
+
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java?rev=1722903&r1=1722902&r2=1722903&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java Mon Jan 4 15:57:51 2016
@@ -20,10 +20,12 @@
package org.apache.uima.ruta.action;
import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.ruta.RutaBlock;
import org.apache.uima.ruta.RutaEnvironment;
import org.apache.uima.ruta.RutaStream;
import org.apache.uima.ruta.expression.IRutaExpression;
+import org.apache.uima.ruta.expression.annotation.IAnnotationExpression;
import org.apache.uima.ruta.expression.bool.IBooleanExpression;
import org.apache.uima.ruta.expression.number.INumberExpression;
import org.apache.uima.ruta.expression.string.IStringExpression;
@@ -65,6 +67,9 @@ public class AssignAction extends Abstra
} else if (clazz.equals(String.class) && expression instanceof IStringExpression) {
String v = ((IStringExpression) expression).getStringValue(context, stream);
environment.setVariableValue(var, v);
+ } else if (clazz.equals(AnnotationFS.class) && expression instanceof IAnnotationExpression) {
+ AnnotationFS v = ((IAnnotationExpression) expression).getAnnotation(context, stream);
+ environment.setVariableValue(var, v);
}
}
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/AnnotationTypeExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/AnnotationTypeExpression.java?rev=1722903&r1=1722902&r2=1722903&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/AnnotationTypeExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/AnnotationTypeExpression.java Mon Jan 4 15:57:51 2016
@@ -54,10 +54,15 @@ public class AnnotationTypeExpression ex
if (!initialized) {
initialize(context, stream);
}
- if(annotationExpression == null) {
- return null;
+ if(annotationExpression != null) {
+ return annotationExpression.getAnnotation(context, stream);
+ } else {
+ Type type = getType(context, stream);
+ if(type != null) {
+ return stream.getSingleAnnotationByTypeInContext(type, context);
+ }
}
- return annotationExpression.getAnnotation(context, stream);
+ return null;
}
@Override
@@ -68,8 +73,12 @@ public class AnnotationTypeExpression ex
if(typeExpression != null) {
return typeExpression.getType(context, stream);
} else {
- return getAnnotation(context, stream).getType();
+ AnnotationFS annotation = getAnnotation(context, stream);
+ if(annotation!= null) {
+ return annotation.getType();
+ }
}
+ return null;
}
@Override
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationFeatureExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationFeatureExpression.java?rev=1722903&r1=1722902&r2=1722903&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationFeatureExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationFeatureExpression.java Mon Jan 4 15:57:51 2016
@@ -22,8 +22,6 @@ package org.apache.uima.ruta.expression.
import java.util.Collection;
import java.util.List;
-import org.apache.uima.cas.Feature;
-import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.ruta.RutaStream;
@@ -47,16 +45,12 @@ public class AnnotationFeatureExpression
public AnnotationFS getAnnotation(MatchContext context, RutaStream stream) {
AnnotationFS annotation = context.getAnnotation();
Type type = fe.getTypeExpr(context, stream).getType(context, stream);
- Feature feature = fe.getFeature(context, stream);
List<AnnotationFS> list = getTargetAnnotation(annotation, type, stream);
Collection<AnnotationFS> featureAnnotations = fe.getFeatureAnnotations(list, stream, context,
false);
if (!featureAnnotations.isEmpty()) {
AnnotationFS next = featureAnnotations.iterator().next();
- FeatureStructure featureValue = next.getFeatureValue(feature);
- if(featureValue instanceof AnnotationFS) {
- return (AnnotationFS) featureValue;
- }
+ return next;
}
return null;
}
Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java?rev=1722903&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java Mon Jan 4 15:57:51 2016
@@ -0,0 +1,54 @@
+/*
+ * 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.expression.annotation;
+
+import java.util.List;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaBlock;
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.expression.list.ListExpression;
+import org.apache.uima.ruta.rule.MatchContext;
+
+public class AnnotationListVariableExpression extends ListExpression<AnnotationFS> implements IAnnotationListExpression{
+
+ private String var;
+
+ public AnnotationListVariableExpression(String var) {
+ super();
+ this.var = var;
+ }
+
+
+ @Override
+ public List<AnnotationFS> getList(MatchContext context, RutaStream stream) {
+ RutaBlock parent = context.getParent();
+ @SuppressWarnings("unchecked")
+ List<AnnotationFS> list = parent.getEnvironment().getVariableValue(var, List.class);
+ return list;
+ }
+
+
+ @Override
+ public List<AnnotationFS> getAnnotations(MatchContext context, RutaStream stream) {
+ return getList(context, stream);
+ }
+
+}
Propchange: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AnnotationListVariableExpression.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/IAnnotationListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/IAnnotationListExpression.java?rev=1722903&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/IAnnotationListExpression.java (added)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/IAnnotationListExpression.java Mon Jan 4 15:57:51 2016
@@ -0,0 +1,38 @@
+/*
+ * 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.expression.annotation;
+
+import java.util.List;
+
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.ruta.RutaStream;
+import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.MatchContext;
+
+/**
+ * This is a generic interface for all annotation list expressions, expressions that refer to a list of explicit
+ * annotations.
+ *
+ */
+public interface IAnnotationListExpression extends IStringExpression {
+
+ List<AnnotationFS> getAnnotations(MatchContext context, RutaStream stream);
+
+}
Propchange: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/IAnnotationListExpression.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java?rev=1722903&r1=1722902&r2=1722903&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java Mon Jan 4 15:57:51 2016
@@ -24,6 +24,7 @@ import java.util.List;
import org.apache.uima.ruta.RutaStream;
import org.apache.uima.ruta.expression.IRutaExpression;
+import org.apache.uima.ruta.expression.annotation.IAnnotationExpression;
import org.apache.uima.ruta.expression.bool.IBooleanExpression;
import org.apache.uima.ruta.expression.number.INumberExpression;
import org.apache.uima.ruta.expression.string.IStringExpression;
@@ -50,6 +51,8 @@ public class UntypedListExpression exten
result.add(((INumberExpression) each).getDoubleValue(context, stream));
} else if (each instanceof ITypeExpression) {
result.add(((ITypeExpression) each).getType(context, stream));
+ } else if (each instanceof IAnnotationExpression) {
+ result.add(((IAnnotationExpression) each).getAnnotation(context, stream));
} else if (each instanceof ListExpression) {
result.add(((ListExpression<?>) each).getList(context, stream));
} else if (each instanceof IStringExpression) {
Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java?rev=1722903&r1=1722902&r2=1722903&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaAnnotationMatcher.java Mon Jan 4 15:57:51 2016
@@ -49,7 +49,9 @@ public class RutaAnnotationMatcher imple
Collection<AnnotationFS> annotations = new TreeSet<AnnotationFS>(comparator);
MatchContext context = new MatchContext(parent);
AnnotationFS annotation = annotationExpression.getAnnotation(context, stream);
- annotations.add(annotation);
+ if(annotation != null) {
+ annotations.add(annotation);
+ }
return annotations;
}
Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java?rev=1722903&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java (added)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java Mon Jan 4 15:57:51 2016
@@ -0,0 +1,94 @@
+/*
+ * 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.expression.annotation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.FSIterator;
+import org.apache.uima.cas.Feature;
+import org.apache.uima.cas.Type;
+import org.apache.uima.cas.text.AnnotationFS;
+import org.apache.uima.cas.text.AnnotationIndex;
+import org.apache.uima.ruta.engine.Ruta;
+import org.apache.uima.ruta.engine.RutaTestUtils;
+import org.apache.uima.ruta.engine.RutaTestUtils.TestFeature;
+import org.junit.Test;
+
+public class AnnotationVariableExpressionTest {
+
+ @Test
+ public void test() {
+ String document = "Some text.";
+ String script = "ANNOTATION a;";
+ script += "CW{-> ASSIGN(a, CW)};";
+ script += "a{-> T1};";
+ script += "W W{-> CREATE(Struct, \"a\"=a)};";
+
+ Map<String, String> typeMap = new TreeMap<String, String>();
+ String typeName = "Struct";
+ typeMap.put(typeName, "uima.tcas.Annotation");
+
+ Map<String, List<TestFeature>> featureMap = new TreeMap<String, List<TestFeature>>();
+ List<TestFeature> list = new ArrayList<RutaTestUtils.TestFeature>();
+ featureMap.put(typeName, list);
+ String fn = "a";
+ list.add(new TestFeature(fn, "", "uima.tcas.Annotation"));
+
+ CAS cas = null;
+ try {
+ cas = RutaTestUtils.getCAS(document, typeMap, featureMap);
+ Ruta.apply(cas, script);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ Type t = null;
+ AnnotationIndex<AnnotationFS> ai = null;
+ FSIterator<AnnotationFS> iterator = null;
+ AnnotationFS next = null;
+
+ Type t1 = RutaTestUtils.getTestType(cas, 1);
+ ai = cas.getAnnotationIndex(t1);
+ assertEquals(1, ai.size());
+ iterator = ai.iterator();
+ next = iterator.next();
+ assertEquals("Some", next.getCoveredText());
+
+ t = cas.getTypeSystem().getType(typeName);
+ Feature f1 = t.getFeatureByBaseName(fn);
+ ai = cas.getAnnotationIndex(t);
+
+ assertEquals(1, ai.size());
+ iterator = ai.iterator();
+ next = iterator.next();
+ assertEquals("text", next.getCoveredText());
+ AnnotationFS a = (AnnotationFS) next.getFeatureValue(f1);
+ assertNotNull("Feature value is null!", a);
+ assertEquals("Some", a.getCoveredText());
+ }
+
+}
Propchange: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/expression/annotation/AnnotationVariableExpressionTest.java
------------------------------------------------------------------------------
svn:eol-style = native