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 2015/11/06 18:17:45 UTC

svn commit: r1712988 [1/5] - in /uima/ruta/branches/UIMA-4408: example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/ ruta-core-ext/src/main/java/or...

Author: pkluegl
Date: Fri Nov  6 17:17:42 2015
New Revision: 1712988

URL: http://svn.apache.org/viewvc?rev=1712988&view=rev
Log:
UIMA-4408
- refactoring of expression interfaces

Modified:
    uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleAction.java
    uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBooleanFunction.java
    uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleCondition.java
    uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleNumberFunction.java
    uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleStringFunction.java
    uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleTypeFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/Automaton.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/FirstCharToUpperCaseStringFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceAllStringFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceFirstStringFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/SubstringStringFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToLowerCaseStringFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToUpperCaseStringFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/ContainsBooleanFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EndsWithBooleanFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsBooleanFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsIgnoreCaseBooleanFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/IsEmptyBooleanFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/StartsWithBooleanFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractStructureAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ColorAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/DynamicAnchoringAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ExecAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/FillAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/FilterTypeAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/GatherAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/GetAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/GetFeatureAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/GetListAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/GreedyAnchoringAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitFeatureAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ImplicitMarkAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/LogAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFastAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkFirstAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkLastAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkOnceAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MarkTableAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MatchedTextAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/MergeAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveDuplicateAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveFilterTypeAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/RemoveRetainTypeAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ReplaceAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/RetainTypeAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/SetFeatureAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ShiftAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/SplitAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/TransferAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/TrieAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/TrimAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/UnmarkAllAction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/AfterCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/BeforeCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContainsCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/ContextCountCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/CountCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/CurrentCountCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/EndsWithCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/FeatureCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/IfCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/ImplicitCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/InListCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/IsCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/LastCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/MOfNCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/NearCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/ParseCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/PartOfNeqCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/PositionCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/RegExpCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/ScoreCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/SizeCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/StartsWithCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/TotalCountCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/condition/VoteCondition.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/MatchReference.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/NullExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/AbstractAnnotationExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/IAnnotationExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/annotation/LabelAnnotationExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/AbstractBooleanExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanFeatureExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanNumberExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanTypeExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/BooleanVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/IBooleanExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/bool/SimpleBooleanFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/FeatureExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/FeatureMatchExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/GenericFeatureExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/feature/SimpleFeatureExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/BooleanListVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/ListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/NumberListVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleBooleanListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleNumberListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleStringListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/SimpleTypeListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/StringListVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/TypeListVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/list/UntypedListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/AbstractNumberExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/ComposedNumberExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/INumberExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NegativeNumberExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberFeatureExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/NumberVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/number/SimpleNumberExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ExternalWordTableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/LiteralWordTableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/ReferenceWordTableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordListExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/resource/WordTableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/AbstractStringExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/ComposedStringExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/IStringExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/RemoveFunction.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/SimpleStringExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringFeatureExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/string/StringVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/ITypeExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/SimpleTypeExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/expression/type/TypeVariableExpression.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/AbstractRuleElement.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElement.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/ComposedRuleElementMatch.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/MatchContext.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/RegExpRule.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleElement.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/RuleMatch.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaLiteralMatcher.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaRuleElement.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/RutaTypeMatcher.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/WildCardRuleElement.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/MinMaxGreedy.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/MinMaxReluctant.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/NormalQuantifier.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/PlusGreedy.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/PlusReluctant.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/QuestionGreedy.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/QuestionReluctant.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/RuleElementQuantifier.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/StarGreedy.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/rule/quantifier/StarReluctant.java
    uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/verbalize/ExpressionVerbalizer.java

Modified: uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleAction.java (original)
+++ uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleAction.java Fri Nov  6 17:17:42 2015
@@ -51,7 +51,7 @@ public class ExampleAction extends Abstr
     List<Integer> indexes = new ArrayList<Integer>();
     for (INumberExpression each : indexExprList) {
       RutaBlock parent = element.getParent();
-      int integerValue = each.getIntegerValue(parent, match, element, stream);
+      int integerValue = each.getIntegerValue(context, stream);
       indexes.add(integerValue);
     }
     List<RuleElement> ruleElements = element.getContainer().getRuleElements();

Modified: uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBooleanFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBooleanFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBooleanFunction.java Fri Nov  6 17:17:42 2015
@@ -20,11 +20,10 @@
 package org.apache.uima.ruta.example.extensions;
 
 import org.apache.uima.cas.Type;
-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.bool.BooleanFunctionExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ExampleBooleanFunction extends BooleanFunctionExpression {
 
@@ -39,13 +38,13 @@ public class ExampleBooleanFunction exte
     return expr;
   }
 
-  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    Type type = expr.getType(parent);
+  public boolean getBooleanValue(MatchContext context, RutaStream stream) {
+    Type type = expr.getType(context, stream);
     return type.isFeatureFinal();
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return expr.getStringValue(parent, annotation, stream);
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return expr.getStringValue(context, stream);
   }
 
 }

Modified: uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleCondition.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleCondition.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleCondition.java (original)
+++ uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleCondition.java Fri Nov  6 17:17:42 2015
@@ -49,8 +49,8 @@ public class ExampleCondition extends Ab
     AnnotationFS annotation = context.getAnnotation();
     RuleElement element = context.getElement();
     String coveredText = annotation.getCoveredText();
