You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ju...@apache.org on 2010/05/31 18:25:27 UTC

svn commit: r949795 - in /tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork: IWorkParser.java IWorkRootElementDetectContentHandler.java IWorkSAXException.java

Author: jukka
Date: Mon May 31 16:25:27 2010
New Revision: 949795

URL: http://svn.apache.org/viewvc?rev=949795&view=rev
Log:
TIKA-402: Support for iWork documents

Throw format errors as TikaExceptions instead of RuntimeExceptions

Added:
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkSAXException.java   (with props)
Modified:
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkParser.java
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkRootElementDetectContentHandler.java

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkParser.java?rev=949795&r1=949794&r2=949795&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkParser.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkParser.java Mon May 31 16:25:27 2010
@@ -82,11 +82,15 @@ public class IWorkParser implements Pars
                 // Numbers and Pages have both index.xml as file, so the appropriate content handler can only be
                 // selected based on the content in the file. In this case the content handler is selected
                 // based on root element.
-                IWorkRootElementDetectContentHandler detectHandler =
-                    new IWorkRootElementDetectContentHandler(xhtml, metadata);
-                context.getSAXParser().parse(
-                        new CloseShieldInputStream(zip),
-                        new OfflineContentHandler(detectHandler));
+                try {
+                    IWorkRootElementDetectContentHandler detectHandler =
+                        new IWorkRootElementDetectContentHandler(xhtml, metadata);
+                    context.getSAXParser().parse(
+                            new CloseShieldInputStream(zip),
+                            new OfflineContentHandler(detectHandler));
+                } catch (IWorkSAXException e) {
+                    e.throwAsTikaException();
+                }
             }
             entry = zip.getNextEntry();
         }

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkRootElementDetectContentHandler.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkRootElementDetectContentHandler.java?rev=949795&r1=949794&r2=949795&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkRootElementDetectContentHandler.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkRootElementDetectContentHandler.java Mon May 31 16:25:27 2010
@@ -55,8 +55,8 @@ class IWorkRootElementDetectContentHandl
                         Metadata.CONTENT_TYPE, "application/vnd.apple.numbers");
                 setContentHandler(new NumbersContentHandler(xhtml, metadata));
             } else {
-                throw new RuntimeException(
-                        "Could not find handler to parse document"
+                throw new IWorkSAXException(
+                        "Could not find handler to parse iWork document"
                         + " based on root element " + qName);
             }
             unknownType = false;

Added: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkSAXException.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkSAXException.java?rev=949795&view=auto
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkSAXException.java (added)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkSAXException.java Mon May 31 16:25:27 2010
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tika.parser.iwork;
+
+import org.apache.tika.exception.TikaException;
+import org.xml.sax.SAXException;
+
+/**
+ * Internal utility exception class that allows the
+ * {@link IWorkRootElementDetectContentHandler} class to report
+ * parsing issues that really should be thrown as {@link TikaException}s
+ * instead of {@link SAXException}s.
+ */
+class IWorkSAXException extends SAXException {
+
+    /**
+     * Serial version UID.
+     */
+    private static final long serialVersionUID = -9027093795769244006L;
+
+    public IWorkSAXException(String message) {
+        super(message);
+    }
+
+    public void throwAsTikaException() throws TikaException {
+        throw new TikaException(getMessage(), this);
+    }
+
+}

Propchange: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/iwork/IWorkSAXException.java
------------------------------------------------------------------------------
    svn:eol-style = native