Author: pkluegl
Date: Thu Oct 30 13:26:41 2014
New Revision: 1635493
URL: http://svn.apache.org/r1635493
Log:
UIMA-4074
- applied patch
Modified:
uima/ruta/trunk/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBlock.java
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/OnlyFirstBlock.java
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/FSTBlock.java
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/RutaBlock.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptBlock.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptFactory.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/extensions/RutaExternalFactory.java
Modified:
uima/ruta/trunk/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBlock.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBlock.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBlock.java
(original)
+++
uima/ruta/trunk/example-projects/ruta-ep-example-extensions/src/main/java/org/apache/uima/ruta/example/extensions/ExampleBlock.java
Thu Oct 30 13:26:41 2014
@@ -40,13 +40,12 @@ import org.apache.uima.ruta.visitor.Infe
/**
* Exemplary implementation of a block extension, which applied its rules in
reverse order.
- *
+ *
*/
public class ExampleBlock extends RutaBlock {
- public ExampleBlock(RutaBlock parent,
- String defaultNamespace) {
- super(parent, defaultNamespace);
+ public ExampleBlock(RutaBlock parent, String defaultNamespace) {
+ super(parent, defaultNamespace, parent != null ? parent.getContext() :
null);
}
@Override
@@ -83,7 +82,4 @@ public class ExampleBlock extends RutaBl
return result;
}
-
-
-
}
Modified:
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/OnlyFirstBlock.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/OnlyFirstBlock.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/OnlyFirstBlock.java
(original)
+++
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/OnlyFirstBlock.java
Thu Oct 30 13:26:41 2014
@@ -21,6 +21,7 @@ package org.apache.uima.ruta.block;
import java.util.List;
+import org.apache.uima.UimaContext;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.text.AnnotationFS;
import org.apache.uima.ruta.BlockApply;
@@ -42,9 +43,8 @@ import org.apache.uima.ruta.visitor.Infe
*/
public class OnlyFirstBlock extends RutaBlock {
- public OnlyFirstBlock(RutaBlock parent,
- String defaultNamespace) {
- super(parent, defaultNamespace);
+ public OnlyFirstBlock(RutaBlock parent, String defaultNamespace) {
+ super(parent, defaultNamespace, parent != null ? parent.getContext() :
null);
}
@Override
Modified:
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/FSTBlock.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/FSTBlock.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/FSTBlock.java
(original)
+++
uima/ruta/trunk/ruta-core-ext/src/main/java/org/apache/uima/ruta/block/fst/FSTBlock.java
Thu Oct 30 13:26:41 2014
@@ -42,7 +42,8 @@ public class FSTBlock extends RutaBlock
public FSTBlock(String name, RutaRule rule, List<RutaStatement> elements,
RutaBlock parent,
String defaultNamespace) {
- super(name, rule, elements, parent, defaultNamespace);
+ super(name, rule, elements, parent, defaultNamespace, parent != null ?
parent.getContext()
+ : null);
}
@Override
@@ -76,7 +77,7 @@ public class FSTBlock extends RutaBlock
@Override
public void setElements(List<RutaStatement> elements) {
this.elements = elements;
-
+
auto = new Automaton(elements);
}
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=1635493&r1=1635492&r2=1635493&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
Thu Oct 30 13:26:41 2014
@@ -52,6 +52,7 @@ import org.antlr.runtime.TokenStream;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.metadata.TypeDescription;
import org.apache.uima.resource.metadata.TypeSystemDescription;
+import org.apache.uima.UimaContext;
import org.apache.uima.ruta.action.AbstractRutaAction;
import org.apache.uima.ruta.action.ActionFactory;
@@ -100,7 +101,7 @@ private RutaExternalFactory external;
private String namespace;
private String moduleName;
private ResourceManager resourceManager;
-
+private UimaContext context;
public void setResourceManager(ResourceManager resourceManager) {
this.resourceManager = resourceManager;
}
@@ -108,6 +109,10 @@ public void setResourceManager(ResourceM
public void setExternalFactory(RutaExternalFactory factory) {
external = factory;
}
+ public void setContext(UimaContext context){
+ this.context = context;
+ factory.setContext(context);
+ }
public void emitErrorMessage(String msg) {
System.out.println(msg);
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaBlock.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaBlock.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaBlock.java
(original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaBlock.java
Thu Oct 30 13:26:41 2014
@@ -21,6 +21,7 @@ package org.apache.uima.ruta;
import java.util.List;
+import org.apache.uima.UimaContext;
import org.apache.uima.ruta.rule.RutaRule;
public abstract class RutaBlock extends RutaStatement {
@@ -37,18 +38,21 @@ public abstract class RutaBlock extends
private RutaModule script;
- public RutaBlock(RutaBlock parent, String defaultNamespace) {
- this(null, null, null, parent, defaultNamespace);
+ protected UimaContext context;
+
+ public RutaBlock(RutaBlock parent, String defaultNamespace, UimaContext
context) {
+ this(null, null, null, parent, defaultNamespace, context);
}
public RutaBlock(String name, RutaRule rule, List<RutaStatement> elements,
RutaBlock parent,
- String defaultNamespace) {
+ String defaultNamespace, UimaContext context) {
super(parent);
this.name = name;
this.rule = rule;
this.elements = elements;
this.environment = new RutaEnvironment(this);
this.namespace = defaultNamespace;
+ this.context = context;
}
public RutaRule getRule() {
@@ -97,4 +101,12 @@ public abstract class RutaBlock extends
return name;
}
+ public UimaContext getContext() {
+ return context;
+ }
+
+ public void setContext(UimaContext context) {
+ this.context = context;
+ }
+
}
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
Thu Oct 30 13:26:41 2014
@@ -41,6 +41,7 @@ import org.apache.uima.cas.CASException;
import org.apache.uima.cas.Type;
import org.apache.uima.cas.TypeSystem;
import org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
+import org.apache.uima.resource.ResourceAccessException;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.metadata.TypeDescription;
import org.apache.uima.resource.metadata.TypeSystemDescription;
@@ -70,19 +71,26 @@ import org.springframework.core.io.Resou
public class RutaEnvironment {
private final Object annotationTypeDummy = new Object();
+
private Map<String, Type> types;
+
private Map<String, RutaWordList> wordLists;
- private Map<String, CSVTable> tables;
+
+ private Map<String, RutaTable> tables;
+
private RutaBlock owner;
+
/**
- * Mapping from short type name (e.g. {@code W}) to their disambiguated long
type names
- * (e.g. {@code org.apache.uima.ruta.type.W}).
+ * Mapping from short type name (e.g. {@code W}) to their disambiguated long
type names (e.g.
+ * {@code org.apache.uima.ruta.type.W}).
*/
private Map<String, String> namespaces;
+
/**
* Mapping from ambiguous short type names to all their possible long type
names.
*/
private Map<String, Set<String>> ambiguousTypeAlias;
+
/**
* Set of imported typesystems.
*/
@@ -93,6 +101,7 @@ public class RutaEnvironment {
*/
private static class Alias {
final String longName;
+
final String shortName;
Alias(String longName, String shortName) {
@@ -102,15 +111,16 @@ public class RutaEnvironment {
}
/**
- * Types that are imported in the environment. Keys are type system
descriptors and values are aliased types.
+ * Types that are imported in the environment. Keys are type system
descriptors and values are
+ * aliased types.
*/
private Map<String, List<Alias>> typeImports;
/**
* Packages that are imported in the environment without a typesystem
specification.
*
- * Keys are package names and values are aliases. An empty string as alias
means that all types from the package
- * should be imported in the default namespace.
+ * Keys are package names and values are aliases. An empty string as alias
means that all types
+ * from the package should be imported in the default namespace.
*/
private Map<String, List<String>> packageImports;
@@ -118,7 +128,9 @@ public class RutaEnvironment {
* Set of types that are declared in the script.
*/
private Set<String> declaredAnnotationTypes;
+
private Map<String, Object> variableValues;
+
private Map<String, Class<?>> variableTypes;
private Map<String, Class<?>> availableTypes;
@@ -134,11 +146,11 @@ public class RutaEnvironment {
private Map<String, Object> initializedVariables;
private ResourceManager resourceManager;
-
+
public RutaEnvironment(RutaBlock owner) {
super();
this.owner = owner;
-
+
types = new HashMap<String, Type>();
namespaces = new HashMap<String, String>();
ambiguousTypeAlias = new HashMap<String, Set<String>>();
@@ -147,7 +159,7 @@ public class RutaEnvironment {
packageImports = new HashMap<String, List<String>>();
declaredAnnotationTypes = new HashSet<String>();
wordLists = new HashMap<String, RutaWordList>();
- tables = new HashMap<String, CSVTable>();
+ tables = new HashMap<String, RutaTable>();
variableValues = new HashMap<String, Object>();
variableTypes = new HashMap<String, Class<?>>();
variableGenericTypes = new HashMap<String, Class<?>>();
@@ -185,8 +197,10 @@ public class RutaEnvironment {
/**
* Import short type names.
*
- * @param cas Cas to initialize the types for.
- * @param strictImport Specify whether all types should be imported (false)
or only types
+ * @param cas
+ * Cas to initialize the types for.
+ * @param strictImport
+ * Specify whether all types should be imported (false) or only
types
*/
public void initializeTypes(CAS cas, boolean strictImport) {
this.cas = cas;
@@ -203,7 +217,8 @@ public class RutaEnvironment {
importPackageAliases(cas.getTypeSystem());
}
- // "Document" can be resolved to "uima.tcas.DocumentAnnotation" or
"org.apache.uima.ruta.type.Document",
+ // "Document" can be resolved to "uima.tcas.DocumentAnnotation" or
+ // "org.apache.uima.ruta.type.Document",
// we force it to the former
ambiguousTypeAlias.remove("Document");
namespaces.remove("Document");
@@ -223,7 +238,8 @@ public class RutaEnvironment {
/**
* Imports all types that are known to a type system.
*
- * @param ts Type system to import.
+ * @param ts
+ * Type system to import.
* @throws CASException
*/
private void importAllTypes(TypeSystem ts) throws CASException {
@@ -239,8 +255,10 @@ public class RutaEnvironment {
/**
* Import all types that are declared by the script.
*
- * @param casTS Type system containing all known types.
- * @throws InvalidXMLException When import cannot be resolved.
+ * @param casTS
+ * Type system containing all known types.
+ * @throws InvalidXMLException
+ * When import cannot be resolved.
*/
private void importDeclaredTypes(TypeSystem casTS) throws
InvalidXMLException {
for (String name : declaredAnnotationTypes) {
@@ -256,12 +274,15 @@ public class RutaEnvironment {
/**
* Import all typesystems that are imported in the script.
*
- * @param casTS Type system containing all known types.
- * @throws InvalidXMLException When import cannot be resolved.
+ * @param casTS
+ * Type system containing all known types.
+ * @throws InvalidXMLException
+ * When import cannot be resolved.
*/
private void importDeclaredTypesystems(TypeSystem casTS) throws
InvalidXMLException {
String[] descriptors = typesystems.toArray(new String[typesystems.size()]);
- TypeSystemDescription ts =
TypeSystemDescriptionFactory.createTypeSystemDescription(descriptors);
+ TypeSystemDescription ts = TypeSystemDescriptionFactory
+ .createTypeSystemDescription(descriptors);
ts.resolveImports();
for (TypeDescription td : ts.getTypes()) {
Type type = casTS.getType(td.getName());
@@ -276,7 +297,8 @@ public class RutaEnvironment {
/**
* Imports all type aliases.
*
- * @param casTS Cas type system.
+ * @param casTS
+ * Cas type system.
*/
private void importTypeAliases(TypeSystem casTS) {
for (List<Alias> aliases : typeImports.values()) {
@@ -290,15 +312,15 @@ public class RutaEnvironment {
}
}
-
/**
* Import all packages that are imported by the script.
*
- * @param casTS Type system containing all known types.
+ * @param casTS
+ * Type system containing all known types.
*/
private void importPackageAliases(TypeSystem casTS) {
Iterator<Type> iter = casTS.getTypeIterator();
- while(iter.hasNext()) {
+ while (iter.hasNext()) {
Type type = iter.next();
String name = type.getName();
String pkg = name.substring(0, Math.max(name.lastIndexOf('.'), 0));
@@ -355,9 +377,11 @@ public class RutaEnvironment {
/**
* Resolves an annotation type.
*
- * @param match Annotation type to resolve.
+ * @param match
+ * Annotation type to resolve.
* @return Resolved annotation type or null if match is unknown.
- * @throws IllegalArgumentException When {@code match} is ambiguous.
+ * @throws IllegalArgumentException
+ * When {@code match} is ambiguous.
*/
public Type getType(String match) {
// make sure that match is not ambiguous
@@ -399,7 +423,8 @@ public class RutaEnvironment {
/**
* Add a typesystem to the script.
*
- * @param descriptor Type system's descriptor path.
+ * @param descriptor
+ * Type system's descriptor path.
*/
public void addTypeSystem(String descriptor) {
typesystems.add(descriptor);
@@ -408,8 +433,10 @@ public class RutaEnvironment {
/**
* Import a type in the current namespace.
*
- * @param longName Complete type name.
- * @param shortName Short type name (without namespace).
+ * @param longName
+ * Complete type name.
+ * @param shortName
+ * Short type name (without namespace).
*/
private void importType(String longName, String shortName) {
Set<String> targets = ambiguousTypeAlias.get(shortName);
@@ -437,12 +464,15 @@ public class RutaEnvironment {
/**
* Import a type from a type system.
*
- * @param typesystem Typesystem from which to import the type or null.
- * @param longName Type to import.
- * @param shortName Short name to use for this type.
+ * @param typesystem
+ * Typesystem from which to import the type or null.
+ * @param longName
+ * Type to import.
+ * @param shortName
+ * Short name to use for this type.
*/
public void importTypeFromTypeSystem(String typesystem, String longName,
String shortName) {
- String key = typesystem != null? typesystem : "";
+ String key = typesystem != null ? typesystem : "";
List<Alias> aliases = typeImports.get(key);
if (aliases == null) {
@@ -458,21 +488,27 @@ public class RutaEnvironment {
*
* The type is aliased by its unqualified name.
*
- * @param typesystem Typesystem from which to import the type or null.
- * @param longName Type to import.
+ * @param typesystem
+ * Typesystem from which to import the type or null.
+ * @param longName
+ * Type to import.
*/
public void importTypeFromTypeSystem(String typesystem, String longName) {
- importTypeFromTypeSystem(typesystem, longName,
longName.substring(longName.lastIndexOf('.') + 1));
+ importTypeFromTypeSystem(typesystem, longName,
+ longName.substring(longName.lastIndexOf('.') + 1));
}
/**
* Import all the types from a package.
*
- * @param typesystem Type system describing the package to load.
- * @param packageName Package to load or null to load all packages.
+ * @param typesystem
+ * Type system describing the package to load.
+ * @param packageName
+ * Package to load or null to load all packages.
*/
public void importPackageFromTypeSystem(String typesystem, String
packageName, String alias) {
- TypeSystemDescription tsd =
TypeSystemDescriptionFactory.createTypeSystemDescription(typesystem);
+ TypeSystemDescription tsd = TypeSystemDescriptionFactory
+ .createTypeSystemDescription(typesystem);
try {
tsd.resolveImports(getResourceManager());
} catch (InvalidXMLException e) {
@@ -481,8 +517,8 @@ public class RutaEnvironment {
for (TypeDescription td : tsd.getTypes()) {
String qname = td.getName();
- if (packageName == null ||
- (qname.startsWith(packageName) && qname.indexOf('.',
packageName.length() + 1) == -1)) {
+ if (packageName == null
+ || (qname.startsWith(packageName) && qname.indexOf('.',
packageName.length() + 1) == -1)) {
// td is in packageName
if (alias != null) {
String shortName = alias + "." +
qname.substring(qname.lastIndexOf('.') + 1);
@@ -497,8 +533,10 @@ public class RutaEnvironment {
/**
* Imports all the packages from the specified type system.
*
- * @param typesystem Typesystem to load.
- * @param alias Alias for all the packages.
+ * @param typesystem
+ * Typesystem to load.
+ * @param alias
+ * Alias for all the packages.
*/
public void importAllPackagesFromTypeSystem(String typesystem, String alias)
{
importPackageFromTypeSystem(typesystem, null, alias);
@@ -507,8 +545,10 @@ public class RutaEnvironment {
/**
* Import all the types from a package that are available at runtime.
*
- * @param packageName Package to load.
- * @param alias Alias of the package. Null or empty string to use no alias.
+ * @param packageName
+ * Package to load.
+ * @param alias
+ * Alias of the package. Null or empty string to use no alias.
*/
public void importPackage(String packageName, String alias) {
List<String> aliases = packageImports.get(packageName);
@@ -517,27 +557,37 @@ public class RutaEnvironment {
packageImports.put(packageName, aliases);
}
- aliases.add(alias == null? "" : alias);
+ aliases.add(alias == null ? "" : alias);
}
public RutaWordList getWordList(String list) {
RutaWordList result = wordLists.get(list);
if (result == null) {
- ResourceLoader resourceLoader = new
RutaResourceLoader(getResourcePaths());
- Resource resource = resourceLoader.getResource(list);
- if (resource.exists()) {
- try {
- if (list.endsWith("mtwl")) {
- wordLists.put(list, new MultiTreeWordList(resource));
- } else {
- wordLists.put(list, new TreeWordList(resource));
+ if (list.endsWith("txt") || list.endsWith("mtwl")) {
+ ResourceLoader resourceLoader = new
RutaResourceLoader(getResourcePaths());
+ Resource resource = resourceLoader.getResource(list);
+ if (resource.exists()) {
+ try {
+ if (list.endsWith("mtwl")) {
+ wordLists.put(list, new MultiTreeWordList(resource));
+ } else {
+ wordLists.put(list, new TreeWordList(resource));
+ }
+ } catch (IOException e) {
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
+ "Error reading word list" + list, e);
}
- } catch (IOException e) {
- Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
- "Error reading word list" + list, e);
+ } else {
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Can't
find " + list + "!");
}
} else {
- Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Can't
find " + list + "!");
+ try {
+ RutaWordList rutaTable = (RutaWordList)
owner.getContext().getResourceObject(list);
+ wordLists.put(list, rutaTable);
+ } catch (ResourceAccessException e) {
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
+ "Can't find external resource table" + list, e);
+ }
}
}
@@ -547,17 +597,28 @@ public class RutaEnvironment {
public RutaTable getWordTable(String table) {
RutaTable result = tables.get(table);
if (result == null) {
- ResourceLoader resourceLoader = new
RutaResourceLoader(getResourcePaths());
- Resource resource = resourceLoader.getResource(table);
- if (resource.exists()) {
+ if (table.endsWith("csv")) {
+ ResourceLoader resourceLoader = new
RutaResourceLoader(getResourcePaths());
+ Resource resource = resourceLoader.getResource(table);
+ if (resource.exists()) {
+ try {
+ tables.put(table, new CSVTable(resource));
+ } catch (IOException e) {
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
+ "Error reading csv table " + table, e);
+ }
+ } else {
+ Logger.getLogger(this.getClass().getName())
+ .log(Level.SEVERE, "Can't find " + table + "!");
+ }
+ } else {
try {
- tables.put(table, new CSVTable(resource));
- } catch (IOException e) {
+ RutaTable rutaTable = (RutaTable)
owner.getContext().getResourceObject(table);
+ tables.put(table, rutaTable);
+ } catch (ResourceAccessException e) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE,
- "Error reading csv table " + table, e);
+ "Can't find external resource table" + table, e);
}
- } else {
- Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Can't
find " + table + "!");
}
}
@@ -632,7 +693,7 @@ public class RutaEnvironment {
public boolean isVariableOfType(String name, String type) {
return ownsVariableOfType(name, type)
|| (owner.getParent() != null && owner.getParent().getEnvironment()
- .isVariableOfType(name, type));
+ .isVariableOfType(name, type));
}
public Class<?> getVariableType(String name) {
@@ -800,13 +861,13 @@ public class RutaEnvironment {
}
public ResourceManager getResourceManager() {
- if(resourceManager != null) {
+ if (resourceManager != null) {
return resourceManager;
} else {
RutaBlock parent = owner.getParent();
- if(parent != null) {
+ if (parent != null) {
return parent.getEnvironment().getResourceManager();
- }
+ }
}
// at least return default resource manager
return UIMAFramework.newDefaultResourceManager();
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptBlock.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptBlock.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptBlock.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptBlock.java
Thu Oct 30 13:26:41 2014
@@ -35,7 +35,7 @@ public class RutaScriptBlock extends Rut
public RutaScriptBlock(String id, RutaRule rule, List<RutaStatement>
elements, RutaBlock parent,
String defaultNamespace) {
- super(id, rule, elements, parent, defaultNamespace);
+ super(id, rule, elements, parent, defaultNamespace, parent != null ?
parent.getContext() : null);
}
@Override
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptFactory.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptFactory.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptFactory.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaScriptFactory.java
Thu Oct 30 13:26:41 2014
@@ -25,6 +25,7 @@ import java.util.Map;
import java.util.TreeMap;
import org.antlr.runtime.Token;
+import org.apache.uima.UimaContext;
import org.apache.uima.ruta.action.AbstractRutaAction;
import org.apache.uima.ruta.condition.AbstractRutaCondition;
import org.apache.uima.ruta.expression.IRutaExpression;
@@ -59,6 +60,8 @@ public class RutaScriptFactory {
private int idCounter = 0;
+ private UimaContext context;
+
public RutaScriptFactory() {
super();
}
@@ -104,6 +107,7 @@ public class RutaScriptFactory {
container.setContainer(createRule);
result.setRule(createRule);
+ result.setContext(context);
return result;
}
@@ -192,8 +196,8 @@ public class RutaScriptFactory {
return new RegExpRule(null, null, idCounter++, env);
}
- public List<RuleElement> processConjunctRules(List<RuleElement> reList,
- List<Token> conList, RuleElementContainer container, RutaBlock env) {
+ public List<RuleElement> processConjunctRules(List<RuleElement> reList,
List<Token> conList,
+ RuleElementContainer container, RutaBlock env) {
boolean isConjunct = false;
for (Token token : conList) {
if (token != null) {
@@ -224,8 +228,8 @@ public class RutaScriptFactory {
}
}
List<RuleElement> elements = new ArrayList<RuleElement>();
-
- ConjunctRulesRuleElement cr = new ConjunctRulesRuleElement(null,
container, env);
+
+ ConjunctRulesRuleElement cr = new ConjunctRulesRuleElement(null,
container, env);
for (List<RuleElement> each : map.values()) {
ComposedRuleElement cre = createComposedRuleElement(each, null, null,
null, cr, env);
for (RuleElement ruleElement : each) {
@@ -240,4 +244,12 @@ public class RutaScriptFactory {
return result;
}
+ public UimaContext getContext() {
+ return context;
+ }
+
+ public void setContext(UimaContext context) {
+ this.context = context;
+ }
+
}
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
Thu Oct 30 13:26:41 2014
@@ -440,6 +440,7 @@ public class RutaEngine extends JCasAnno
this.context = aContext;
factory = new RutaExternalFactory();
+ factory.setContext(aContext);
engineLoader = new RutaEngineLoader();
verbalizer = new RutaVerbalizer();
@@ -922,6 +923,7 @@ public class RutaEngine extends JCasAnno
RutaLexer lexer = new RutaLexer(st);
CommonTokenStream tokens = new CommonTokenStream(lexer);
RutaParser parser = new RutaParser(tokens);
+ parser.setContext(context);
parser.setExternalFactory(factory);
parser.setResourcePaths(resourcePaths);
parser.setResourceManager(resourceManager);
@@ -944,6 +946,7 @@ public class RutaEngine extends JCasAnno
CommonTokenStream tokens = new CommonTokenStream(lexer);
RutaParser parser = new RutaParser(tokens);
parser.setExternalFactory(factory);
+ parser.setContext(context);
parser.setResourcePaths(resourcePaths);
String name = scriptLocation;
if (scriptLocation.indexOf("/") != -1) {
Modified:
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/extensions/RutaExternalFactory.java
URL:
http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/extensions/RutaExternalFactory.java?rev=1635493&r1=1635492&r2=1635493&view=diff
==============================================================================
---
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/extensions/RutaExternalFactory.java
(original)
+++
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/extensions/RutaExternalFactory.java
Thu Oct 30 13:26:41 2014
@@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.antlr.runtime.Token;
+import org.apache.uima.UimaContext;
import org.apache.uima.ruta.RutaBlock;
import org.apache.uima.ruta.action.AbstractRutaAction;
import org.apache.uima.ruta.condition.AbstractRutaCondition;
@@ -49,6 +50,8 @@ public class RutaExternalFactory {
private Map<String, IRutaBlockExtension> blockExtensions;
+ private UimaContext context;
+
public RutaExternalFactory() {
super();
conditionExtensions = new HashMap<String, IRutaConditionExtension>();
@@ -128,18 +131,19 @@ public class RutaExternalFactory {
public RutaBlock createExternalBlock(Token type, List<RutaExpression> args,
RutaBlock env)
throws RutaParseException {
- if(type == null) {
- return null;
- }
- String t = type.getText();
- IRutaBlockExtension extension = blockExtensions.get(t);
- if(extension != null) {
- return extension.createBlock(t, args, env);
- }
- return null;
- }
-
-
+ if (type == null) {
+ return null;
+ }
+ String t = type.getText();
+ IRutaBlockExtension extension = blockExtensions.get(t);
+ if (extension != null) {
+ RutaBlock rutaBlock = extension.createBlock(t, args, env);
+ rutaBlock.setContext(context);
+ return rutaBlock;
+ }
+ return null;
+ }
+
public void addExtension(String id, IRutaExtension extension) {
if (extension instanceof IRutaActionExtension) {
addActionExtension(id, (IRutaActionExtension) extension);
@@ -181,7 +185,7 @@ public class RutaExternalFactory {
public void addTypeFunctionExtension(String id, IRutaTypeFunctionExtension
extension) {
typeFunctionExtensions.put(id, extension);
}
-
+
public void addBlockExtension(String id, IRutaBlockExtension extension) {
blockExtensions.put(id, extension);
}
@@ -196,7 +200,8 @@ public class RutaExternalFactory {
return numberFunctionExtensions;
}
- public void setNumberFunctionExtensions(Map<String,
IRutaNumberFunctionExtension> numberFunctionExtensions) {
+ public void setNumberFunctionExtensions(
+ Map<String, IRutaNumberFunctionExtension> numberFunctionExtensions) {
this.numberFunctionExtensions = numberFunctionExtensions;
}
@@ -204,7 +209,8 @@ public class RutaExternalFactory {
return stringFunctionExtensions;
}
- public void setStringFunctionExtensions(Map<String,
IRutaStringFunctionExtension> stringFunctionExtensions) {
+ public void setStringFunctionExtensions(
+ Map<String, IRutaStringFunctionExtension> stringFunctionExtensions) {
this.stringFunctionExtensions = stringFunctionExtensions;
}
@@ -212,15 +218,17 @@ public class RutaExternalFactory {
return booleanFunctionExtensions;
}
- public void setBooleanFunctionExtensions(Map<String,
IRutaBooleanFunctionExtension> booleanFunctionExtensions) {
+ public void setBooleanFunctionExtensions(
+ Map<String, IRutaBooleanFunctionExtension>
booleanFunctionExtensions) {
this.booleanFunctionExtensions = booleanFunctionExtensions;
}
public Map<String, IRutaTypeFunctionExtension> getTypeFunctionExtensions() {
return typeFunctionExtensions;
- }
-
- public void setTypeFunctionExtensions(Map<String,
IRutaTypeFunctionExtension> typeFunctionExtensions) {
+ }
+
+ public void setTypeFunctionExtensions(
+ Map<String, IRutaTypeFunctionExtension> typeFunctionExtensions) {
this.typeFunctionExtensions = typeFunctionExtensions;
}
@@ -239,7 +247,7 @@ public class RutaExternalFactory {
public void setConditionExtensions(Map<String, IRutaConditionExtension>
conditionExtensions) {
this.conditionExtensions = conditionExtensions;
}
-
+
public Map<String, IRutaBlockExtension> getBlockExtensions() {
return blockExtensions;
}
@@ -248,5 +256,12 @@ public class RutaExternalFactory {
this.blockExtensions = blockExtensions;
}
+ public UimaContext getContext() {
+ return context;
+ }
+
+ public void setContext(UimaContext context) {
+ this.context = context;
+ }
}