-    String dateValue = dateExpr.getStringValue(element.getParent(), annotation, stream);
-    String formatValue = formatExpr.getStringValue(element.getParent(), annotation, stream);
+    String dateValue = dateExpr.getStringValue(context, stream);
+    String formatValue = formatExpr.getStringValue(context, stream);
     SimpleDateFormat dateFormat = new SimpleDateFormat(formatValue);
     boolean result = false;
     try {

Modified: uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleNumberFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleNumberFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleNumberFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleNumberFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,11 @@
 
 package org.apache.uima.ruta.example.extensions;
 
-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.number.NumberFunctionExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ExampleNumberFunction extends NumberFunctionExpression {
 
@@ -38,24 +38,24 @@ public class ExampleNumberFunction exten
     return expr;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return expr.getType(parent).getShortName();
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return expr.getType(context, stream).getShortName();
   }
 
-  public int getIntegerValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return getFeatureAmount(parent);
+  public int getIntegerValue(MatchContext context, RutaStream stream) {
+    return getFeatureAmount(context, stream);
   }
 
-  public double getDoubleValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return getFeatureAmount(parent);
+  public double getDoubleValue(MatchContext context, RutaStream stream) {
+    return getFeatureAmount(context, stream);
   }
 
-  public float getFloatValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return getFeatureAmount(parent);
+  public float getFloatValue(MatchContext context, RutaStream stream) {
+    return getFeatureAmount(context, stream);
   }
 
-  private int getFeatureAmount(RutaBlock parent) {
-    return expr.getType(parent).getFeatures().size();
+  private int getFeatureAmount(MatchContext context, RutaStream stream) {
+    return expr.getType(context, stream).getFeatures().size();
   }
 
 }

Modified: uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleStringFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleStringFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleStringFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleStringFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.example.extensions;
 
-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.string.StringFunctionExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ExampleStringFunction extends StringFunctionExpression {
 
@@ -38,8 +37,8 @@ public class ExampleStringFunction exten
     return expr;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return expr.getType(parent).getShortName();
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return expr.getType(context, stream).getShortName();
   }
 
 }

Modified: uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleTypeFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleTypeFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleTypeFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleTypeFunction.java Fri Nov  6 17:17:42 2015
@@ -20,11 +20,10 @@
 package org.apache.uima.ruta.example.extensions;
 
 import org.apache.uima.cas.Type;
-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.string.AbstractStringExpression;
 import org.apache.uima.ruta.expression.type.TypeFunctionExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ExampleTypeFunction extends TypeFunctionExpression {
 
@@ -39,13 +38,13 @@ public class ExampleTypeFunction extends
     return expr;
   }
 
