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/03/24 18:25:09 UTC

svn commit: r1668941 - in /uima/ruta/trunk/ruta-core/src: main/java/org/apache/uima/ruta/descriptor/ test/java/org/apache/uima/ruta/descriptor/

Author: pkluegl
Date: Tue Mar 24 17:25:09 2015
New Revision: 1668941

URL: http://svn.apache.org/r1668941
Log:
UIMA-3650
- more refactoring for building descriptors without ide

Added:
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/
    uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java   (with props)
Modified:
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java
    uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaBuildOptions.java Tue Mar 24 17:25:09 2015
@@ -19,13 +19,14 @@
 
 package org.apache.uima.ruta.descriptor;
 
+import java.util.Collections;
 import java.util.List;
 
 public class RutaBuildOptions {
 
-  private final List<String> language;
+  private List<String> language = Collections.emptyList();
 
-  private final List<String> engines;
+  private List<String> engines = Collections.emptyList();
 
   private boolean importByName = false;
 
@@ -33,11 +34,18 @@ public class RutaBuildOptions {
 
   private boolean errorOnDuplicateShortNames;
 
+  private String encoding;
+
   public RutaBuildOptions(List<String> language, List<String> engines) {
     super();
     this.language = language;
     this.engines = engines;
   }
+  
+  public RutaBuildOptions() {
+    super();
+  }
+  
 
   public List<String> getLanguage() {
     return language;
@@ -71,4 +79,12 @@ public class RutaBuildOptions {
     return errorOnDuplicateShortNames;
   }
 
+  public String getEncoding() {
+    return encoding;
+  }
+
+  public void setEncoding(String encoding) {
+    this.encoding = encoding;
+  }
+
 }

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorBuilder.java Tue Mar 24 17:25:09 2015
@@ -24,7 +24,6 @@ import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -72,42 +71,42 @@ public class RutaDescriptorBuilder {
 
   private static ResourceSpecifierFactory uimaFactory = UIMAFramework.getResourceSpecifierFactory();
 
-  private TypeSystemDescription typeSystemDescription;
+  // private TypeSystemDescription typeSystemDescription;
 
-  private AnalysisEngineDescription analysisEngineDescription;
+  // private AnalysisEngineDescription analysisEngineDescription;
 
   private final String defaultTypeSystem;
 
+  private final String defaultAnalysisEngine;
+
   private ResourceManager rm;
 
-  public RutaDescriptorBuilder(String defaultTypeSystem, String defaultEngine)
+  public RutaDescriptorBuilder(String defaultTypeSystem, String defaultAnalysisEngine)
           throws InvalidXMLException, IOException {
     super();
     this.defaultTypeSystem = defaultTypeSystem;
-    initialize(defaultEngine);
+    this.defaultAnalysisEngine = defaultAnalysisEngine;
   }
 
-  private void initialize(String defaultEngine) throws InvalidXMLException, IOException {
-    typeSystemDescription = uimaFactory.createTypeSystemDescription();
-    analysisEngineDescription = UIMAFramework.getXMLParser().parseAnalysisEngineDescription(
-            new XMLInputSource(new File(defaultEngine)));
-
-  }
+  public TypeSystemDescription createTypeSystemDescription(RutaDescriptorInformation desc,
+          String typeSystemOutput, RutaBuildOptions option, String[] enginePaths,
+          ClassLoader classloader) throws InvalidXMLException, ResourceInitializationException,
+          IOException, URISyntaxException {
 
-  public void build(RutaDescriptorInformation desc, String typeSystemOutput, String engineOutput,
-          RutaBuildOptions option, String mainScript, String[] scriptPaths, String[] enginePaths,
-          ClassLoader classloader) throws SAXException, InvalidXMLException,
-          IOException, ResourceInitializationException, URISyntaxException {
+    TypeSystemDescription typeSystemDescription = uimaFactory.createTypeSystemDescription();
 
-    rm = new ResourceManager_impl(classloader);
-    String dataPath = "";
-    for (String string : enginePaths) {
-      dataPath += string + File.pathSeparator;
+    ResourceManager rm = UIMAFramework.newDefaultResourceManager();
+    if (classloader != null) {
+      new ResourceManager_impl(classloader);
+    }
+    if (enginePaths != null) {
+      String dataPath = "";
+      for (String string : enginePaths) {
+        dataPath += string + File.pathSeparator;
+      }
+      rm.setDataPath(dataPath);
     }
-    rm.setDataPath(dataPath);
-
     Map<String, String> typeNameMap = new HashMap<String, String>();
-    Capability capability = uimaFactory.createCapability();
     // String defaultTypeSystem2 = defaultTypeSystem.replaceAll("/", "\\\\");
     File defaultTypeSystemFile = new File(defaultTypeSystem);
     if (!defaultTypeSystemFile.exists()) {
@@ -128,8 +127,7 @@ public class RutaDescriptorBuilder {
       String absoluteLocation = initialTypeSystem.getSourceUrlString();
       import_impl.setLocation(absoluteLocation);
     } else {
-      String relativeLocation = getRelativeLocation(defaultTypeSystemFile.toURI(),
-              typeSystemOutput);
+      String relativeLocation = getRelativeLocation(defaultTypeSystemFile.toURI(), typeSystemOutput);
       import_impl.setLocation(relativeLocation);
     }
     importList.add(import_impl);
@@ -146,7 +144,7 @@ public class RutaDescriptorBuilder {
         include = true;
         if (url == null) {
           throw new FileNotFoundException("Build process can't find " + eachName + " in "
-                  + mainScript);
+                  + desc.getScriptName());
         }
       }
       TypeSystemDescription each = getTypeSystemDescriptor(url, option);
@@ -179,14 +177,23 @@ public class RutaDescriptorBuilder {
         }
       } else {
         throw new FileNotFoundException("Build process can't find " + eachName + " in "
-                + mainScript);
+                + desc.getScriptName());
       }
     }
     for (String eachName : desc.getImportedScripts()) {
-      // TODO
       String locate = RutaEngine.locate(eachName, enginePaths, "TypeSystem.xml");
-      File file = new File(locate);
-      URL url = file.toURI().toURL();
+      URL url = null;
+      if (locate != null) {
+        File file = new File(locate);
+        url = file.toURI().toURL();
+      }
+      if (url == null) {
+        url = checkImportExistence(eachName, "xml", classloader);
+        if (url == null) {
+          throw new FileNotFoundException("Build process can't find " + eachName + " in "
+                  + desc.getScriptName());
+        }
+      }
       TypeSystemDescription each = getTypeSystemDescriptor(url, option);
       if (each != null) {
         fillTypeNameMap(typeNameMap, each);
@@ -197,20 +204,20 @@ public class RutaDescriptorBuilder {
           String absoluteLocation = each.getSourceUrlString();
           import_impl.setLocation(absoluteLocation);
         } else {
-          String relativeLocation = getRelativeLocation(file.toURI(), typeSystemOutput);
+          String relativeLocation = getRelativeLocation(url.toURI(), typeSystemOutput);
           import_impl.setLocation(relativeLocation);
         }
         importList.add(import_impl);
       } else {
         throw new FileNotFoundException("Build process can't find " + eachName + " in "
-                + mainScript);
+                + desc.getScriptName());
       }
     }
     typeSystemDescription = CasCreationUtils.mergeTypeSystems(toInclude, rm);
     Import[] newImports = importList.toArray(new Import[0]);
     typeSystemDescription.setImports(newImports);
     if (option.isResolveImports()) {
-        typeSystemDescription.resolveImports(rm);
+      typeSystemDescription.resolveImports(rm);
     }
 
     // TODO hotfixes: where do I get the final types??
@@ -224,15 +231,14 @@ public class RutaDescriptorBuilder {
     int typeIndex = 0;
     for (String eachType : desc.getTypeShortNames()) {
       StringTriple typeTriple = desc.getTypeTriples().get(typeIndex);
-      typeTriple = resolveType(typeTriple, typeNameMap, mainScript);
+      typeTriple = resolveType(typeTriple, typeNameMap, desc.getScriptName());
       if (typeSystemDescription.getType(typeTriple.getName()) != null) {
         continue;
       }
       if (!finalTypes.contains(typeTriple.getParent())) {
         TypeDescription newType = typeSystemDescription.addType(typeTriple.getName(),
                 typeTriple.getDescription(), typeTriple.getParent());
-        capability.addInputType(typeTriple.getName(), false);
-        capability.addOutputType(typeTriple.getName(), false);
+
         Collection<StringTriple> collection = desc.getFeatures().get(eachType);
         if (collection != null) {
           for (StringTriple eachFeature : collection) {
@@ -262,22 +268,49 @@ public class RutaDescriptorBuilder {
 
     types.addAll(Arrays.asList(presentTypes));
     typeSystemDescription.setTypes(types.toArray(new TypeDescription[0]));
-    typeSystemDescription.setName(mainScript + "TypeSystem");
+    typeSystemDescription.setName(desc.getScriptName() + "TypeSystem");
     typeSystemDescription.setSourceUrl(typeSystemFile.toURI().toURL());
+
+    return typeSystemDescription;
+  }
+
+  public AnalysisEngineDescription createAnalysisEngineDescription(RutaDescriptorInformation desc,
+          TypeSystemDescription typeSystemDescription, String typeSystemOutput,
+          String engineOutput, RutaBuildOptions option, String[] scriptPaths, String[] enginePaths, String[] resourcePaths,
+          ClassLoader classloader) throws InvalidXMLException, IOException {
     TypeSystemDescription aets = uimaFactory.createTypeSystemDescription();
-    import_impl = new Import_impl();
+    Import_impl import_impl = new Import_impl();
     if (option.isImportByName()) {
-      import_impl.setName(typeSystemDescription.getName());
+      if (typeSystemDescription != null) {
+        import_impl.setName(typeSystemDescription.getName());
+      }
     } else {
-      String relativeLocation = getRelativeLocation(new File(engineOutput).toURI(), typeSystemOutput);
-      import_impl.setLocation(relativeLocation);
+      if (typeSystemOutput != null) {
+        String relativeLocation = getRelativeLocation(new File(engineOutput).toURI(),
+                typeSystemOutput);
+        import_impl.setLocation(relativeLocation);
+      }
     }
 
-    File engineFile = configureEngine(desc, engineOutput, option, mainScript, scriptPaths,
-            enginePaths, capability, import_impl, aets);
+    return configureEngine(desc, engineOutput, option, scriptPaths, enginePaths, resourcePaths, import_impl, aets);
+  }
+
+  public void build(RutaDescriptorInformation desc, String typeSystemOutput, String engineOutput,
+          RutaBuildOptions option, String mainScript, String[] scriptPaths, String[] enginePaths,
+          ClassLoader classloader) throws SAXException, InvalidXMLException, IOException,
+          ResourceInitializationException, URISyntaxException {
+
+    TypeSystemDescription typeSystemDescription = createTypeSystemDescription(desc,
+            typeSystemOutput, option, enginePaths, classloader);
+
+    AnalysisEngineDescription analysisEngineDescription = createAnalysisEngineDescription(desc,
+            typeSystemDescription, typeSystemOutput, engineOutput, option, scriptPaths,
+            enginePaths, null, classloader);
 
+    File analysisEngineFile = getFile(engineOutput);
+    File typeSystemFile = getFile(typeSystemOutput);
     toFile(typeSystemDescription, typeSystemFile);
-    toFile(analysisEngineDescription, engineFile);
+    toFile(analysisEngineDescription, analysisEngineFile);
   }
 
   private void fillTypeNameMap(Map<String, String> typeNameMap, TypeSystem typeSystem) {
@@ -358,16 +391,25 @@ public class RutaDescriptorBuilder {
     return name;
   }
 
-  private File configureEngine(RutaDescriptorInformation desc, String engineOutput,
-          RutaBuildOptions option, String mainScript, String[] scriptPaths,
-          String[] descriptorPaths, Capability capability, Import_impl import_impl,
-          TypeSystemDescription aets) throws MalformedURLException {
+  private AnalysisEngineDescription configureEngine(RutaDescriptorInformation desc,
+          String engineOutput, RutaBuildOptions option, String[] scriptPaths,
+          String[] descriptorPaths, String[] resourcePaths,Import_impl import_impl, TypeSystemDescription aets)
+          throws InvalidXMLException, IOException {
+
+    AnalysisEngineDescription analysisEngineDescription = UIMAFramework.getXMLParser()
+            .parseAnalysisEngineDescription(new XMLInputSource(new File(defaultAnalysisEngine)));
     aets.setImports(new Import[] { import_impl });
     analysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(aets);
+
     File file = getFile(engineOutput);
     analysisEngineDescription.setSourceUrl(file.toURI().toURL());
 
     if (!desc.getTypeShortNames().isEmpty()) {
+      Capability capability = uimaFactory.createCapability();
+      for (StringTriple typeTriple : desc.getTypeTriples()) {
+        capability.addInputType(typeTriple.getName(), false);
+        capability.addOutputType(typeTriple.getName(), false);
+      }
       Capability[] capabilities = analysisEngineDescription.getAnalysisEngineMetaData()
               .getCapabilities();
       Capability[] newArray = new Capability[capabilities.length + 1];
@@ -377,11 +419,15 @@ public class RutaDescriptorBuilder {
     }
 
     analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
-            .setParameterValue(RutaEngine.PARAM_MAIN_SCRIPT, mainScript);
-    analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
-            .setParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, scriptPaths);
-    analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
-            .setParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS, descriptorPaths);
+            .setParameterValue(RutaEngine.PARAM_MAIN_SCRIPT, desc.getScriptName());
+    if (scriptPaths != null) {
+      analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
+              .setParameterValue(RutaEngine.PARAM_SCRIPT_PATHS, scriptPaths);
+    }
+    if (descriptorPaths != null) {
+      analysisEngineDescription.getAnalysisEngineMetaData().getConfigurationParameterSettings()
+              .setParameterValue(RutaEngine.PARAM_DESCRIPTOR_PATHS, descriptorPaths);
+    }
     String[] parameterValue = (String[]) analysisEngineDescription.getAnalysisEngineMetaData()
             .getConfigurationParameterSettings().getParameterValue(RutaEngine.PARAM_RESOURCE_PATHS);
     Set<String> resourceLocations = new HashSet<String>();
@@ -389,11 +435,15 @@ public class RutaDescriptorBuilder {
     if (parameterValue != null && parameterValue.length != 0) {
       resourceLocations.addAll(Arrays.asList(parameterValue));
     }
-    for (String string : descriptorPaths) {
-      File descDir = new File(string);
-      File defaultResourceDir = new File(descDir.getParent(),
-              "resources");
-      resourceLocations.add(defaultResourceDir.getAbsolutePath());
+    if(resourcePaths != null) {
+      resourceLocations.addAll(Arrays.asList(resourcePaths));
+    }
+    if (descriptorPaths != null) {
+      for (String string : descriptorPaths) {
+        File descDir = new File(string);
+        File defaultResourceDir = new File(descDir.getParent(), "resources");
+        resourceLocations.add(defaultResourceDir.getAbsolutePath());
+      }
     }
     analysisEngineDescription
             .getAnalysisEngineMetaData()
@@ -417,24 +467,25 @@ public class RutaDescriptorBuilder {
             .setParameterValue(RutaEngine.PARAM_ADDITIONAL_UIMAFIT_ENGINES,
                     additionalUimafitEnginesArray);
 
-    analysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(typeSystemDescription);
+    analysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(aets);
 
-    configureExtensions(option);
-    return file;
+    configureExtensions(analysisEngineDescription, option);
+    return analysisEngineDescription;
   }
 
   private String getRelativeLocation(URI target, String base) {
     Path basePath = Paths.get(base);
-    if( !basePath.toFile().isDirectory()) {
+    if (!basePath.toFile().isDirectory()) {
       basePath = basePath.getParent();
     }
     Path targetPath;
-      targetPath = Paths.get(target);
+    targetPath = Paths.get(target);
     Path relativePath = basePath.relativize(targetPath);
     return relativePath.toString();
   }
 
-  private void configureExtensions(RutaBuildOptions options) {
+  private void configureExtensions(AnalysisEngineDescription analysisEngineDescription,
+          RutaBuildOptions options) {
     ConfigurationParameterSettings configurationParameterSettings = analysisEngineDescription
             .getAnalysisEngineMetaData().getConfigurationParameterSettings();
 
@@ -447,18 +498,19 @@ public class RutaDescriptorBuilder {
 
     List<String> es = new ArrayList<String>();
     List<String> ls = new ArrayList<String>();
-    if(extensions != null) {
+    if (extensions != null) {
       es.addAll(Arrays.asList(extensions));
     }
     es.addAll(languageExtensions);
-    if(loaders != null) {
+    if (loaders != null) {
       ls.addAll(Arrays.asList(loaders));
     }
     ls.addAll(options.getEngines());
 
-    configurationParameterSettings.setParameterValue(RutaEngine.PARAM_ADDITIONAL_EXTENSIONS, es.toArray(new String[0]));
-    configurationParameterSettings
-            .setParameterValue(RutaEngine.PARAM_ADDITIONAL_ENGINE_LOADERS, ls.toArray(new String[0]));
+    configurationParameterSettings.setParameterValue(RutaEngine.PARAM_ADDITIONAL_EXTENSIONS,
+            es.toArray(new String[0]));
+    configurationParameterSettings.setParameterValue(RutaEngine.PARAM_ADDITIONAL_ENGINE_LOADERS,
+            ls.toArray(new String[0]));
   }
 
   private TypeSystemDescription getTypeSystemDescriptor(URL url, RutaBuildOptions option)

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorFactory.java Tue Mar 24 17:25:09 2015
@@ -20,44 +20,138 @@
 package org.apache.uima.ruta.descriptor;
 
 import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
 
 import org.antlr.runtime.ANTLRFileStream;
 import org.antlr.runtime.ANTLRStringStream;
 import org.antlr.runtime.CharStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.RecognitionException;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngineDescription;
+import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.metadata.TypeSystemDescription;
-import org.apache.uima.ruta.RutaModule;
+import org.apache.uima.ruta.engine.RutaEngine;
+import org.apache.uima.ruta.extensions.RutaExternalFactory;
 import org.apache.uima.ruta.parser.RutaLexer;
 import org.apache.uima.ruta.parser.RutaParser;
+import org.apache.uima.util.InvalidXMLException;
 
 public class RutaDescriptorFactory {
 
-  public RutaDescriptorFactory() {
+  private String defaultTypeSystem;
+
+  private String defaultEngine;
+
+  public RutaDescriptorFactory(String defaultTypeSystem, String defaultEngine) {
     super();
+    this.defaultTypeSystem = defaultTypeSystem;
+    this.defaultEngine = defaultEngine;
+  }
+  
+  public RutaDescriptorFactory(URL defaultTypeSystem, URL defaultEngine) throws URISyntaxException {
+    super();
+    this.defaultTypeSystem = new File(defaultTypeSystem.toURI()).getAbsolutePath();
+    this.defaultEngine = new File(defaultEngine.toURI()).getAbsolutePath();
+  }
+
+  public TypeSystemDescription createTypeSystemDescription(String typeSystemOutput,
+          RutaDescriptorInformation descriptorInformation, RutaBuildOptions options,
+          ClassLoader classloader) throws RecognitionException, IOException, InvalidXMLException,
+          ResourceInitializationException, URISyntaxException {
+
+    RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
+
+    TypeSystemDescription typeSystemDescription = builder.createTypeSystemDescription(
+            descriptorInformation, typeSystemOutput, options, null, classloader);
+
+    return typeSystemDescription;
+  }
+
+  public AnalysisEngineDescription createAnalysisEngineDescription(String engineOutput,
+          RutaDescriptorInformation descriptorInformation, RutaBuildOptions options,
+          String[] scriptPaths, String[] descriptorPaths, String[] resourcePaths,
+          ClassLoader classloader) throws IOException, RecognitionException, InvalidXMLException {
+
+    RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
+
+    AnalysisEngineDescription analysisEngineDescription = builder.createAnalysisEngineDescription(
+            descriptorInformation, null, null, engineOutput, options, scriptPaths, descriptorPaths,
+            resourcePaths, classloader);
+
+    return analysisEngineDescription;
   }
 
-  public TypeSystemDescription createTypeSystemDescription(String rules) throws RecognitionException {
-    CharStream st = new ANTLRStringStream(rules);
+  public Pair<AnalysisEngineDescription, TypeSystemDescription> createDescriptions(
+          String engineOutput, String typeSystemOutput,
+          RutaDescriptorInformation descriptorInformation, RutaBuildOptions options,
+          String[] scriptPaths, String[] descriptorPaths, String[] resourcePaths,
+          ClassLoader classloader) throws IOException, RecognitionException, InvalidXMLException,
+          ResourceInitializationException, URISyntaxException {
+
+    RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
+
+    TypeSystemDescription typeSystemDescription = builder.createTypeSystemDescription(
+            descriptorInformation, typeSystemOutput, options, descriptorPaths, classloader);
+
+    AnalysisEngineDescription analysisEngineDescription = builder.createAnalysisEngineDescription(
+            descriptorInformation, typeSystemDescription, typeSystemOutput, engineOutput, options,
+            scriptPaths, descriptorPaths, resourcePaths, classloader);
+
+    return new ImmutablePair<AnalysisEngineDescription, TypeSystemDescription>(
+            analysisEngineDescription, typeSystemDescription);
+  }
+
+  public RutaDescriptorInformation parseDescriptorInformation(File scriptFile, String encoding)
+          throws IOException, RecognitionException {
+    CharStream st = new ANTLRFileStream(scriptFile.getAbsolutePath(), encoding);
     RutaLexer lexer = new RutaLexer(st);
     CommonTokenStream tokens = new CommonTokenStream(lexer);
     RutaParser parser = new RutaParser(tokens);
     RutaDescriptorInformation descInfo = new RutaDescriptorInformation();
-//    parser.setContext(context);
-//    parser.setExternalFactory(factory);
-//    parser.setResourcePaths(resourcePaths);
-//    parser.setResourceManager(resourceManager);
     parser.setDescriptorInformation(descInfo);
-    parser.file_input("Anonymous");
-//    RutaDescriptorBuilder builder = new RutaDescriptorBuilder(defaultTypeSystem, defaultEngine);
-    return null;
+    // TODO no context?
+    parser.setContext(null);
+    // TODO initialize extension?
+    parser.setExternalFactory(new RutaExternalFactory());
+    // TODO no resource, avoid fail on missing resources while parsing
+    parser.setResourcePaths(new String[0]);
+    // TODO what about the loading from classpath?
+    parser.setResourceManager(UIMAFramework.newDefaultResourceManager());
+    String name = scriptFile.getName();
+    int lastIndexOf = name.lastIndexOf(RutaEngine.SCRIPT_FILE_EXTENSION);
+    if (lastIndexOf != -1) {
+      name = name.substring(0, lastIndexOf);
+    }
+    descInfo.setScriptName(name);
+    parser.file_input(name);
+    return descInfo;
   }
-  
-  public AnalysisEngineDescription createAnalysisEngineDescription() {
-    return null;
+
+  public RutaDescriptorInformation parseDescriptorInformation(String script)
+          throws IOException, RecognitionException {
+    CharStream st = new ANTLRStringStream(script);
+    RutaLexer lexer = new RutaLexer(st);
+    CommonTokenStream tokens = new CommonTokenStream(lexer);
+    RutaParser parser = new RutaParser(tokens);
+    RutaDescriptorInformation descInfo = new RutaDescriptorInformation();
+    parser.setDescriptorInformation(descInfo);
+    // TODO no context?
+    parser.setContext(null);
+    // TODO initialize extension?
+    parser.setExternalFactory(new RutaExternalFactory());
+    // TODO no resource, avoid fail on missing resources while parsing
+    parser.setResourcePaths(new String[0]);
+    // TODO what about the loading from classpath?
+    parser.setResourceManager(UIMAFramework.newDefaultResourceManager());
+    String name = "Anonymous";
+    descInfo.setScriptName(name);
+    parser.file_input(name);
+    return descInfo;
   }
   
-  
 }
-

Modified: uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java?rev=1668941&r1=1668940&r2=1668941&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java (original)
+++ uima/ruta/trunk/ruta-core/src/main/java/org/apache/uima/ruta/descriptor/RutaDescriptorInformation.java Tue Mar 24 17:25:09 2015
@@ -44,6 +44,8 @@ public class RutaDescriptorInformation {
 
   private Collection<String> importedUimafitEngines;
 
+  private String scriptName;
+
   public RutaDescriptorInformation() {
     super();
     typeShortNames = new ArrayList<String>();
@@ -136,5 +138,13 @@ public class RutaDescriptorInformation {
   public Collection<String> getImportedUimafitEngines() {
     return importedUimafitEngines;
   }
+
+  public void setScriptName(String scriptName) {
+    this.scriptName = scriptName;    
+  }
+  
+  public String getScriptName() {
+  return scriptName;
+  }
   
 }

Added: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java?rev=1668941&view=auto
==============================================================================
--- uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java (added)
+++ uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java Tue Mar 24 17:25:09 2015
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.uima.ruta.descriptor;
+
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import org.apache.uima.ruta.engine.HtmlAnnotator;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class GenerateDescriptorTest {
+
+//  private static URL basicAEUrl;
+//  private static URL basicTSUrl;
+//
+//  @BeforeClass
+//  public static void setUpClass() {
+//    basicAEUrl = HtmlAnnotator.class.getClassLoader().getResource("BasicEngine.xml");
+//    if (basicAEUrl == null) {
+//      basicAEUrl = HtmlAnnotator.class.getClassLoader().getResource(
+//              "org/apache/uima/ruta/engine/BasicEngine.xml");
+//    }
+//    
+//    basicTSUrl = HtmlAnnotator.class.getClassLoader().getResource("BasicTypeSystem.xml");
+//    if (basicTSUrl == null) {
+//      basicTSUrl = HtmlAnnotator.class.getClassLoader().getResource(
+//              "org/apache/uima/ruta/engine/BasicTypeSystem.xml");
+//    }
+//  }
+//  
+//  
+//  @Test
+//  public void testAnalysisEngineDescriptor() {
+//    
+//  }
+//  
+//  @Test
+//  public void testTypeSystemDescriptor() throws URISyntaxException {
+//    String script = "";
+//    script += "PACKAGE test.package;\n";
+//    script += "TYPESYSTEM HtmlTypeSystem;\n";
+//    script += "DECLARE SimpleType;\n";
+//    script += "DECLARE SimpleType ComplexType (SimpleType fs, STRING s, BOOLEAN b, INT i);\n";
+//    script += "BLOCK(sub) Document{}{\n";
+//    script += "DECLARE InnerType;\n";
+//    script += "}\n";
+//    
+//    RutaDescriptorFactory rdf = new RutaDescriptorFactory(basicTSUrl, basicAEUrl);
+//    RutaDescriptorInformation descriptorInformation = rdf.parseDescriptorInformation(script);
+//    RutaBuildOptions options = new RutaBuildOptions();
+//    rdf.createTypeSystemDescription(typeSystemOutput, descriptorInformation, options, GenerateDescriptorTest.class.getClassLoader())
+//    
+//    
+//  }
+//  
+  
+}

Propchange: uima/ruta/trunk/ruta-core/src/test/java/org/apache/uima/ruta/descriptor/GenerateDescriptorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native