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