-  public Type getType(RutaBlock parent) {
-    String stringValue = expr.getStringValue(parent, null, null);
-    return parent.getEnvironment().getType(stringValue);
+  public Type getType(MatchContext context, RutaStream stream) {
+    String stringValue = expr.getStringValue(context, null);
+    return context.getParent().getEnvironment().getType(stringValue);
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return expr.getStringValue(parent, annotation, stream);
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return expr.getStringValue(context, stream);
   }
 
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/Automaton.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/Automaton.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/Automaton.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/Automaton.java Fri Nov  6 17:17:42 2015
@@ -235,16 +235,16 @@ public class Automaton {
             .getConditions().size());
     // boolean base = matcher.match(annotation, stream, getParent());
     boolean base = true;
+    MatchContext context = new MatchContext(annotation, element, ruleMatch, true);
     RutaMatcher matcher = ((RutaRuleElement) element).getMatcher();
     if (matcher instanceof RutaTypeMatcher) {
       RutaTypeMatcher rtm = (RutaTypeMatcher) matcher;
       MatchReference mr = (MatchReference) rtm.getExpression();
-      FeatureExpression featureExpression = mr.getFeatureExpression(element.getParent());
+      FeatureExpression featureExpression = mr.getFeatureExpression(context, stream);
       if (featureExpression != null) {
         base = matcher.match(annotation, stream, element.getParent());
       }
     }
-    MatchContext context = new MatchContext(annotation, element, ruleMatch, true);
     
     List<AnnotationFS> textsMatched = new ArrayList<AnnotationFS>(1);
     if (base) {

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/FirstCharToUpperCaseStringFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/FirstCharToUpperCaseStringFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/FirstCharToUpperCaseStringFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/FirstCharToUpperCaseStringFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string;
 
-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.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.StringFunctionExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class FirstCharToUpperCaseStringFunction extends StringFunctionExpression {
 
@@ -38,8 +37,8 @@ public class FirstCharToUpperCaseStringF
     return expr;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    StringBuilder sb = new StringBuilder(expr.getStringValue(parent, annotation, stream));
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    StringBuilder sb = new StringBuilder(expr.getStringValue(context, stream));
     sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
     
     return sb.toString();

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceAllStringFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceAllStringFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceAllStringFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceAllStringFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string;
 
-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.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.StringFunctionExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ReplaceAllStringFunction extends StringFunctionExpression {
 
@@ -43,9 +42,9 @@ public class ReplaceAllStringFunction ex
     return text;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return text.getStringValue(parent, annotation, stream).replaceAll(
-            searchTerm.getStringValue(parent, annotation, stream),
-            replacement.getStringValue(parent, annotation, stream));
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return text.getStringValue(context, stream).replaceAll(
+            searchTerm.getStringValue(context, stream),
+            replacement.getStringValue(context, stream));
   }
 }
\ No newline at end of file

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceFirstStringFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceFirstStringFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceFirstStringFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ReplaceFirstStringFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string;
 
-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.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.StringFunctionExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ReplaceFirstStringFunction extends StringFunctionExpression {
 
@@ -45,9 +44,9 @@ public class ReplaceFirstStringFunction
     return expr;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return expr.getStringValue(parent, annotation, stream).replaceFirst(
-            searchTerm.getStringValue(parent, annotation, stream),
-            replacement.getStringValue(parent, annotation, stream));
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return expr.getStringValue(context, stream).replaceFirst(
+            searchTerm.getStringValue(context, stream),
+            replacement.getStringValue(context, stream));
   }
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/SubstringStringFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/SubstringStringFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/SubstringStringFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/SubstringStringFunction.java Fri Nov  6 17:17:42 2015
@@ -19,12 +19,11 @@
 
 package org.apache.uima.ruta.string;
 
-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.number.INumberExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.StringFunctionExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class SubstringStringFunction extends StringFunctionExpression {
 
@@ -46,11 +45,11 @@ public class SubstringStringFunction ext
     return expr;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    String text = expr.getStringValue(parent, annotation, stream);
-    if (text.length() >= this.to.getIntegerValue(parent, annotation, stream)){
-      return text.substring(from.getIntegerValue(parent, annotation, stream),
-              to.getIntegerValue(parent, annotation, stream));
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    String text = expr.getStringValue(context, stream);
+    if (text.length() >= this.to.getIntegerValue(context, stream)){
+      return text.substring(from.getIntegerValue(context, stream),
+              to.getIntegerValue(context, stream));
     }
 
     else

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToLowerCaseStringFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToLowerCaseStringFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToLowerCaseStringFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToLowerCaseStringFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string;
 
-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.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.StringFunctionExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ToLowerCaseStringFunction extends StringFunctionExpression {
 
@@ -38,8 +37,8 @@ public class ToLowerCaseStringFunction e
     return expr;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return expr.getStringValue(parent, annotation, stream).toLowerCase();
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return expr.getStringValue(context, stream).toLowerCase();
   }
 
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToUpperCaseStringFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToUpperCaseStringFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToUpperCaseStringFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/ToUpperCaseStringFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string;
 
-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.string.IStringExpression;
 import org.apache.uima.ruta.expression.string.StringFunctionExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ToUpperCaseStringFunction extends StringFunctionExpression {
 
@@ -38,7 +37,7 @@ public class ToUpperCaseStringFunction e
     return expr;
   }
 
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return expr.getStringValue(parent, annotation, stream).toUpperCase();
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    return expr.getStringValue(context, stream).toUpperCase();
   }
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/ContainsBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/ContainsBooleanFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/ContainsBooleanFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/ContainsBooleanFunction.java Fri Nov  6 17:17:42 2015
@@ -20,11 +20,10 @@
 
 package org.apache.uima.ruta.string.bool;
 
-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.bool.BooleanFunctionExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class ContainsBooleanFunction extends BooleanFunctionExpression {
   
@@ -42,14 +41,14 @@ public class ContainsBooleanFunction ext
   }
 
   @Override
-  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
+  public boolean getBooleanValue(MatchContext context, RutaStream stream) {
     
-return text.getStringValue(parent, annotation, stream).contains(contains.getStringValue(parent, annotation, stream));
+return text.getStringValue(context, stream).contains(contains.getStringValue(context, stream));
   }
 
   @Override
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    Boolean isContained = text.getStringValue(parent, annotation, stream).contains(contains.getStringValue(parent, annotation, stream)); 
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    Boolean isContained = text.getStringValue(context, stream).contains(contains.getStringValue(context, stream)); 
     return isContained.toString();
   }
 

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EndsWithBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EndsWithBooleanFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EndsWithBooleanFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EndsWithBooleanFunction.java Fri Nov  6 17:17:42 2015
@@ -20,11 +20,10 @@
 
 package org.apache.uima.ruta.string.bool;
 
-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.bool.BooleanFunctionExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class EndsWithBooleanFunction extends BooleanFunctionExpression {
   private IStringExpression text;
@@ -42,13 +41,13 @@ public class EndsWithBooleanFunction ext
   }
 
   @Override
-  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return text.getStringValue(parent, annotation, stream).endsWith(end.getStringValue(parent, annotation, stream));
+  public boolean getBooleanValue(MatchContext context, RutaStream stream) {
+    return text.getStringValue(context, stream).endsWith(end.getStringValue(context, stream));
   }
 
   @Override
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    Boolean endsWith = text.getStringValue(parent, annotation, stream).endsWith(end.getStringValue(parent, annotation, stream)); 
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    Boolean endsWith = text.getStringValue(context, stream).endsWith(end.getStringValue(context, stream)); 
     return endsWith.toString();
   }
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsBooleanFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsBooleanFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsBooleanFunction.java Fri Nov  6 17:17:42 2015
@@ -20,11 +20,10 @@
 
 package org.apache.uima.ruta.string.bool;
 
-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.bool.BooleanFunctionExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class EqualsBooleanFunction extends BooleanFunctionExpression {
   
@@ -43,13 +42,13 @@ public class EqualsBooleanFunction exten
   }
 
   @Override
-  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return text.getStringValue(parent, annotation, stream).equals(compare.getStringValue(parent, annotation, stream));
+  public boolean getBooleanValue(MatchContext context, RutaStream stream) {
+    return text.getStringValue(context, stream).equals(compare.getStringValue(context, stream));
   }
 
   @Override
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    Boolean equals = text.getStringValue(parent, annotation, stream).equals(compare.getStringValue(parent, annotation, stream)); 
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    Boolean equals = text.getStringValue(context, stream).equals(compare.getStringValue(context, stream)); 
     return equals.toString();
   }
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsIgnoreCaseBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsIgnoreCaseBooleanFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsIgnoreCaseBooleanFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/EqualsIgnoreCaseBooleanFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string.bool;
 
-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.bool.BooleanFunctionExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class EqualsIgnoreCaseBooleanFunction extends BooleanFunctionExpression {
   
@@ -42,13 +41,13 @@ public class EqualsIgnoreCaseBooleanFunc
   }
 
   @Override
-  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return text.getStringValue(parent, annotation, stream).equalsIgnoreCase(compare.getStringValue(parent, annotation, stream));
+  public boolean getBooleanValue(MatchContext context, RutaStream stream) {
+    return text.getStringValue(context, stream).equalsIgnoreCase(compare.getStringValue(context, stream));
   }
 
   @Override
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    Boolean equals = text.getStringValue(parent, annotation, stream).equalsIgnoreCase(compare.getStringValue(parent, annotation, stream)); 
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    Boolean equals = text.getStringValue(context, stream).equalsIgnoreCase(compare.getStringValue(context, stream)); 
     return equals.toString();
   }
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/IsEmptyBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/IsEmptyBooleanFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/IsEmptyBooleanFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/IsEmptyBooleanFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string.bool;
 
