You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2013/01/09 13:08:11 UTC
svn commit: r1430813 -
/stanbol/trunk/enhancement-engines/tika/src/main/java/org/apache/stanbol/enhancer/engines/tika/TikaEngine.java
Author: rwesten
Date: Wed Jan 9 12:08:11 2013
New Revision: 1430813
URL: http://svn.apache.org/viewvc?rev=1430813&view=rev
Log:
STANBOL-865: The Tika parser is now called within an AccessController.doPrivileged(..) block. Also RuntimeExceptions are no longer catched
Modified:
stanbol/trunk/enhancement-engines/tika/src/main/java/org/apache/stanbol/enhancer/engines/tika/TikaEngine.java
Modified: stanbol/trunk/enhancement-engines/tika/src/main/java/org/apache/stanbol/enhancer/engines/tika/TikaEngine.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancement-engines/tika/src/main/java/org/apache/stanbol/enhancer/engines/tika/TikaEngine.java?rev=1430813&r1=1430812&r2=1430813&view=diff
==============================================================================
--- stanbol/trunk/enhancement-engines/tika/src/main/java/org/apache/stanbol/enhancer/engines/tika/TikaEngine.java (original)
+++ stanbol/trunk/enhancement-engines/tika/src/main/java/org/apache/stanbol/enhancer/engines/tika/TikaEngine.java Wed Jan 9 12:08:11 2013
@@ -33,6 +33,9 @@ import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.nio.charset.Charset;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.util.Arrays;
import java.util.Collections;
import java.util.Dictionary;
@@ -59,6 +62,7 @@ import org.apache.stanbol.enhancer.servi
import org.apache.stanbol.enhancer.servicesapi.impl.AbstractEnhancementEngine;
import org.apache.tika.config.TikaConfig;
import org.apache.tika.detect.Detector;
+import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;
import org.apache.tika.parser.AutoDetectParser;
@@ -71,6 +75,7 @@ import org.osgi.service.component.Compon
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
/**
* EnhancementEngine based on Apache Tika that converts the content of parsed
@@ -171,7 +176,7 @@ public class TikaEngine
if(plainMediaType.equals(MediaType.TEXT_PLAIN)){
return; //we need not to process plain text!
}
- ParseContext context = new ParseContext();
+ final ParseContext context = new ParseContext();
context.set(Parser.class,parser);
Set<MediaType> supproted = parser.getSupportedTypes(context);
if(supproted.contains(plainMediaType)) {
@@ -181,7 +186,7 @@ public class TikaEngine
} else {
in = mtas.in;
}
- Metadata metadata = new Metadata();
+ final Metadata metadata = new Metadata();
//set the already parsed contentType
metadata.set(Metadata.CONTENT_TYPE, mtas.mediaType.toString());
ContentSink plainTextSink;
@@ -218,11 +223,21 @@ public class TikaEngine
xhtmlSink = null;
}
try {
- parser.parse(in, mainHandler, metadata, context);
- } catch (Exception e) {
- throw new EngineException("Unable to convert ContentItem "+
- ci.getUri()+" with mimeType '"+ci.getMimeType()+"' to "+
- "plain text!",e);
+ AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
+ public Object run() throws IOException, SAXException, TikaException {
+ parser.parse(in, mainHandler, metadata, context);
+ return null;
+ }
+ });
+ } catch (PrivilegedActionException pae) {
+ Exception e = pae.getException();
+ if(e instanceof IOException || e instanceof SAXException || e instanceof TikaException){
+ throw new EngineException("Unable to convert ContentItem "+
+ ci.getUri()+" with mimeType '"+ci.getMimeType()+"' to "+
+ "plain text!",e);
+ } else { //runtime exception
+ throw RuntimeException.class.cast(e);
+ }
}
} finally { //ensure that the writers are closed correctly
IOUtils.closeQuietly(in);