aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/org/apache/poi/extractor/OLE2ExtractorFactory.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/java/org/apache/poi/extractor/OLE2ExtractorFactory.java b/src/java/org/apache/poi/extractor/OLE2ExtractorFactory.java
index 52a0bf12f8..d1577898f1 100644
--- a/src/java/org/apache/poi/extractor/OLE2ExtractorFactory.java
+++ b/src/java/org/apache/poi/extractor/OLE2ExtractorFactory.java
@@ -126,8 +126,15 @@ public class OLE2ExtractorFactory {
public static POITextExtractor createExtractor(InputStream input) throws IOException {
Class<?> cls = getOOXMLClass();
if (cls != null) {
- // TODO Reflection
- throw new IllegalArgumentException("TODO Reflection");
+ // Use Reflection to get us the full OOXML-enabled version
+ try {
+ Method m = cls.getDeclaredMethod("createExtractor", InputStream.class);
+ return (POITextExtractor)m.invoke(null, input);
+ } catch (IllegalArgumentException iae) {
+ throw iae;
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Error creating Extractor for InputStream", e);
+ }
} else {
// Best hope it's OLE2....
return createExtractor(new NPOIFSFileSystem(input));