-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.bool.BooleanFunctionExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class IsEmptyBooleanFunction extends BooleanFunctionExpression {
 
@@ -38,13 +37,13 @@ public class IsEmptyBooleanFunction exte
   }
 
   @Override
-  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return text.getStringValue(parent, annotation, stream).isEmpty();
+  public boolean getBooleanValue(MatchContext context, RutaStream stream) {
+    return text.getStringValue(context, stream).isEmpty();
   }
 
   @Override
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    Boolean isEmpty = text.getStringValue(parent, annotation, stream).isEmpty();
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    Boolean isEmpty = text.getStringValue(context, stream).isEmpty();
     return isEmpty.toString();
   }
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/StartsWithBooleanFunction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/StartsWithBooleanFunction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/StartsWithBooleanFunction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core-ext/src/main/java/org/apache/uima/ruta/string/bool/StartsWithBooleanFunction.java Fri Nov  6 17:17:42 2015
@@ -19,11 +19,10 @@
 
 package org.apache.uima.ruta.string.bool;
 
-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.bool.BooleanFunctionExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 
 public class StartsWithBooleanFunction extends BooleanFunctionExpression {
 
@@ -42,15 +41,15 @@ public class StartsWithBooleanFunction e
   }
 
   @Override
-  public boolean getBooleanValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    return text.getStringValue(parent, annotation, stream).startsWith(
-            start.getStringValue(parent, annotation, stream));
+  public boolean getBooleanValue(MatchContext context, RutaStream stream) {
+    return text.getStringValue(context, stream).startsWith(
+            start.getStringValue(context, stream));
   }
 
   @Override
-  public String getStringValue(RutaBlock parent, AnnotationFS annotation, RutaStream stream) {
-    Boolean endsWith = text.getStringValue(parent, annotation, stream).startsWith(
-            start.getStringValue(parent, annotation, stream));
+  public String getStringValue(MatchContext context, RutaStream stream) {
+    Boolean endsWith = text.getStringValue(context, stream).startsWith(
+            start.getStringValue(context, stream));
     return endsWith.toString();
   }
 }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java Fri Nov  6 17:17:42 2015
@@ -68,6 +68,7 @@ import org.apache.uima.ruta.resource.Rut
 import org.apache.uima.ruta.resource.RutaTable;
 import org.apache.uima.ruta.resource.RutaWordList;
 import org.apache.uima.ruta.resource.TreeWordList;
+import org.apache.uima.ruta.rule.MatchContext;
 import org.apache.uima.util.InvalidXMLException;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;
