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) {