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/27 13:46:09 UTC

svn commit: r1669570 - in /uima/ruta/trunk: ruta-core/src/main/java/org/apache/uima/ruta/descriptor/ ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/builder/ ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/

Author: pkluegl
Date: Fri Mar 27 12:46:08 2015
New Revision: 1669570

URL: http://svn.apache.org/r1669570
Log:
UIMA-3650
- fixed building without explicit default descriptors

Modified:
    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-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/builder/RutaBuilder.java
    uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java

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=1669570&r1=1669569&r2=1669570&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 Fri Mar 27 12:46:08 2015
@@ -71,11 +71,11 @@ public class RutaDescriptorBuilder {
 
   private static ResourceSpecifierFactory uimaFactory = UIMAFramework.getResourceSpecifierFactory();
 
-  private final String defaultTypeSystem;
+  private final URL defaultTypeSystem;
 
-  private final String defaultAnalysisEngine;
+  private final URL defaultAnalysisEngine;
 
-  public RutaDescriptorBuilder(String defaultTypeSystem, String defaultAnalysisEngine)
+  public RutaDescriptorBuilder(URL defaultTypeSystem, URL defaultAnalysisEngine)
           throws InvalidXMLException, IOException {
     super();
     this.defaultTypeSystem = defaultTypeSystem;
@@ -101,13 +101,8 @@ public class RutaDescriptorBuilder {
       rm.setDataPath(dataPath);
     }
     Map<String, String> typeNameMap = new HashMap<String, String>();
-    // String defaultTypeSystem2 = defaultTypeSystem.replaceAll("/", "\\\\");
-    File defaultTypeSystemFile = new File(defaultTypeSystem);
-    if (!defaultTypeSystemFile.exists()) {
-      System.out.println("Does not exist: " + defaultTypeSystemFile.getName());
-    }
     TypeSystemDescription initialTypeSystem = UIMAFramework.getXMLParser()
-            .parseTypeSystemDescription(new XMLInputSource(defaultTypeSystemFile));
+            .parseTypeSystemDescription(new XMLInputSource(defaultTypeSystem));
     CAS cas = CasCreationUtils.createCas(initialTypeSystem, null, new FsIndexDescription[0]);
     fillTypeNameMap(typeNameMap, cas.getTypeSystem());
     cas.release();
@@ -121,10 +116,26 @@ public class RutaDescriptorBuilder {
       String absoluteLocation = initialTypeSystem.getSourceUrlString();
       import_impl.setLocation(absoluteLocation);
     } else {
-      String relativeLocation = getRelativeLocation(defaultTypeSystemFile.toURI(), typeSystemOutput);
-      import_impl.setLocation(relativeLocation);
+      URI uri = null;
+      try {
+        uri = defaultTypeSystem.toURI();
+      } catch (URISyntaxException e) {
+        // do nothing
+      }
+      if (uri != null) {
+        String relativeLocation = getRelativeLocation(uri, typeSystemOutput);
+        if (relativeLocation != null) {
+          import_impl.setLocation(relativeLocation);
+        } else {
+          toInclude.add(initialTypeSystem);
+        }
+      } else {
+        toInclude.add(initialTypeSystem);
+      }
+    }
+    if(import_impl.getLocation() != null || import_impl.getName() != null) {
+      importList.add(import_impl);
     }
-    importList.add(import_impl);
     for (String eachName : desc.getImportedTypeSystems()) {
       String locate = RutaEngine.locate(eachName, enginePaths, ".xml");
       URL url = null;
@@ -208,8 +219,10 @@ public class RutaDescriptorBuilder {
       }
     }
     typeSystemDescription = CasCreationUtils.mergeTypeSystems(toInclude, rm);
-    Import[] newImports = importList.toArray(new Import[0]);
-    typeSystemDescription.setImports(newImports);
+    if (!importList.isEmpty()) {
+      Import[] newImports = importList.toArray(new Import[0]);
+      typeSystemDescription.setImports(newImports);
+    }
     if (option.isResolveImports()) {
       typeSystemDescription.resolveImports(rm);
     }
@@ -270,8 +283,8 @@ public class RutaDescriptorBuilder {
 
   public AnalysisEngineDescription createAnalysisEngineDescription(RutaDescriptorInformation desc,
           TypeSystemDescription typeSystemDescription, String typeSystemOutput,
-          String engineOutput, RutaBuildOptions option, String[] scriptPaths, String[] enginePaths, String[] resourcePaths,
-          ClassLoader classloader) throws InvalidXMLException, IOException {
+          String engineOutput, RutaBuildOptions option, String[] scriptPaths, String[] enginePaths,
+          String[] resourcePaths, ClassLoader classloader) throws InvalidXMLException, IOException {
     TypeSystemDescription aets = uimaFactory.createTypeSystemDescription();
     Import_impl import_impl = new Import_impl();
     if (option.isImportByName()) {
@@ -286,7 +299,8 @@ public class RutaDescriptorBuilder {
       }
     }
 
-    return configureEngine(desc, engineOutput, option, scriptPaths, enginePaths, resourcePaths, import_impl, aets);
+    return configureEngine(desc, engineOutput, option, scriptPaths, enginePaths, resourcePaths,
+            import_impl, aets);
   }
 
   public void build(RutaDescriptorInformation desc, String typeSystemOutput, String engineOutput,
@@ -387,11 +401,11 @@ public class RutaDescriptorBuilder {
 
   private AnalysisEngineDescription configureEngine(RutaDescriptorInformation desc,
           String engineOutput, RutaBuildOptions option, String[] scriptPaths,
-          String[] descriptorPaths, String[] resourcePaths,Import_impl import_impl, TypeSystemDescription aets)
-          throws InvalidXMLException, IOException {
+          String[] descriptorPaths, String[] resourcePaths, Import_impl import_impl,
+          TypeSystemDescription aets) throws InvalidXMLException, IOException {
 
     AnalysisEngineDescription analysisEngineDescription = UIMAFramework.getXMLParser()
-            .parseAnalysisEngineDescription(new XMLInputSource(new File(defaultAnalysisEngine)));
+            .parseAnalysisEngineDescription(new XMLInputSource(defaultAnalysisEngine));
     aets.setImports(new Import[] { import_impl });
     analysisEngineDescription.getAnalysisEngineMetaData().setTypeSystem(aets);
 
@@ -429,7 +443,7 @@ public class RutaDescriptorBuilder {
     if (parameterValue != null && parameterValue.length != 0) {
       resourceLocations.addAll(Arrays.asList(parameterValue));
     }
-    if(resourcePaths != null) {
+    if (resourcePaths != null) {
       resourceLocations.addAll(Arrays.asList(resourcePaths));
     }
     if (descriptorPaths != null) {
@@ -472,8 +486,12 @@ public class RutaDescriptorBuilder {
     if (!basePath.toFile().isDirectory()) {
       basePath = basePath.getParent();
     }
-    Path targetPath;
-    targetPath = Paths.get(target);
+    Path targetPath = null;
+    try {
+      targetPath = Paths.get(target);
+    } catch (Exception e) {
+      return null;
+    }
     Path relativePath = basePath.relativize(targetPath);
     return relativePath.toString();
   }
@@ -507,8 +525,8 @@ public class RutaDescriptorBuilder {
             ls.toArray(new String[0]));
   }
 
-  private TypeSystemDescription getTypeSystemDescriptor(URL url, RutaBuildOptions option, ResourceManager rm)
-          throws InvalidXMLException, IOException {
+  private TypeSystemDescription getTypeSystemDescriptor(URL url, RutaBuildOptions option,
+          ResourceManager rm) throws InvalidXMLException, IOException {
     TypeSystemDescription tsdesc = UIMAFramework.getXMLParser().parseTypeSystemDescription(
             new XMLInputSource(url));
     if (option.isResolveImports()) {

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=1669570&r1=1669569&r2=1669570&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 Fri Mar 27 12:46:08 2015
@@ -21,6 +21,7 @@ package org.apache.uima.ruta.descriptor;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
 
@@ -44,31 +45,29 @@ import org.apache.uima.util.InvalidXMLEx
 
 public class RutaDescriptorFactory {
 
-  private String defaultTypeSystem;
+  private URL defaultTypeSystem;
 
-  private String defaultEngine;
+  private URL defaultEngine;
 
-  public RutaDescriptorFactory() throws URISyntaxException {
+  public RutaDescriptorFactory() {
     super();
-    URL basicAEUrl = HtmlAnnotator.class.getClassLoader().getResource(
+    this.defaultEngine = HtmlAnnotator.class.getClassLoader().getResource(
             "org/apache/uima/ruta/engine/BasicEngine.xml");
-    URL basicTSUrl = HtmlAnnotator.class.getClassLoader().getResource(
+    this.defaultTypeSystem = HtmlAnnotator.class.getClassLoader().getResource(
             "org/apache/uima/ruta/engine/BasicTypeSystem.xml");
-    this.defaultEngine = new File(basicAEUrl.toURI()).getAbsolutePath();
-    this.defaultTypeSystem = new File(basicTSUrl.toURI()).getAbsolutePath();
   }
 
   public RutaDescriptorFactory(String defaultTypeSystem, String defaultEngine)
-          throws URISyntaxException {
+          throws MalformedURLException {
     super();
-      this.defaultTypeSystem = defaultTypeSystem;
-      this.defaultEngine = defaultEngine;
+      this.defaultTypeSystem = new File(defaultTypeSystem).toURI().toURL();
+      this.defaultEngine = new File(defaultEngine).toURI().toURL();
   }
 
-  public RutaDescriptorFactory(URL defaultTypeSystem, URL defaultEngine) throws URISyntaxException {
+  public RutaDescriptorFactory(URL defaultTypeSystem, URL defaultEngine)  {
     super();
-    this.defaultTypeSystem = new File(defaultTypeSystem.toURI()).getAbsolutePath();
-    this.defaultEngine = new File(defaultEngine.toURI()).getAbsolutePath();
+    this.defaultTypeSystem = defaultTypeSystem;
+    this.defaultEngine = defaultEngine;
   }
 
   public TypeSystemDescription createTypeSystemDescription(String typeSystemOutput,
@@ -166,19 +165,19 @@ public class RutaDescriptorFactory {
     return descInfo;
   }
 
-  public String getDefaultTypeSystem() {
+  public URL getDefaultTypeSystem() {
     return defaultTypeSystem;
   }
 
-  public void setDefaultTypeSystem(String defaultTypeSystem) {
+  public void setDefaultTypeSystem(URL defaultTypeSystem) {
     this.defaultTypeSystem = defaultTypeSystem;
   }
 
-  public String getDefaultEngine() {
+  public URL getDefaultEngine() {
     return defaultEngine;
   }
 
-  public void setDefaultEngine(String defaultEngine) {
+  public void setDefaultEngine(URL defaultEngine) {
     this.defaultEngine = defaultEngine;
   }
 

Modified: uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/builder/RutaBuilder.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/builder/RutaBuilder.java?rev=1669570&r1=1669569&r2=1669570&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/builder/RutaBuilder.java (original)
+++ uima/ruta/trunk/ruta-ep-ide/src/main/java/org/apache/uima/ruta/ide/core/builder/RutaBuilder.java Fri Mar 27 12:46:08 2015
@@ -206,7 +206,9 @@ public class RutaBuilder extends Abstrac
           String[] enginePaths, ClassLoader classloader) {
     RutaDescriptorBuilder builder = null;
     try {
-      builder = new RutaDescriptorBuilder(basicTypesystem, basicEngine);
+      URL tsUrl = new File(basicTypesystem).toURI().toURL();
+      URL aeUrl= new File(basicEngine).toURI().toURL();
+      builder = new RutaDescriptorBuilder(tsUrl, aeUrl);
     } catch (Exception e) {
       DLTKCore.error(e.getMessage(), e);
       if (DLTKCore.DEBUG_PARSER) {

Modified: uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java
URL: http://svn.apache.org/viewvc/uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java?rev=1669570&r1=1669569&r2=1669570&view=diff
==============================================================================
--- uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java (original)
+++ uima/ruta/trunk/ruta-maven-plugin/src/main/java/org/apache/uima/ruta/maven/RutaGenerateDescriptorMojo.java Fri Mar 27 12:46:08 2015
@@ -22,6 +22,7 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -141,17 +142,20 @@ public class RutaGenerateDescriptorMojo
       buildContext.refresh(analysisEngineOutputDirectory);
     }
 
-    RutaDescriptorFactory factory = null;
-    try {
-      factory = new RutaDescriptorFactory();
-    } catch (URISyntaxException e) {
-      getLog().warn("Failed to load default descriptors");
-    }
+    RutaDescriptorFactory factory = new RutaDescriptorFactory();
     if (typeSystemTemplate != null) {
-      factory.setDefaultTypeSystem(typeSystemTemplate.getAbsolutePath());
+      try {
+        factory.setDefaultTypeSystem(typeSystemTemplate.toURI().toURL());
+      } catch (MalformedURLException e) {
+        getLog().warn("Failed to get URL of " + typeSystemTemplate, e);
+      }
     }
     if (analysisEngineTemplate != null) {
-      factory.setDefaultEngine(analysisEngineTemplate.getAbsolutePath());
+      try {
+        factory.setDefaultEngine(analysisEngineTemplate.toURI().toURL());
+      } catch (MalformedURLException e) {
+        getLog().warn("Failed to get URL of " + analysisEngineTemplate, e);
+      }
     }
 
     URLClassLoader classloader = getClassloader(project, getLog());
@@ -177,17 +181,17 @@ public class RutaGenerateDescriptorMojo
         write(descriptions.getKey(), engineOutput);
         write(descriptions.getValue(), typeSystemOutput);
       } catch (RecognitionException re) {
-        getLog().warn("Failed to parse UIMA Ruta script file: " + file.getAbsolutePath());
-      } catch(IOException ioe) {
-        getLog().warn("Failed to load UIMA Ruta script file: " + file.getAbsolutePath());
-      } catch(SAXException ioe) {
-        getLog().warn("Failed to write descriptor: " + file.getAbsolutePath());
-      } catch(URISyntaxException urise) {
-        getLog().warn("Failed to get uri: " + file.getAbsolutePath());
-      } catch(ResourceInitializationException rie) {
-        getLog().warn("Failed initialize resource: " + file.getAbsolutePath());
-      } catch(InvalidXMLException ixmle) {
-        getLog().warn("Invalid XML while building descriptor: " + file.getAbsolutePath());
+        getLog().warn("Failed to parse UIMA Ruta script file: " + file.getAbsolutePath(), re);
+      } catch (IOException ioe) {
+        getLog().warn("Failed to load UIMA Ruta script file: " + file.getAbsolutePath(), ioe);
+      } catch (SAXException saxe) {
+        getLog().warn("Failed to write descriptor: " + file.getAbsolutePath(), saxe);
+      } catch (URISyntaxException urise) {
+        getLog().warn("Failed to get uri: " + file.getAbsolutePath(), urise);
+      } catch (ResourceInitializationException rie) {
+        getLog().warn("Failed initialize resource: " + file.getAbsolutePath(), rie);
+      } catch (InvalidXMLException ixmle) {
+        getLog().warn("Invalid XML while building descriptor: " + file.getAbsolutePath(), ixmle);
       }
     }