@@ -750,13 +751,14 @@ public class RutaEnvironment {
       return type.cast(cas.getAnnotationType());
     }
     if (result != null) {
+      MatchContext context = new MatchContext(owner);
       if(RutaWordList.class.isAssignableFrom(type) && result instanceof WordListExpression) {
         WordListExpression wle = (WordListExpression) result;
-        RutaWordList list = wle.getList(owner);
+        RutaWordList list = wle.getList(context);
         return type.cast(list);
       } else if(RutaTable.class.isAssignableFrom(type) && result instanceof WordTableExpression) {
         WordTableExpression wte = (WordTableExpression) result;
-        RutaTable table = wte.getTable(owner);
+        RutaTable table = wte.getTable(context);
         return type.cast(table);
       } else {
         return type.cast(result);
@@ -774,24 +776,25 @@ public class RutaEnvironment {
   @SuppressWarnings("rawtypes")
   public Object getLiteralValue(String var, Object value) {
     if (ownsVariable(var)) {
+      MatchContext context = new MatchContext(owner);
       Class<?> clazz = variableTypes.get(var);
       if (value instanceof INumberExpression) {
         INumberExpression ne = (INumberExpression) value;
         if (clazz.equals(Integer.class)) {
-          return ne.getIntegerValue(owner, null, null);
+          return ne.getIntegerValue(context, null);
         } else if (clazz.equals(Double.class)) {
-          return ne.getDoubleValue(owner, null, null);
+          return ne.getDoubleValue(context, null);
         } else if (clazz.equals(Float.class)) {
-          return ne.getFloatValue(owner, null, null);
+          return ne.getFloatValue(context, null);
         } else if (clazz.equals(String.class)) {
-          return ne.getStringValue(owner, null, null);
+          return ne.getStringValue(context, null);
         }
       } else if (clazz.equals(String.class) && value instanceof IStringExpression) {
         IStringExpression se = (IStringExpression) value;
-        return se.getStringValue(owner, null, null);
+        return se.getStringValue(context, null);
       } else if (clazz.equals(Boolean.class) && value instanceof IBooleanExpression) {
         IBooleanExpression be = (IBooleanExpression) value;
-        return be.getBooleanValue(owner, null, null);
+        return be.getBooleanValue(context, null);
       }
       if (clazz.equals(RutaWordList.class) && value instanceof LiteralWordListExpression) {
         return value;

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractMarkAction.java Fri Nov  6 17:17:42 2015
@@ -28,8 +28,8 @@ import org.apache.uima.jcas.tcas.Annotat
 import org.apache.uima.ruta.RutaStream;
 import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 import org.apache.uima.ruta.rule.RuleElement;
-import org.apache.uima.ruta.rule.RuleMatch;
 
 public abstract class AbstractMarkAction extends TypeSensitiveAction {
 
@@ -37,11 +37,10 @@ public abstract class AbstractMarkAction
     super(type);
   }
 
-  protected Annotation createAnnotation(AnnotationFS matchedAnnotation, RuleElement element,
-          RutaStream stream, RuleMatch match) {
-    Type t = type.getType(element.getParent());
+  protected Annotation createAnnotation(AnnotationFS annotation, MatchContext context, RutaStream stream) {
+    Type t = type.getType(context, stream);
     AnnotationFS newAnnotationFS = stream.getCas().createAnnotation(t,
-            matchedAnnotation.getBegin(), matchedAnnotation.getEnd());
+            annotation.getBegin(), annotation.getEnd());
     Annotation newAnnotation = null;
     if (newAnnotationFS instanceof Annotation) {
       newAnnotation = (Annotation) newAnnotationFS;
@@ -49,7 +48,7 @@ public abstract class AbstractMarkAction
     } else {
       return null;
     }
-    stream.addAnnotation(newAnnotation, match);
+    stream.addAnnotation(newAnnotation, context.getRuleMatch());
     return newAnnotation;
   }
 
@@ -58,8 +57,9 @@ public abstract class AbstractMarkAction
     return super.toString() + "," + type.getClass().getSimpleName();
   }
 
-  protected List<Integer> getIndexList(RuleElement element, List<INumberExpression> list,
+  protected List<Integer> getIndexList(MatchContext context, List<INumberExpression> list,
           RutaStream stream) {
+    RuleElement element = context.getElement();
     List<Integer> indexList = new ArrayList<Integer>();
     if (list == null || list.isEmpty()) {
       int self = element.getContainer().getRuleElements().indexOf(element) + 1;
@@ -69,7 +69,7 @@ public abstract class AbstractMarkAction
     int last = Integer.MAX_VALUE - 1;
     for (INumberExpression each : list) {
       // no feature matches allowed
-      int value = each.getIntegerValue(element.getParent(), null, stream);
+      int value = each.getIntegerValue(context, stream);
       for (int i = Math.min(value, last + 1); i < value; i++) {
         indexList.add(i);
       }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractStructureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractStructureAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractStructureAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AbstractStructureAction.java Fri Nov  6 17:17:42 2015
@@ -42,6 +42,7 @@ import org.apache.uima.ruta.expression.f
 import org.apache.uima.ruta.expression.number.INumberExpression;
 import org.apache.uima.ruta.expression.string.IStringExpression;
 import org.apache.uima.ruta.expression.type.TypeExpression;
+import org.apache.uima.ruta.rule.MatchContext;
 import org.apache.uima.ruta.rule.RuleElement;
 import org.apache.uima.ruta.utils.UIMAUtils;
 
@@ -52,11 +53,11 @@ public abstract class AbstractStructureA
   }
 
   protected void fillFeatures(TOP structure, Map<IStringExpression, IRutaExpression> features,
-          AnnotationFS matchedAnnotation, RuleElement element, RutaStream stream) {
+          AnnotationFS matchedAnnotation, MatchContext context, RutaStream stream) {
     Map<String, IRutaExpression> map = new HashMap<String, IRutaExpression>();
-    RutaBlock parent = element.getParent();
+    RutaBlock parent = context.getParent();
     for (Entry<IStringExpression, IRutaExpression> each : features.entrySet()) {
-      String value = each.getKey().getStringValue(parent, matchedAnnotation, stream);
+      String value = each.getKey().getStringValue(context, stream);
       map.put(value, each.getValue());
     }
 
@@ -74,7 +75,7 @@ public abstract class AbstractStructureA
                 && range.getName().equals(UIMAConstants.TYPE_STRING)) {
           TypeExpression type = (TypeExpression) valueObject;
           List<AnnotationFS> annotationsInWindow = stream.getAnnotationsInWindow(matchedAnnotation,
-                  type.getType(parent));
+                  type.getType(context, stream));
           if (annotationsInWindow != null && !annotationsInWindow.isEmpty()) {
             AnnotationFS annotation = annotationsInWindow.get(0);
             structure.setStringValue(targetFeature, annotation.getCoveredText());
@@ -82,13 +83,13 @@ public abstract class AbstractStructureA
         } else if (valueObject instanceof GenericFeatureExpression && !range.isPrimitive()) {
           GenericFeatureExpression gfe = (GenericFeatureExpression) valueObject;
           FeatureExpression fe = gfe.getFeatureExpression();
-          TypeExpression type = fe.getTypeExpr(parent);
+          TypeExpression type = fe.getTypeExpr(context, stream);
           List<AnnotationFS> annotationsInWindow = stream.getAnnotationsInWindow(matchedAnnotation,
-                  type.getType(parent));
+                  type.getType(context, stream));
           List<AnnotationFS> featureAnnotations = annotationsInWindow;
-          if (fe.getFeatures(parent) != null) {
+          if (fe.getFeatures(context, stream) != null) {
             featureAnnotations = new ArrayList<AnnotationFS>(fe.getFeatureAnnotations(
-                    annotationsInWindow, stream, parent, false));
+                    annotationsInWindow, stream, context, false));
           }
           if (typeSystem.subsumes(jcas.getCasType(FSArray.type), range)) {
             structure.setFeatureValue(targetFeature, UIMAUtils.toFSArray(jcas, featureAnnotations));
@@ -101,40 +102,40 @@ public abstract class AbstractStructureA
         } else if (valueObject instanceof IStringExpression
                 && range.getName().equals(UIMAConstants.TYPE_STRING)) {
           structure.setStringValue(targetFeature, ((IStringExpression) valueObject).getStringValue(
-                  parent, matchedAnnotation, stream));
+                  context, stream));
 
         } else if (valueObject instanceof INumberExpression) {
           if (range.getName().equals(UIMAConstants.TYPE_DOUBLE)) {
             structure.setDoubleValue(targetFeature, ((INumberExpression) valueObject)
-                    .getDoubleValue(parent, matchedAnnotation, stream));
+                    .getDoubleValue(context, stream));
           } else if (range.getName().equals(UIMAConstants.TYPE_INTEGER)) {
             structure.setIntValue(targetFeature, ((INumberExpression) valueObject).getIntegerValue(
-                    parent, matchedAnnotation, stream));
+                    context, stream));
           } else if (range.getName().equals(UIMAConstants.TYPE_FLOAT)) {
             structure.setFloatValue(targetFeature, ((INumberExpression) valueObject).getFloatValue(
-                    parent, matchedAnnotation, stream));
+                    context, stream));
           } else if (range.getName().equals(UIMAConstants.TYPE_BYTE)) {
             structure.setByteValue(targetFeature, (byte) ((INumberExpression) valueObject)
-                    .getIntegerValue(parent, matchedAnnotation, stream));
+                    .getIntegerValue(context, stream));
           } else if (range.getName().equals(UIMAConstants.TYPE_SHORT)) {
             structure.setShortValue(targetFeature, (short) ((INumberExpression) valueObject)
-                    .getIntegerValue(parent, matchedAnnotation, stream));
+                    .getIntegerValue(context, stream));
           } else if (range.getName().equals(UIMAConstants.TYPE_LONG)) {
             structure.setLongValue(targetFeature, (long) ((INumberExpression) valueObject)
-                    .getIntegerValue(parent, matchedAnnotation, stream));
+                    .getIntegerValue(context, stream));
           }
         } else if (valueObject instanceof IBooleanExpression
                 && range.getName().equals(UIMAConstants.TYPE_BOOLEAN)) {
           structure.setBooleanValue(targetFeature, ((IBooleanExpression) valueObject)
-                  .getBooleanValue(parent, matchedAnnotation, stream));
+                  .getBooleanValue(context, stream));
         } else if (valueObject instanceof TypeExpression) {
           TypeExpression type = (TypeExpression) valueObject;
           List<AnnotationFS> annotationsInWindow = stream.getAnnotationsInWindow(matchedAnnotation,
-                  type.getType(parent));
+                  type.getType(context, stream));
           if (typeSystem.subsumes(jcas.getCasType(FSArray.type), range)) {
             structure
                     .setFeatureValue(targetFeature, UIMAUtils.toFSArray(jcas, annotationsInWindow));
-          } else if (typeSystem.subsumes(range, type.getType(parent))
+          } else if (typeSystem.subsumes(range, type.getType(context, stream))
                   && !annotationsInWindow.isEmpty()) {
             AnnotationFS annotation = annotationsInWindow.get(0);
             structure.setFeatureValue(targetFeature, annotation);

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddAction.java Fri Nov  6 17:17:42 2015
@@ -69,17 +69,17 @@ public class AddAction extends AbstractR
     for (IRutaExpression each : elements) {
       if (each instanceof ListExpression) {
         ListExpression l = (ListExpression) each;
-        list.addAll(l.getList(parent, stream));
+        list.addAll(l.getList(context, stream));
       } else if (vgtype.equals(Boolean.class) && each instanceof IBooleanExpression) {
-        list.add(((IBooleanExpression) each).getBooleanValue(parent, match, element, stream));
+        list.add(((IBooleanExpression) each).getBooleanValue(context, stream));
       } else if (vgtype.equals(Integer.class) && each instanceof INumberExpression) {
-        list.add(((INumberExpression) each).getIntegerValue(parent, match, element, stream));
+        list.add(((INumberExpression) each).getIntegerValue(context, stream));
       } else if (vgtype.equals(Double.class) && each instanceof INumberExpression) {
-        list.add(((INumberExpression) each).getDoubleValue(parent, match, element, stream));
+        list.add(((INumberExpression) each).getDoubleValue(context, stream));
       } else if (vgtype.equals(Type.class) && each instanceof TypeExpression) {
-        list.add(((TypeExpression) each).getType(parent));
+        list.add(((TypeExpression) each).getType(context, stream));
       } else if (vgtype.equals(String.class) && each instanceof IStringExpression) {
-        list.add(((IStringExpression) each).getStringValue(parent, match, element, stream));
+        list.add(((IStringExpression) each).getStringValue(context, stream));
       }
     }
   }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddFilterTypeAction.java Fri Nov  6 17:17:42 2015
