Author: jukka
Date: Wed Mar 24 11:31:47 2010
New Revision: 927016

URL: http://svn.apache.org/viewvc?rev=927016&view=rev
Log:
TIKA-282: RTF parser expects a GUI environment

Disable the troublesome SwingUtilities.isEventDispatchThread() call by 
overriding StyleContext.reclaim()

Modified:
    
lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/RTFParser.java

Modified: 
lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/RTFParser.java
URL: 
http://svn.apache.org/viewvc/lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/RTFParser.java?rev=927016&r1=927015&r2=927016&view=diff
==============================================================================
--- 
lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/RTFParser.java
 (original)
+++ 
lucene/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/rtf/RTFParser.java
 Wed Mar 24 11:31:47 2010
@@ -16,13 +16,24 @@
  */
 package org.apache.tika.parser.rtf;
 
+import java.awt.Color;
+import java.awt.Font;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collections;
 import java.util.Set;
 
+import javax.swing.event.DocumentListener;
+import javax.swing.event.UndoableEditListener;
+import javax.swing.text.AttributeSet;
 import javax.swing.text.BadLocationException;
 import javax.swing.text.DefaultStyledDocument;
+import javax.swing.text.Element;
+import javax.swing.text.Position;
+import javax.swing.text.Segment;
+import javax.swing.text.Style;
+import javax.swing.text.StyleContext;
+import javax.swing.text.StyledDocument;
 import javax.swing.text.rtf.RTFEditorKit;
 
 import org.apache.tika.exception.TikaException;
@@ -51,7 +62,8 @@ public class RTFParser implements Parser
             Metadata metadata, ParseContext context)
             throws IOException, SAXException, TikaException {
         try {
-            DefaultStyledDocument sd = new DefaultStyledDocument();
+            DefaultStyledDocument sd =
+                new DefaultStyledDocument(new NoReclaimStyleContext());
             new RTFEditorKit().read(stream, sd, 0);
 
             XHTMLContentHandler xhtml =
@@ -86,4 +98,18 @@ public class RTFParser implements Parser
         parse(stream, handler, metadata, new ParseContext());
     }
 
+    /**
+     * A workaround to
+     * <a href="https://issues.apache.org/jira/browse/TIKA-282";>TIKA-282</a>:
+     * RTF parser expects a GUI environment. This class simply disables the
+     * troublesome SwingUtilities.isEventDispatchThread() call that's made in
+     * the {...@link StyleContext#reclaim(AttributeSet)} method.
+     */
+    private static class NoReclaimStyleContext extends StyleContext {
+
+        /** Ignored. */
+        public void reclaim(AttributeSet a) {
+        }
+
+    }
 }


Reply via email to