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 2014/04/24 15:14:12 UTC
svn commit: r1589715 - in /uima/ruta/trunk/ruta-core/src/main:
antlr3/org/apache/uima/ruta/parser/RutaParser.g
java/org/apache/uima/ruta/RutaEnvironment.java
java/org/apache/uima/ruta/engine/RutaEngine.java
Author: pkluegl
Date: Thu Apr 24 13:14:12 2014
New Revision: 1589715
URL: http://svn.apache.org/r1589715
Log:
UIMA-3762
- resolve type system descriptors that are not located in classpath
Modified:
uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/RutaEnvironment.java
uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/engine/RutaEngine.java
Modified: uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.g?rev=1589715&r1=1589714&r2=1589715&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 Apr 24 13:14:12 2014
@@ -49,6 +49,7 @@ import org.antlr.runtime.RecognitionExce
import org.antlr.runtime.RecognizerSharedState;
import org.antlr.runtime.Token;
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;
@@ -98,7 +99,11 @@ private RutaScriptFactory factory = new
private RutaExternalFactory external;
private String namespace;
private String moduleName;
+private ResourceManager resourceManager;
+public void setResourceManager(ResourceManager resourceManager) {
+ this.resourceManager = resourceManager;
+}
public void setExternalFactory(RutaExternalFactory factory) {
external = factory;
@@ -330,6 +335,7 @@ List<RutaStatement> stmts = new ArrayLis
this.moduleName = moduleName;
rootBlock = factory.createRootScriptBlock(moduleName, p);
rootBlock.getEnvironment().setResourcePaths(resourcePaths);
+ rootBlock.getEnvironment().setResourceManager(resourceManager);
rootBlock.setElements(stmts);
module = new RutaModule(rootBlock);
rootBlock.setScript(module);
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=1589715&r1=1589714&r2=1589715&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 Apr 24 13:14:12 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.ResourceManager;
import org.apache.uima.resource.metadata.TypeDescription;
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.ruta.action.AbstractRutaAction;
@@ -132,9 +133,12 @@ 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>>();
@@ -470,7 +474,7 @@ public class RutaEnvironment {
public void importPackageFromTypeSystem(String typesystem, String packageName, String alias) {
TypeSystemDescription tsd = TypeSystemDescriptionFactory.createTypeSystemDescription(typesystem);
try {
- tsd.resolveImports();
+ tsd.resolveImports(getResourceManager());
} catch (InvalidXMLException e) {
throw new RuntimeException("Cannot resolve imports in " + typesystem, e);
}
@@ -794,4 +798,21 @@ public class RutaEnvironment {
}
}
}
+
+ public ResourceManager getResourceManager() {
+ if(resourceManager != null) {
+ return resourceManager;
+ } else {
+ RutaBlock parent = owner.getParent();
+ if(parent != null) {
+ return parent.getEnvironment().getResourceManager();
+ }
+ }
+ // at least return default resource manager
+ return UIMAFramework.newDefaultResourceManager();
+ }
+
+ public void setResourceManager(ResourceManager resourceManager) {
+ this.resourceManager = resourceManager;
+ }
}
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=1589715&r1=1589714&r2=1589715&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 Apr 24 13:14:12 2014
@@ -23,6 +23,7 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -37,6 +38,7 @@ import org.antlr.runtime.ANTLRInputStrea
import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonTokenStream;
import org.antlr.runtime.RecognitionException;
+import org.apache.uima.UIMAFramework;
import org.apache.uima.UimaContext;
import org.apache.uima.analysis_component.AnalysisComponent;
import org.apache.uima.analysis_engine.AnalysisEngine;
@@ -53,6 +55,7 @@ import org.apache.uima.fit.factory.Analy
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.ResourceConfigurationException;
import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.resource.ResourceManager;
import org.apache.uima.ruta.FilterManager;
import org.apache.uima.ruta.RutaBlock;
import org.apache.uima.ruta.RutaModule;
@@ -374,6 +377,8 @@ public class RutaEngine extends JCasAnno
private TypeSystem lastTypeSystem;
+ private ResourceManager resourceManager = null;
+
@Override
public void initialize(UimaContext aContext) throws ResourceInitializationException {
super.initialize(aContext);
@@ -438,6 +443,18 @@ public class RutaEngine extends JCasAnno
engineLoader = new RutaEngineLoader();
verbalizer = new RutaVerbalizer();
+ resourceManager = UIMAFramework.newDefaultResourceManager();
+ String dataPath = "";
+ if (descriptorPaths != null) {
+ for (String path : descriptorPaths) {
+ dataPath += path + File.pathSeparator;
+ }
+ try {
+ resourceManager.setDataPath(dataPath);
+ } catch (MalformedURLException e) {
+ throw new ResourceInitializationException(e);
+ }
+ }
if (!factory.isInitialized()) {
initializeExtensionWithClassPath();
}
@@ -907,6 +924,7 @@ public class RutaEngine extends JCasAnno
RutaParser parser = new RutaParser(tokens);
parser.setExternalFactory(factory);
parser.setResourcePaths(resourcePaths);
+ parser.setResourceManager(resourceManager);
String name = scriptFile.getName();
int lastIndexOf = name.lastIndexOf(SCRIPT_FILE_EXTENSION);
if (lastIndexOf != -1) {