Author: totaro
Date: Thu Jun 11 00:12:32 2015
New Revision: 1684801

URL: http://svn.apache.org/r1684801
Log:
TIKA-1654 Reset cTAKES CAS into CTAKESParser (Fix for TIKA-1645)

Modified:
    
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESContentHandler.java
    
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESParser.java
    
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESUtils.java

Modified: 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESContentHandler.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESContentHandler.java?rev=1684801&r1=1684800&r2=1684801&view=diff
==============================================================================
--- 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESContentHandler.java
 (original)
+++ 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESContentHandler.java
 Thu Jun 11 00:12:32 2015
@@ -97,11 +97,15 @@ public class CTAKESContentHandler extend
             // create a JCas, given an AE
             JCas jcas = CTAKESUtils.getJCas(ae);
 
+            // get metadata to process
             StringBuilder metaText = new StringBuilder();
-            for (String name : config.getMetadata()) {
-                for (String value : metadata.getValues(name)) {
-                    metaText.append(value);
-                    metaText.append(System.lineSeparator());
+            String[] metadataToProcess = config.getMetadata();
+            if (metadataToProcess != null) {
+                for (String name : config.getMetadata()) {
+                    for (String value : metadata.getValues(name)) {
+                        metaText.append(value);
+                        metaText.append(System.lineSeparator());
+                    }
                 }
             }
 
@@ -132,8 +136,9 @@ public class CTAKESContentHandler extend
                 CTAKESUtils.serialize(config.getSerializerType(), 
config.isPrettyPrint(), config.getOutputStream());
             }
         } catch (Exception e) {
-            e.printStackTrace();
             throw new SAXException(e.getMessage());
+        } finally {
+            CTAKESUtils.resetCAS();
         }
     }
 

Modified: 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESParser.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESParser.java?rev=1684801&r1=1684800&r2=1684801&view=diff
==============================================================================
--- 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESParser.java
 (original)
+++ 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESParser.java
 Thu Jun 11 00:12:32 2015
@@ -38,13 +38,13 @@ import org.xml.sax.SAXException;
  * <code>AutoDetectParser parser = new AutoDetectParser(new 
CTAKESParser());</code>
  * <p>It can also be used by giving a Tika Config file similar to:
  * <code>
- *  &gt;properties>
- *    &gt;parsers>
- *      &gt;parser class="org.apache.tika.parser.ctakes.CTAKESParser">
- *         &gt;parser class="org.apache.tika.parser.DefaultParser"/>
- *      &gt;/parser>
- *    &gt;/parsers>
- *  &gt;/properties>
+ *  <properties>
+ *    <parsers>
+ *      <parser class="org.apache.tika.parser.ctakes.CTAKESParser">
+ *        <parser class="org.apache.tika.parser.DefaultParser"/>
+ *      </parser>
+ *    </parsers>
+ *  </properties>
  * </code>
  * <p>Because this is a Parser Decorator, and not a normal Parser in
  *  it's own right, it isn't normally selected via the Parser Service Loader.

Modified: 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESUtils.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESUtils.java?rev=1684801&r1=1684800&r2=1684801&view=diff
==============================================================================
--- 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESUtils.java
 (original)
+++ 
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/ctakes/CTAKESUtils.java
 Thu Jun 11 00:12:32 2015
@@ -238,4 +238,29 @@ public class CTAKESUtils {
         jcas.reset();
         jcas = null;
     }
+
+    /**
+     * Resets the CAS (Common Analysis System), emptying it of all content.
+     */
+    public static void resetCAS() {
+        if (jcas != null) {
+            jcas.reset();
+        }
+    }
+
+    /**
+     * Resets the AE (AnalysisEngine), releasing all resources held by the 
+     * current AE.
+     */
+    public static void resetAE() {
+        if (ae != null) {
+            ae.destroy();
+            ae = null;
+        }
+
+        if (jcas != null) {
+            jcas.reset();
+            jcas = null;
+        }
+    }
 }


Reply via email to