@@ -47,7 +47,7 @@ public class AddFilterTypeAction extends
 		RuleElement element = context.getElement();
     List<Type> types = new ArrayList<Type>();
     for (TypeExpression each : list) {
-      types.add(each.getType(element.getParent()));
+      types.add(each.getType(context, stream));
     }
     stream.addFilterTypes(types);
   }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AddRetainTypeAction.java Fri Nov  6 17:17:42 2015
@@ -47,7 +47,7 @@ public class AddRetainTypeAction extends
 		RuleElement element = context.getElement();
     List<Type> types = new ArrayList<Type>();
     for (TypeExpression each : list) {
-      types.add(each.getType(element.getParent()));
+      types.add(each.getType(context, stream));
     }
     stream.addRetainTypes(types);
   }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/AssignAction.java Fri Nov  6 17:17:42 2015
@@ -53,19 +53,19 @@ public class AssignAction extends Abstra
     RutaEnvironment environment = parent.getEnvironment();
     Class<?> clazz = environment.getVariableType(var);
     if (clazz.equals(Double.class) && expression instanceof INumberExpression) {
-      double v = ((INumberExpression) expression).getDoubleValue(parent, match, element, stream);
+      double v = ((INumberExpression) expression).getDoubleValue(context, stream);
       environment.setVariableValue(var, v);
     } else if (clazz.equals(Integer.class) && expression instanceof INumberExpression) {
-      int v = ((INumberExpression) expression).getIntegerValue(parent, match, element, stream);
+      int v = ((INumberExpression) expression).getIntegerValue(context, stream);
       environment.setVariableValue(var, v);
     } else if (clazz.equals(Type.class) && expression instanceof TypeExpression) {
-      Type v = ((TypeExpression) expression).getType(parent);
+      Type v = ((TypeExpression) expression).getType(context, stream);
       environment.setVariableValue(var, v);
     } else if (clazz.equals(Boolean.class) && expression instanceof IBooleanExpression) {
-      boolean v = ((IBooleanExpression) expression).getBooleanValue(parent, match, element, stream);
+      boolean v = ((IBooleanExpression) expression).getBooleanValue(context, stream);
       environment.setVariableValue(var, v);
     } else if (clazz.equals(String.class) && expression instanceof IStringExpression) {
-      String v = ((IStringExpression) expression).getStringValue(parent, match, element, stream);
+      String v = ((IStringExpression) expression).getStringValue(context, stream);
       environment.setVariableValue(var, v);
     }
   }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CallAction.java Fri Nov  6 17:17:42 2015
