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 2013/04/03 17:03:04 UTC

svn commit: r1464062 - in /uima/sandbox/textmarker/trunk: textmarker-core/ textmarker-core/src/main/java/org/apache/uima/textmarker/engine/ textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/ textmarker-core/src/main/resources/org/apac...

Author: pkluegl
Date: Wed Apr  3 15:03:04 2013
New Revision: 1464062

URL: http://svn.apache.org/r1464062
Log:
UIMA-2519
- added hotfix for multi view cas (wrapped by aae)

Added:
    uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAED.xml
    uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAEDBasicEngine.xml
Modified:
    uima/sandbox/textmarker/trunk/textmarker-core/pom.xml
    uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarker.java
    uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarkerEngine.java
    uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/DefaultEngineLoader.java
    uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/IEngineLoader.java
    uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/TextMarkerEngineLoader.java
    uima/sandbox/textmarker/trunk/textmarker-ep-addons/src/main/java/org/apache/uima/textmarker/explain/apply/ApplyViewPage.java
    uima/sandbox/textmarker/trunk/textmarker-ep-engine/pom.xml
    uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLaunchConfigurationDelegate.java
    uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLauncher.java

Modified: uima/sandbox/textmarker/trunk/textmarker-core/pom.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/pom.xml?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/pom.xml (original)
+++ uima/sandbox/textmarker/trunk/textmarker-core/pom.xml Wed Apr  3 15:03:04 2013
@@ -82,6 +82,12 @@
       <artifactId>commons-lang3</artifactId>
       <version>3.1</version>
     </dependency>
+    <!-- needed for textmarker-ep-ide - TODO this should be moved to engine?-->
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.4</version>
+    </dependency>
   </dependencies>
   <scm>
     <url>http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core</url>

Modified: uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarker.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarker.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarker.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarker.java Wed Apr  3 15:03:04 2013
@@ -21,16 +21,18 @@ package org.apache.uima.textmarker.engin
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
 import java.net.URL;
+import java.nio.charset.Charset;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
-import org.apache.uima.analysis_engine.AnalysisEngineDescription;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.resource.ResourceInitializationException;
-import org.apache.uima.resource.ResourceManager;
 import org.apache.uima.resource.ResourceSpecifier;
 import org.apache.uima.util.FileUtils;
 import org.apache.uima.util.InvalidXMLException;
