You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ma...@apache.org on 2015/05/25 21:31:27 UTC
svn commit: r1681640 - in /tika/trunk:
tika-core/src/main/java/org/apache/tika/parser/external/
tika-parsers/src/main/resources/META-INF/services/
Author: mattmann
Date: Mon May 25 19:31:27 2015
New Revision: 1681640
URL: http://svn.apache.org/r1681640
Log:
- fix for TIKA-1638: Make ExternalParser actually work
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParser.java
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParsersConfigReader.java
tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParser.java?rev=1681640&r1=1681639&r2=1681640&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParser.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParser.java Mon May 25 19:31:27 2015
@@ -158,8 +158,7 @@ public class ExternalParser extends Abst
File output = null;
// Build our command
- String[] cmd = new String[command.length];
- System.arraycopy(command, 0, cmd, 0, command.length);
+ String[] cmd = command[0].split(" ");
for(int i=0; i<cmd.length; i++) {
if(cmd[i].indexOf(INPUT_FILE_TOKEN) != -1) {
cmd[i] = cmd[i].replace(INPUT_FILE_TOKEN, stream.getFile().getPath());
@@ -173,12 +172,17 @@ public class ExternalParser extends Abst
}
// Execute
- Process process;
+ Process process = null;
+ try{
if(cmd.length == 1) {
process = Runtime.getRuntime().exec( cmd[0] );
} else {
process = Runtime.getRuntime().exec( cmd );
}
+ }
+ catch(Exception e){
+ e.printStackTrace();
+ }
try {
if(inputToStdIn) {
@@ -258,7 +262,7 @@ public class ExternalParser extends Abst
* @param stream input stream
*/
private void sendInput(final Process process, final InputStream stream) {
- new Thread() {
+ Thread t = new Thread() {
public void run() {
OutputStream stdin = process.getOutputStream();
try {
@@ -266,7 +270,12 @@ public class ExternalParser extends Abst
} catch (IOException e) {
}
}
- }.start();
+ };
+ t.start();
+ try{
+ t.join();
+ }
+ catch(InterruptedException ignore){}
}
/**
@@ -277,7 +286,7 @@ public class ExternalParser extends Abst
* @param process process
*/
private void ignoreStream(final InputStream stream) {
- new Thread() {
+ Thread t = new Thread() {
public void run() {
try {
IOUtils.copy(stream, new NullOutputStream());
@@ -286,11 +295,16 @@ public class ExternalParser extends Abst
IOUtils.closeQuietly(stream);
}
}
- }.start();
+ };
+ t.start();
+ try{
+ t.join();
+ }
+ catch(InterruptedException ignore){}
}
private void extractMetadata(final InputStream stream, final Metadata metadata) {
- new Thread() {
+ Thread t = new Thread() {
public void run() {
BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(stream, IOUtils.UTF_8));
@@ -317,7 +331,12 @@ public class ExternalParser extends Abst
IOUtils.closeQuietly(stream);
}
}
- }.start();
+ };
+ t.start();
+ try{
+ t.join();
+ }
+ catch(InterruptedException ignore){}
}
/**
@@ -339,8 +358,7 @@ public class ExternalParser extends Abst
try {
Process process= Runtime.getRuntime().exec(checkCmd);
- int result = process.waitFor();
-
+ int result = process.waitFor();
for(int err : errorValue) {
if(result == err) return false;
}
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParsersConfigReader.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParsersConfigReader.java?rev=1681640&r1=1681639&r2=1681640&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParsersConfigReader.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/parser/external/ExternalParsersConfigReader.java Mon May 25 19:31:27 2015
@@ -184,7 +184,7 @@ public final class ExternalParsersConfig
}
if (child.getTagName().equals(ERROR_CODES_TAG)) {
String errs = getString(child);
- StringTokenizer st = new StringTokenizer(errs);
+ StringTokenizer st = new StringTokenizer(errs, ",");
while(st.hasMoreElements()) {
try {
String s = st.nextToken();
@@ -196,12 +196,13 @@ public final class ExternalParsersConfig
}
if(command != null) {
+ String [] theCommand = command.split(" ");
int[] errVals = new int[errorVals.size()];
for(int i=0; i<errVals.length; i++) {
errVals[i] = errorVals.get(i);
}
- return ExternalParser.check(command, errVals);
+ return ExternalParser.check(theCommand, errVals);
}
// No check command, so assume it's there
Modified: tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser?rev=1681640&r1=1681639&r2=1681640&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser (original)
+++ tika/trunk/tika-parsers/src/main/resources/META-INF/services/org.apache.tika.parser.Parser Mon May 25 19:31:27 2015
@@ -64,4 +64,4 @@ org.apache.tika.parser.jdbc.SQLite3Parse
org.apache.tika.parser.isatab.ISArchiveParser
org.apache.tika.parser.geoinfo.GeographicInformationParser
org.apache.tika.parser.geo.topic.GeoParser
-
+org.apache.tika.parser.external.CompositeExternalParser