@@ -62,7 +62,7 @@ public class CallAction extends Abstract
     AnalysisEngine targetEngine = thisScript.getEngine(namespace);
     if (targetEngine != null) {
       try {
-        callEngine(match, crowd, targetEngine, element, stream);
+        callEngine(context, crowd, targetEngine, stream);
       } catch (AnalysisEngineProcessException e) {
         e.printStackTrace();
       } catch (ResourceInitializationException e) {
@@ -71,7 +71,7 @@ public class CallAction extends Abstract
     } else {
       RutaBlock block = thisScript.getBlock(namespace);
       if (block != null) {
-        callScript(block, match, element, stream, crowd);
+        callScript(block, context, stream, crowd);
       } else {
         System.out.println("Found no script/block: " + namespace);
       }
@@ -79,8 +79,9 @@ public class CallAction extends Abstract
 
   }
 
-  protected void callScript(RutaBlock block, RuleMatch match, RuleElement element,
-          RutaStream stream, InferenceCrowd crowd) {
+  protected void callScript(RutaBlock block, MatchContext context, RutaStream stream, InferenceCrowd crowd) {
+    RuleElement element = context.getElement();
+    RuleMatch match = context.getRuleMatch();
     List<AnnotationFS> matchedAnnotationsOf = match.getMatchedAnnotationsOfElement(element);
     for (AnnotationFS annotationFS : matchedAnnotationsOf) {
       RutaStream windowStream = stream.getWindowStream(annotationFS,
@@ -91,10 +92,13 @@ public class CallAction extends Abstract
 
   }
 
-  protected void callEngine(RuleMatch match, InferenceCrowd crowd, AnalysisEngine targetEngine,
-          RuleElement element, RutaStream stream) throws ResourceInitializationException,
+  protected void callEngine(MatchContext context, InferenceCrowd crowd, AnalysisEngine targetEngine,
+          RutaStream stream) throws ResourceInitializationException,
           AnalysisEngineProcessException {
 
+    RuleElement element = context.getElement();
+    RuleMatch match = context.getRuleMatch();
+    
     List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotations(null,
             element.getContainer());
     for (AnnotationFS matchedAnnotation : matchedAnnotations) {

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ColorAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ColorAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ColorAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ColorAction.java Fri Nov  6 17:17:42 2015
@@ -63,10 +63,10 @@ public class ColorAction extends Abstrac
     if (newAnnotationFS instanceof RutaColoring) {
       coloring = (RutaColoring) newAnnotationFS;
       RutaBlock parent = element.getParent();
-      coloring.setBgColor(bgcolor.getStringValue(parent, match, element, stream));
-      coloring.setFgColor(fgcolor.getStringValue(parent, match, element, stream));
-      coloring.setSelected(selected.getBooleanValue(parent, match, element, stream));
-      coloring.setTargetType(type.getType(parent).getName());
+      coloring.setBgColor(bgcolor.getStringValue(context, stream));
+      coloring.setFgColor(fgcolor.getStringValue(context, stream));
+      coloring.setSelected(selected.getBooleanValue(context, stream));
+      coloring.setTargetType(type.getType(context, stream).getName());
       coloring.addToIndexes();
     }
   }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/ConfigureAction.java Fri Nov  6 17:17:42 2015
@@ -72,7 +72,7 @@ public class ConfigureAction extends Abs
     Set<Entry<IStringExpression, IRutaExpression>> entrySet = parameterMap.entrySet();
     for (Entry<IStringExpression, IRutaExpression> entry : entrySet) {
       IStringExpression key = entry.getKey();
-      String stringValue = key.getStringValue(parent, match, element, stream);
+      String stringValue = key.getStringValue(context, stream);
       ConfigurationParameter configurationParameter = configurationParameterDeclarations
               .getConfigurationParameter(null, stringValue);
       if (configurationParameter != null) {
@@ -82,11 +82,11 @@ public class ConfigureAction extends Abs
           if (configurationParameter.isMultiValued()) {
             if (value instanceof StringListExpression) {
               StringListExpression sle = (StringListExpression) value;
-              List<String> list = sle.getList(parent, stream);
+              List<String> list = sle.getList(context, stream);
               targetEngine.setConfigParameterValue(stringValue, list.toArray(new String[0]));
             } else if (value instanceof TypeListExpression) {
               TypeListExpression tle = (TypeListExpression) value;
-              List<Type> list = tle.getList(parent, stream);
+              List<Type> list = tle.getList(context, stream);
               List<String> stringList = new ArrayList<String>();
               for (Type each : list) {
                 stringList.add(each.getName());
@@ -96,18 +96,18 @@ public class ConfigureAction extends Abs
           } else {
             if (value instanceof IStringExpression) {
               IStringExpression se = (IStringExpression) value;
-              String string = se.getStringValue(parent, match, element, stream);
+              String string = se.getStringValue(context, stream);
               targetEngine.setConfigParameterValue(stringValue, string);
             } else if (value instanceof TypeExpression) {
               TypeExpression te = (TypeExpression) value;
-              Type t = te.getType(parent);
+              Type t = te.getType(context, stream);
               targetEngine.setConfigParameterValue(stringValue, t.getName());
             }
           }
         } else if (type.equals("Float")) {
           if (value instanceof NumberListExpression) {
             NumberListExpression nle = (NumberListExpression) value;
-            List<Number> list = nle.getList(parent, stream);
+            List<Number> list = nle.getList(context, stream);
             List<Float> numbers = new ArrayList<Float>();
             for (Number number : list) {
               numbers.add(number.floatValue());
@@ -116,14 +116,14 @@ public class ConfigureAction extends Abs
           } else {
             if (value instanceof INumberExpression) {
               INumberExpression ne = (INumberExpression) value;
-              Double d = ne.getDoubleValue(parent, match, element, stream);
+              Double d = ne.getDoubleValue(context, stream);
               targetEngine.setConfigParameterValue(stringValue, d.floatValue());
             }
           }
         } else if (type.equals("Integer")) {
           if (value instanceof NumberListExpression) {
             NumberListExpression nle = (NumberListExpression) value;
-            List<Number> list = nle.getList(parent, stream);
+            List<Number> list = nle.getList(context, stream);
             List<Integer> numbers = new ArrayList<Integer>();
             for (Number number : list) {
               numbers.add(number.intValue());
@@ -132,19 +132,19 @@ public class ConfigureAction extends Abs
           } else {
             if (value instanceof INumberExpression) {
               INumberExpression ne = (INumberExpression) value;
-              Integer i = ne.getIntegerValue(parent, match, element, stream);
+              Integer i = ne.getIntegerValue(context, stream);
               targetEngine.setConfigParameterValue(stringValue, i);
             }
           }
         } else if (type.equals("Boolean")) {
           if (value instanceof BooleanListExpression) {
             BooleanListExpression ble = (BooleanListExpression) value;
-            List<Boolean> list = ble.getList(parent, stream);
+            List<Boolean> list = ble.getList(context, stream);
             targetEngine.setConfigParameterValue(stringValue, list.toArray());
           } else {
             if (value instanceof IBooleanExpression) {
               IBooleanExpression be = (IBooleanExpression) value;
-              Boolean b = be.getBooleanValue(parent, match, element, stream);
+              Boolean b = be.getBooleanValue(context, stream);
               targetEngine.setConfigParameterValue(stringValue, b);
             }
           }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/CreateAction.java Fri Nov  6 17:17:42 2015
@@ -59,7 +59,7 @@ public class CreateAction extends Abstra
   public void execute(MatchContext context, RutaStream stream, InferenceCrowd crowd) {
 		RuleMatch match = context.getRuleMatch();
 		RuleElement element = context.getElement();
-    List<Integer> indexList = getIndexList(match, element, stream);
+    List<Integer> indexList = getIndexList(context, stream);
     List<AnnotationFS> matchedAnnotations = match.getMatchedAnnotations(indexList,
             element.getContainer());
     for (AnnotationFS matchedAnnotation : matchedAnnotations) {
@@ -67,7 +67,7 @@ public class CreateAction extends Abstra
       if (matchedAnnotation == null) {
         return;
       }
-      Type type = structureType.getType(element.getParent());
+      Type type = structureType.getType(context, stream);
       FeatureStructure newFS = stream.getCas().createFS(type);
       if (newFS instanceof Annotation) {
         Annotation a = (Annotation) newFS;
@@ -78,14 +78,15 @@ public class CreateAction extends Abstra
       TOP newStructure = null;
       if (newFS instanceof TOP) {
         newStructure = (TOP) newFS;
-        fillFeatures(newStructure, features, matchedAnnotation, element, stream);
+        fillFeatures(newStructure, features, matchedAnnotation, context, stream);
         newStructure.addToIndexes();
       }
     }
   }
 
   // TODO refactor duplicate methods -> MarkAction
-  protected List<Integer> getIndexList(RuleMatch match, RuleElement element, RutaStream stream) {
+  protected List<Integer> getIndexList(MatchContext context, RutaStream stream) {
+    RuleElement element = context.getElement();
     List<Integer> indexList = new ArrayList<Integer>();
     if (indexes == null || indexes.isEmpty()) {
       int self = element.getContainer().getRuleElements().indexOf(element) + 1;
@@ -95,7 +96,7 @@ public class CreateAction extends Abstra
     int last = Integer.MAX_VALUE - 1;
     for (INumberExpression each : indexes) {
       // no feature matches allowed
-      int value = each.getIntegerValue(element.getParent(), null, stream);
+      int value = each.getIntegerValue(context, stream);
       for (int i = Math.min(value, last + 1); i < value; i++) {
         indexList.add(i);
       }

Modified: uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/DynamicAnchoringAction.java
URL: http://svn.apache.org/viewvc/uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/DynamicAnchoringAction.java?rev=1712988&r1=1712987&r2=1712988&view=diff
==============================================================================
--- uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/DynamicAnchoringAction.java (original)
+++ uima/ruta/branches/UIMA-4408/ruta-core/src/main/java/org/apache/uima/ruta/action/DynamicAnchoringAction.java Fri Nov  6 17:17:42 2015
@@ -49,14 +49,14 @@ public class DynamicAnchoringAction exte
 		RuleMatch match = context.getRuleMatch();
 		RuleElement element = context.getElement();
     RutaBlock parent = element.getParent();
-    boolean activated = active.getBooleanValue(parent, match, element, stream);
+    boolean activated = active.getBooleanValue(context, stream);
     stream.setDynamicAnchoring(activated);
     if (panelty != null) {
-      double p = panelty.getDoubleValue(parent, match, element, stream);
+      double p = panelty.getDoubleValue(context, stream);
       stream.setIndexPenalty(p);
     }
     if (factor != null) {
-      double f = factor.getDoubleValue(parent, match, element, stream);
+      double f = factor.getDoubleValue(context, stream);
       stream.setAnchoringFactor(f);
     }
   }