@@ -40,21 +42,11 @@ public class TextMarker {
 
   public static void apply(CAS cas, String script) throws IOException, InvalidXMLException,
           ResourceInitializationException, ResourceConfigurationException,
-          AnalysisEngineProcessException {
+          AnalysisEngineProcessException, URISyntaxException {
+    String viewName = cas.getViewName();
     URL aedesc = TextMarkerEngine.class.getResource("BasicEngine.xml");
-    XMLInputSource inae = new XMLInputSource(aedesc);
-    ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(inae);
-    ResourceManager resMgr = UIMAFramework.newDefaultResourceManager();
-    AnalysisEngineDescription aed = (AnalysisEngineDescription) specifier;
+    AnalysisEngine ae = wrapAnalysisEngine(aedesc, viewName);
     
-//    TypeSystemDescription basicTypeSystem = aed.getAnalysisEngineMetaData().getTypeSystem();
-//    Collection<TypeSystemDescription> tsds = new ArrayList<TypeSystemDescription>();
-//    tsds.add(basicTypeSystem);
-//    TypeSystemDescription mergeTypeSystems = CasCreationUtils.mergeTypeSystems(tsds);
-//    aed.getAnalysisEngineMetaData().setTypeSystem(mergeTypeSystems);
-//    aed.resolveImports(resMgr);
-
-    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(aed, resMgr, null);
     File scriptFile = File.createTempFile("TextMarker", ".tm");
     scriptFile.deleteOnExit();
     if (!script.startsWith("PACKAGE")) {
@@ -71,4 +63,39 @@ public class TextMarker {
     ae.destroy();
   }
 
+  public static AnalysisEngine wrapAnalysisEngine(URL descriptorUrl, String viewName)
+          throws ResourceInitializationException, ResourceConfigurationException,
+          InvalidXMLException, IOException, URISyntaxException {
+    return wrapAnalysisEngine(descriptorUrl, viewName, false, Charset.defaultCharset().name());
+  }
+
+  public static AnalysisEngine wrapAnalysisEngine(URL descriptorUrl, String viewName, boolean textmarkerEngine, 
+          String encoding) throws ResourceInitializationException, ResourceConfigurationException,
+          InvalidXMLException, IOException, URISyntaxException {
+    if (viewName.equals(CAS.NAME_DEFAULT_SOFA)) {
+      XMLInputSource in = new XMLInputSource(descriptorUrl);
+      ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
+      AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
+      return ae;
+    } else {
+      InputStream inputStream = null;
+      if(textmarkerEngine) {
+        inputStream = TextMarker.class.getResourceAsStream("AAEDBasicEngine.xml");
+      } else {
+        inputStream = TextMarker.class.getResourceAsStream("AAED.xml");
+      }
+      String aaedString = IOUtils.toString(inputStream, encoding);
+      String absolutePath = descriptorUrl.toExternalForm();
+      aaedString = aaedString.replaceAll("\\$\\{sofaName\\}", viewName);
+      aaedString = aaedString.replaceAll("\\$\\{descriptorLocation\\}", absolutePath);
+      File tempFile = File.createTempFile("TextMarkerAAED", ".xml");
+      FileUtils.saveString2File(aaedString, tempFile);
+      XMLInputSource in = new XMLInputSource(tempFile);
+      ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
+      AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
+      tempFile.delete();
+      return ae;
+    }
+  }
+
 }

Modified: uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarkerEngine.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarkerEngine.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarkerEngine.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/engine/TextMarkerEngine.java Wed Apr  3 15:03:04 2013
@@ -23,6 +23,7 @@ import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -248,7 +249,7 @@ public class TextMarkerEngine extends JC
     }
     if (!reloadScript) {
       try {
-        initializeScript();
+        initializeScript(CAS.NAME_DEFAULT_SOFA);
       } catch (AnalysisEngineProcessException e) {
         throw new ResourceInitializationException(e);
       }
@@ -258,8 +259,8 @@ public class TextMarkerEngine extends JC
   @Override
   public void process(JCas jcas) throws AnalysisEngineProcessException {
     CAS cas = jcas.getCas();
-    if (reloadScript) {
-      initializeScript();
+    if (reloadScript || !cas.getViewName().equals(CAS.NAME_DEFAULT_SOFA)) {
+      initializeScript(cas.getViewName());
     } else {
       resetEnvironments(cas);
     }
@@ -436,7 +437,7 @@ public class TextMarkerEngine extends JC
     return result;
   }
 
-  private void initializeScript() throws AnalysisEngineProcessException {
+  private void initializeScript(String viewName) throws AnalysisEngineProcessException {
     if (mainScript == null) {
       return;
     }
@@ -472,7 +473,7 @@ public class TextMarkerEngine extends JC
         if (location == null) {
           String locationIS = locateIS(eachEngineLocation, descriptorPaths, ".xml");
           try {
-            eachEngine = engineLoader.loadEngineIS(locationIS);
+            eachEngine = engineLoader.loadEngineIS(locationIS, viewName);
           } catch (InvalidXMLException e) {
             throw new AnalysisEngineProcessException(new FileNotFoundException("Engine at ["
                     + eachEngineLocation + "] cannot be found in ["
@@ -491,10 +492,14 @@ public class TextMarkerEngine extends JC
                     + collectionToString(descriptorPaths)
                     + "] with extension .xml (from mainScript=" + mainScript + " in "
                     + collectionToString(scriptPaths)));
+          } catch (ResourceConfigurationException e) {
+            throw new AnalysisEngineProcessException(e);
+          } catch (URISyntaxException e) {
+            throw new AnalysisEngineProcessException(e);
           }
         } else {
           try {
-            eachEngine = engineLoader.loadEngine(location);
+            eachEngine = engineLoader.loadEngine(location, viewName);
           } catch (Exception e) {
             throw new AnalysisEngineProcessException(e);
           }
@@ -514,7 +519,7 @@ public class TextMarkerEngine extends JC
 
     if (additionalScriptLocations != null) {
       for (String add : additionalScriptLocations) {
-        recursiveLoadScript(add, additionalScripts, additionalEngines);
+        recursiveLoadScript(add, additionalScripts, additionalEngines, viewName);
       }
     }
 
@@ -607,7 +612,7 @@ public class TextMarkerEngine extends JC
   }
 
   private void recursiveLoadScript(String toLoad, Map<String, TextMarkerModule> additionalScripts,
-          Map<String, AnalysisEngine> additionalEngines) throws AnalysisEngineProcessException {
+          Map<String, AnalysisEngine> additionalEngines, String viewName) throws AnalysisEngineProcessException {
     String location = locate(toLoad, scriptPaths, ".tm");
     try {
       TypeSystemDescription localTSD = getLocalTSD(toLoad);
@@ -615,7 +620,7 @@ public class TextMarkerEngine extends JC
       additionalScripts.put(toLoad, eachScript);
       for (String add : eachScript.getScripts().keySet()) {
         if (!additionalScripts.containsKey(add)) {
-          recursiveLoadScript(add, additionalScripts, additionalEngines);
+          recursiveLoadScript(add, additionalScripts, additionalEngines, viewName);
         }
       }
       Set<String> engineKeySet = eachScript.getEngines().keySet();
@@ -623,7 +628,7 @@ public class TextMarkerEngine extends JC
         if (!additionalEngines.containsKey(eachEngineLocation)) {
           String engineLocation = locate(eachEngineLocation, descriptorPaths, ".xml");
           try {
-            AnalysisEngine eachEngine = engineLoader.loadEngine(engineLocation);
+            AnalysisEngine eachEngine = engineLoader.loadEngine(engineLocation, viewName);
             additionalEngines.put(eachEngineLocation, eachEngine);
           } catch (Exception e) {
             throw new AnalysisEngineProcessException(e);

Modified: uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/DefaultEngineLoader.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/DefaultEngineLoader.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/DefaultEngineLoader.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/DefaultEngineLoader.java Wed Apr  3 15:03:04 2013
@@ -19,33 +19,37 @@
 
 package org.apache.uima.textmarker.extensions;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.net.URL;
 
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
+import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.resource.ResourceSpecifier;
+import org.apache.uima.textmarker.engine.TextMarker;
 import org.apache.uima.util.InvalidXMLException;
 import org.apache.uima.util.XMLInputSource;
 
 public abstract class DefaultEngineLoader implements IEngineLoader {
 
-  public AnalysisEngine loadEngine(String location) throws InvalidXMLException,
-          ResourceInitializationException, IOException {
-    return loadEngineMyself(location);
+  public AnalysisEngine loadEngine(String location, String viewName) throws InvalidXMLException, ResourceInitializationException, ResourceConfigurationException, IOException, URISyntaxException  {
+    return loadEngineMyself(location, viewName);
   }
 
-  protected AnalysisEngine loadEngineMyself(String location) throws IOException,
-          InvalidXMLException, ResourceInitializationException {
-    XMLInputSource in = new XMLInputSource(location);
-    ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
-    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
+  protected AnalysisEngine loadEngineMyself(String location, String viewName) throws IOException,
+          InvalidXMLException, ResourceInitializationException, ResourceConfigurationException, URISyntaxException {
+    URL url = new File(location).toURL();
+    AnalysisEngine ae = TextMarker.wrapAnalysisEngine(url, viewName);
     return ae;
   }
 
   protected AnalysisEngine loadEngineMyselfIS(String location) throws IOException,
           InvalidXMLException, ResourceInitializationException {
+    // TODO handle multi-view CASs
     InputStream locationIS = getClass().getClassLoader().getResourceAsStream(location);
     XMLInputSource in = new XMLInputSource(locationIS, null);
     ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);

Modified: uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/IEngineLoader.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/IEngineLoader.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/IEngineLoader.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/IEngineLoader.java Wed Apr  3 15:03:04 2013
@@ -15,13 +15,15 @@
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
-*/
+ */
 
 package org.apache.uima.textmarker.extensions;
 
 import java.io.IOException;
+import java.net.URISyntaxException;
 
 import org.apache.uima.analysis_engine.AnalysisEngine;
+import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.util.InvalidXMLException;
 
@@ -29,7 +31,8 @@ public interface IEngineLoader {
 
   String[] getKnownEngines();
 
-  AnalysisEngine loadEngine(String location) throws InvalidXMLException,
-          ResourceInitializationException, IOException;
+  AnalysisEngine loadEngine(String location, String viewName) throws InvalidXMLException,
+          ResourceInitializationException, ResourceConfigurationException, IOException,
+          URISyntaxException;
 
 }

Modified: uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/TextMarkerEngineLoader.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/TextMarkerEngineLoader.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/TextMarkerEngineLoader.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-core/src/main/java/org/apache/uima/textmarker/extensions/TextMarkerEngineLoader.java Wed Apr  3 15:03:04 2013
@@ -21,10 +21,12 @@ package org.apache.uima.textmarker.exten
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.uima.analysis_engine.AnalysisEngine;
+import org.apache.uima.resource.ResourceConfigurationException;
 import org.apache.uima.resource.ResourceInitializationException;
 import org.apache.uima.util.InvalidXMLException;
 
@@ -38,26 +40,28 @@ public class TextMarkerEngineLoader exte
   }
 
   @Override
-  public AnalysisEngine loadEngine(String location) throws InvalidXMLException,
-          ResourceInitializationException, IOException {
+  public AnalysisEngine loadEngine(String location, String viewName) throws InvalidXMLException,
+          ResourceInitializationException, ResourceConfigurationException, IOException,
+          URISyntaxException {
     String name = getEngineName(location);
     AnalysisEngine result = null;
     IEngineLoader engineLoader = loaders.get(name);
     if (engineLoader != null) {
-      result = engineLoader.loadEngine(location);
+      result = engineLoader.loadEngine(location, viewName);
     } else {
-      result = loadEngineMyself(location);
+      result = loadEngineMyself(location, viewName);
     }
     return result;
   }
 
-  public AnalysisEngine loadEngineIS(String location) throws InvalidXMLException,
-          ResourceInitializationException, IOException {
+  public AnalysisEngine loadEngineIS(String location, String viewName) throws InvalidXMLException,
+          ResourceInitializationException, IOException, ResourceConfigurationException,
+          URISyntaxException {
     String name = getEngineNameIS(location);
     AnalysisEngine result = null;
     IEngineLoader engineLoader = loaders.get(name);
     if (engineLoader != null) {
-      result = engineLoader.loadEngine(location);
+      result = engineLoader.loadEngine(location, viewName);
     } else {
       result = loadEngineMyselfIS(location);
     }

Added: uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAED.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAED.xml?rev=1464062&view=auto
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAED.xml (added)
+++ uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAED.xml Wed Apr  3 15:03:04 2013
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+
+<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
+  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+  <primitive>false</primitive>
+  <delegateAnalysisEngineSpecifiers>
+    <delegateAnalysisEngine key="TextMarkerEngine">
+      <import location="${descriptorLocation}"/>
+    </delegateAnalysisEngine>
+  </delegateAnalysisEngineSpecifiers>
+  <analysisEngineMetaData>
+    <name>AAED</name>
+    <description/>
+    <version>1.0</version>
+    <vendor/>
+    <configurationParameters/>
+    <configurationParameterSettings/>
+    <flowConstraints>
+      <fixedFlow>
+        <node>TextMarkerEngine</node>
+      </fixedFlow>
+    </flowConstraints>
+    <fsIndexCollection/>
+    <capabilities>
+      <capability>
+        <inputs/>
+        <outputs/>
+        <inputSofas>
+          <sofaName>${sofaName}</sofaName>
+        </inputSofas>
+        <languagesSupported/>
+      </capability>
+    </capabilities>
+    <operationalProperties>
+      <modifiesCas>true</modifiesCas>
+      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
+      <outputsNewCASes>false</outputsNewCASes>
+    </operationalProperties>
+  </analysisEngineMetaData>
+  <resourceManagerConfiguration/>
+  <sofaMappings>
+    <sofaMapping>
+      <componentKey>TextMarkerEngine</componentKey>
+      <aggregateSofaName>${sofaName}</aggregateSofaName>
+    </sofaMapping>
+  </sofaMappings>
+</analysisEngineDescription>

Added: uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAEDBasicEngine.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAEDBasicEngine.xml?rev=1464062&view=auto
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAEDBasicEngine.xml (added)
+++ uima/sandbox/textmarker/trunk/textmarker-core/src/main/resources/org/apache/uima/textmarker/engine/AAEDBasicEngine.xml Wed Apr  3 15:03:04 2013
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+
+<analysisEngineDescription xmlns="http://uima.apache.org/resourceSpecifier">
+  <frameworkImplementation>org.apache.uima.java</frameworkImplementation>
+  <primitive>false</primitive>
+  <delegateAnalysisEngineSpecifiers>
+    <delegateAnalysisEngine key="TextMarkerEngine">
+      <import location="${descriptorLocation}"/>
+    </delegateAnalysisEngine>
+  </delegateAnalysisEngineSpecifiers>
+  <analysisEngineMetaData>
+    <name>AAED</name>
+    <description/>
+    <version>1.0</version>
+    <vendor/>
+    <configurationParameters>
+      <configurationParameter>
+        <name>debug</name>
+        <type>Boolean</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory>
+        <overrides>
+          <parameter>TextMarkerEngine/debug</parameter>
+        </overrides>
+      </configurationParameter>
+      <configurationParameter>
+        <name>debugWithMatches</name>
+        <type>Boolean</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory>
+        <overrides>
+          <parameter>TextMarkerEngine/debugWithMatches</parameter>
+        </overrides>
+      </configurationParameter>
+      <configurationParameter>
+        <name>profile</name>
+        <type>Boolean</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory>
+        <overrides>
+          <parameter>TextMarkerEngine/profile</parameter>
+        </overrides>
+      </configurationParameter>
+      <configurationParameter>
+        <name>statistics</name>
+        <type>Boolean</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory>
+        <overrides>
+          <parameter>TextMarkerEngine/statistics</parameter>
+        </overrides>
+      </configurationParameter>
+      <configurationParameter>
+        <name>createdBy</name>
+        <type>Boolean</type>
+        <multiValued>false</multiValued>
+        <mandatory>false</mandatory>
+        <overrides>
+          <parameter>TextMarkerEngine/createdBy</parameter>
+        </overrides>
+      </configurationParameter>
+    </configurationParameters>
+    <configurationParameterSettings/>
+    <flowConstraints>
+      <fixedFlow>
+        <node>TextMarkerEngine</node>
+      </fixedFlow>
+    </flowConstraints>
+    <fsIndexCollection/>
+    <capabilities>
+      <capability>
+        <inputs/>
+        <outputs/>
+        <inputSofas>
+          <sofaName>${sofaName}</sofaName>
+        </inputSofas>
+        <languagesSupported/>
+      </capability>
+    </capabilities>
+    <operationalProperties>
+      <modifiesCas>true</modifiesCas>
+      <multipleDeploymentAllowed>true</multipleDeploymentAllowed>
+      <outputsNewCASes>false</outputsNewCASes>
+    </operationalProperties>
+  </analysisEngineMetaData>
+  <resourceManagerConfiguration/>
+  <sofaMappings>
+    <sofaMapping>
+      <componentKey>TextMarkerEngine</componentKey>
+      <aggregateSofaName>${sofaName}</aggregateSofaName>
+    </sofaMapping>
+  </sofaMappings>
+</analysisEngineDescription>

Modified: uima/sandbox/textmarker/trunk/textmarker-ep-addons/src/main/java/org/apache/uima/textmarker/explain/apply/ApplyViewPage.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-ep-addons/src/main/java/org/apache/uima/textmarker/explain/apply/ApplyViewPage.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-ep-addons/src/main/java/org/apache/uima/textmarker/explain/apply/ApplyViewPage.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-ep-addons/src/main/java/org/apache/uima/textmarker/explain/apply/ApplyViewPage.java Wed Apr  3 15:03:04 2013
@@ -19,11 +19,11 @@
 
 package org.apache.uima.textmarker.explain.apply;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.Type;
@@ -38,7 +38,6 @@ import org.apache.uima.textmarker.explai
 import org.apache.uima.textmarker.explain.tree.ExplainTree;
 import org.apache.uima.textmarker.explain.tree.RuleApplyNode;
 import org.apache.uima.textmarker.ide.core.builder.TextMarkerProjectUtils;
-import org.apache.uima.textmarker.visitor.CreatedByVisitor;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
@@ -61,6 +60,7 @@ import org.eclipse.swt.events.MouseEvent
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchPart;
@@ -69,7 +69,7 @@ import org.eclipse.ui.part.IPageSite;
 import org.eclipse.ui.part.Page;
 
 public class ApplyViewPage extends Page implements ISelectionListener, ICasEditorInputListener,
-        IDoubleClickListener {
+        IDoubleClickListener, ICasDocumentListener {
 
   protected TreeViewer viewer;
 
@@ -81,8 +81,6 @@ public class ApplyViewPage extends Page 
 
   protected ICasDocument document;
 
-  private ICasDocumentListener listener;
-
   public ApplyViewPage(AnnotationEditor editor) {
     super();
     this.editor = editor;
@@ -143,6 +141,8 @@ public class ApplyViewPage extends Page 
     viewer.setContentProvider(new ApplyTreeContentProvider());
     viewer.setLabelProvider(new ApplyTreeLabelProvider(this));
 
+    document.addChangeListener(this);
+    
     ExplainTree tree = new ExplainTree(document.getCAS());
     viewer.setInput(tree.getRoot());
     viewer.addDoubleClickListener(this);
@@ -230,4 +230,45 @@ public class ApplyViewPage extends Page 
     // viewer.refresh();
 
   }
+
+  public void added(FeatureStructure newFeatureStructure) {
+    
+  }
+
+  public void added(Collection<FeatureStructure> newFeatureStructure) {
+    
+  }
+
+  public void removed(FeatureStructure deletedFeatureStructure) {
+    
+  }
+
+  public void removed(Collection<FeatureStructure> deletedFeatureStructure) {
+    
+  }
+
+  public void updated(FeatureStructure featureStructure) {
+    
+  }
+
+  public void updated(Collection<FeatureStructure> featureStructure) {
+    
+  }
+
+  public void changed() {
+    Display.getDefault().syncExec(new Runnable() {
+      public void run() {
+        reloadTree();
+      }
+
+    });
+  }
+
+  private void reloadTree() {
+    ExplainTree tree = new ExplainTree(document.getCAS());
+    viewer.setInput(tree.getRoot());
+  }
+  public void viewChanged(String oldViewName, String newViewName) {
+    changed();
+  }
 }

Modified: uima/sandbox/textmarker/trunk/textmarker-ep-engine/pom.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-ep-engine/pom.xml?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-ep-engine/pom.xml (original)
+++ uima/sandbox/textmarker/trunk/textmarker-ep-engine/pom.xml Wed Apr  3 15:03:04 2013
@@ -149,7 +149,8 @@ licensed under the Common Public License
                   antlr.*,
                   org.htmlparser,
                   org.htmlparser.*,
-                  org.apache.commons.lang3.*
+                  org.apache.commons.lang3.*,
+                  org.apache.commons.io.*
                 </_exportcontents>
                 <Require-Bundle>
                   org.apache.uima.runtime

Modified: uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLaunchConfigurationDelegate.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLaunchConfigurationDelegate.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLaunchConfigurationDelegate.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLaunchConfigurationDelegate.java Wed Apr  3 15:03:04 2013
@@ -21,20 +21,17 @@ package org.apache.uima.textmarker.ide.l
 
 import java.io.File;
 import java.io.IOException;
-import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.textmarker.ide.TextMarkerIdePlugin;
 import org.apache.uima.textmarker.ide.core.TextMarkerCorePreferences;
 import org.apache.uima.textmarker.ide.core.builder.TextMarkerProjectUtils;
-import org.eclipse.core.resources.IBuildConfiguration;
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectNature;
@@ -48,15 +45,11 @@ import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.QualifiedName;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.ILaunch;
 import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.dltk.core.DLTKCore;
-import org.eclipse.dltk.core.IBuildpathEntry;
 import org.eclipse.dltk.core.IScriptProject;
 import org.eclipse.dltk.launching.AbstractScriptLaunchConfigurationDelegate;
-import org.eclipse.jdt.core.IClasspathEntry;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.launching.JavaLaunchDelegate;
@@ -223,7 +216,16 @@ public class TextMarkerLaunchConfigurati
     }
     boolean recursive = configuration.getAttribute(TextMarkerLaunchConstants.RECURSIVE, false);
     clearOutputFolder(new File(ouputFolder.getLocation().toPortableString()), recursive);
+    
+//    String[] args = getProgramArguments(configuration).split(" ");
+//    try {
+//      TextMarkerLauncher.main(args);
+//    } catch (Exception e1) {
+//      e1.printStackTrace();
+//    }
+    
     super.launch(configuration, mode, launch, monitor);
+    
     while (!launch.isTerminated()) {
       try {
         Thread.sleep(100);

Modified: uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLauncher.java
URL: http://svn.apache.org/viewvc/uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLauncher.java?rev=1464062&r1=1464061&r2=1464062&view=diff
==============================================================================
--- uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLauncher.java (original)
+++ uima/sandbox/textmarker/trunk/textmarker-ep-ide/src/main/java/org/apache/uima/textmarker/ide/launching/TextMarkerLauncher.java Wed Apr  3 15:03:04 2013
@@ -28,20 +28,15 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.uima.UIMAFramework;
 import org.apache.uima.analysis_engine.AnalysisEngine;
-import org.apache.uima.analysis_engine.AnalysisEngineDescription;
 import org.apache.uima.analysis_engine.AnalysisEngineProcessException;
-import org.apache.uima.analysis_engine.metadata.SofaMapping;
 import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASException;
 import org.apache.uima.cas.impl.XmiCasDeserializer;
 import org.apache.uima.cas.impl.XmiCasSerializer;
 import org.apache.uima.resource.ResourceConfigurationException;
-import org.apache.uima.resource.ResourceSpecifier;
+import org.apache.uima.textmarker.engine.TextMarker;
 import org.apache.uima.textmarker.engine.TextMarkerEngine;
 import org.apache.uima.util.FileUtils;
-import org.apache.uima.util.XMLInputSource;
 import org.apache.uima.util.XMLSerializer;
 import org.apache.uima.util.impl.ProcessTrace_impl;
 import org.xml.sax.SAXException;
@@ -58,10 +53,10 @@ public class TextMarkerLauncher {
 
   private static String inputEncoding = java.nio.charset.Charset.defaultCharset().name();
 
-  private static String launchMode =  "run";
+  private static String launchMode = "run";
 
   private static String view = null;
-  
+
   private static boolean parseCmdLineArgs(String[] args) {
     int index = 0;
     int count = 0;
@@ -106,17 +101,16 @@ public class TextMarkerLauncher {
         view = args[index++];
       }
     }
-    return count ==2;
+    return count == 2;
   }
 
   public static void main(String[] args) throws Exception {
     if (!parseCmdLineArgs(args)) {
       throw new IllegalArgumentException("Passed arguments are invalid!");
     }
-    XMLInputSource in = new XMLInputSource(descriptor);
-    ResourceSpecifier specifier = UIMAFramework.getXMLParser().parseResourceSpecifier(in);
-    
-    AnalysisEngine ae = UIMAFramework.produceAnalysisEngine(specifier);
+
+    AnalysisEngine ae = TextMarker
+            .wrapAnalysisEngine(descriptor.toURL(), view, true, inputEncoding);
     configure(ae);
     CAS cas = ae.newCAS();
 
@@ -132,22 +126,22 @@ public class TextMarkerLauncher {
 
   private static void processFile(File file, AnalysisEngine ae, CAS cas) throws IOException,
           AnalysisEngineProcessException, SAXException {
-    if(view != null) {
+    if (view != null) {
       boolean found = false;
       Iterator<CAS> viewIterator = cas.getViewIterator();
       while (viewIterator.hasNext()) {
         CAS each = (CAS) viewIterator.next();
         String viewName = each.getViewName();
-        if(viewName.equals(view)) {
+        if (viewName.equals(view)) {
           cas = cas.getView(view);
           found = true;
           break;
         }
       }
-      if(!found) {
-         cas = cas.createView(view);
+      if (!found) {
+        cas = cas.createView(view);
       }
-      
+
     }
     if (file.getName().endsWith(".xmi")) {
       XmiCasDeserializer.deserialize(new FileInputStream(file), cas, true);
@@ -207,7 +201,7 @@ public class TextMarkerLauncher {
   private static File getOutputFile(File inputFile, File inputFolder, File outputFolder) {
     URI relativize = inputFolder.toURI().relativize(inputFile.toURI());
     String path = relativize.getPath();
-    if(!path.endsWith(".xmi")) {
+    if (!path.endsWith(".xmi")) {
       path += ".xmi";
     }
     File result = new File(outputFolder, path);