Author: jukka
Date: Fri Dec 21 01:01:07 2007
New Revision: 606139

URL: http://svn.apache.org/viewvc?rev=606139&view=rev
Log:
TIKA-104 - Add utility methods to throw IOException with the caused intialized
    - Added an IOException subclass instead
    - Adapted code from Niall Pemberton's patch

Added:
    
incubator/tika/trunk/src/main/java/org/apache/tika/exception/CauseIOException.java
    incubator/tika/trunk/src/test/java/org/apache/tika/exception/
    
incubator/tika/trunk/src/test/java/org/apache/tika/exception/CauseIOExceptionTest.java
Modified:
    incubator/tika/trunk/CHANGES.txt
    incubator/tika/trunk/src/main/java/org/apache/tika/parser/pdf/PDF2XHTML.java
    
incubator/tika/trunk/src/main/java/org/apache/tika/sax/AppendableAdaptor.java

Modified: incubator/tika/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/CHANGES.txt?rev=606139&r1=606138&r2=606139&view=diff
==============================================================================
--- incubator/tika/trunk/CHANGES.txt (original)
+++ incubator/tika/trunk/CHANGES.txt Fri Dec 21 01:01:07 2007
@@ -133,5 +133,7 @@
 60. TIKA-102 - Parser implementations loading a large amount of content
                into a single String could be problematic (Niall Pemberton)
 
- 61. TIKA-107 - Remove use of assertions for argument checking (Niall 
Pemberton)
- 
\ No newline at end of file
+61. TIKA-107 - Remove use of assertions for argument checking (Niall Pemberton)
+ 
+62. TIKA-104 - Add utility methods to throw IOException with the caused
+               intialized (jukka & Niall Pemberton)

Added: 
incubator/tika/trunk/src/main/java/org/apache/tika/exception/CauseIOException.java
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/src/main/java/org/apache/tika/exception/CauseIOException.java?rev=606139&view=auto
==============================================================================
--- 
incubator/tika/trunk/src/main/java/org/apache/tika/exception/CauseIOException.java
 (added)
+++ 
incubator/tika/trunk/src/main/java/org/apache/tika/exception/CauseIOException.java
 Fri Dec 21 01:01:07 2007
@@ -0,0 +1,51 @@
+/**
+ * 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.exception;
+
+/**
+ * IOException subclass with the [EMAIL PROTECTED] Throwable} constructor 
that's
+ * missing before Java 6.
+ */
+public class CauseIOException extends java.io.IOException {
+
+    /**
+     * Creates an IOException with the given message.
+     *
+     * @param message exception message
+     */
+    public CauseIOException(String message) {
+        super(message);
+    }
+
+    /**
+     * Creates an IOException with the given message and root cause.
+     * <p>
+     * This constructor was not added in the underlying
+     * [EMAIL PROTECTED] java.io.IOException) class until Java 6.
+     * This is a convenience method which uses the
+     * [EMAIL PROTECTED] #IOException(String)} constructor and calls the
+     * [EMAIL PROTECTED] #initCause(Throwable)} method to set the root cause.
+     *
+     * @param message exception message
+     * @param cause root cause
+     */
+    public CauseIOException(String message, Throwable cause) {
+        this(message);
+        initCause(cause);
+    }
+
+}

Modified: 
incubator/tika/trunk/src/main/java/org/apache/tika/parser/pdf/PDF2XHTML.java
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/src/main/java/org/apache/tika/parser/pdf/PDF2XHTML.java?rev=606139&r1=606138&r2=606139&view=diff
==============================================================================
--- 
incubator/tika/trunk/src/main/java/org/apache/tika/parser/pdf/PDF2XHTML.java 
(original)
+++ 
incubator/tika/trunk/src/main/java/org/apache/tika/parser/pdf/PDF2XHTML.java 
Fri Dec 21 01:01:07 2007
@@ -18,6 +18,7 @@
 
 import java.io.IOException;
 
+import org.apache.tika.exception.CauseIOException;
 import org.apache.tika.exception.TikaException;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.sax.XHTMLContentHandler;
@@ -70,7 +71,7 @@
         try {
             handler.startDocument();
         } catch (SAXException e) {
-            throw new IOException("Unable to start a document: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to start a document", e);
         }
     }
 
@@ -78,7 +79,7 @@
         try {
             handler.endDocument();
         } catch (SAXException e) {
-            throw new IOException("Unable to end a document: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to end a document", e);
         }
     }
 
@@ -86,7 +87,7 @@
         try {
             handler.startElement("div");
         } catch (SAXException e) {
-            throw new IOException("Unable to start a page: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to start a page", e);
         }
     }
 
@@ -94,7 +95,7 @@
         try {
             handler.endElement("div");
         } catch (SAXException e) {
-            throw new IOException("Unable to end a page: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to end a page", e);
         }
     }
 
@@ -102,7 +103,7 @@
         try {
             handler.startElement("p");
         } catch (SAXException e) {
-            throw new IOException("Unable to start a paragraph: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to start a paragraph", e);
         }
     }
 
@@ -110,7 +111,7 @@
         try {
             handler.endElement("p");
         } catch (SAXException e) {
-            throw new IOException("Unable to end a paragraph: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to end a paragraph", e);
         }
     }
 
@@ -118,7 +119,8 @@
         try {
             handler.characters(text.getCharacter());
         } catch (SAXException e) {
-            throw new IOException("Unable to write a newline: reason: 
"+e.getMessage());
+            throw new CauseIOException(
+                    "Unable to write a character: " + text.getCharacter(), e);
         }
     }
 
@@ -126,7 +128,7 @@
         try {
             handler.characters("\n");
         } catch (SAXException e) {
-            throw new IOException("Unable to write a newline: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to write a newline", e);
         }
     }
 
@@ -135,7 +137,7 @@
         try {
             handler.characters(" ");
         } catch (SAXException e) {
-            throw new IOException("Unable to write a space: reason: 
"+e.getMessage());
+            throw new CauseIOException("Unable to write a space", e);
         }
     }
 

Modified: 
incubator/tika/trunk/src/main/java/org/apache/tika/sax/AppendableAdaptor.java
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/src/main/java/org/apache/tika/sax/AppendableAdaptor.java?rev=606139&r1=606138&r2=606139&view=diff
==============================================================================
--- 
incubator/tika/trunk/src/main/java/org/apache/tika/sax/AppendableAdaptor.java 
(original)
+++ 
incubator/tika/trunk/src/main/java/org/apache/tika/sax/AppendableAdaptor.java 
Fri Dec 21 01:01:07 2007
@@ -17,6 +17,8 @@
 package org.apache.tika.sax;
 
 import java.io.IOException;
+
+import org.apache.tika.exception.CauseIOException;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 
@@ -97,7 +99,9 @@
                 char[] chars = charSeq.toString().toCharArray();
                 handler.characters(chars, start, (end - start));
             } catch (SAXException e) {
-                throw new IOException(e.toString());
+                throw new CauseIOException(
+                        "Error processing character content: "
+                        + charSeq.subSequence(start, end), e);
             }
         }
         return this;

Added: 
incubator/tika/trunk/src/test/java/org/apache/tika/exception/CauseIOExceptionTest.java
URL: 
http://svn.apache.org/viewvc/incubator/tika/trunk/src/test/java/org/apache/tika/exception/CauseIOExceptionTest.java?rev=606139&view=auto
==============================================================================
--- 
incubator/tika/trunk/src/test/java/org/apache/tika/exception/CauseIOExceptionTest.java
 (added)
+++ 
incubator/tika/trunk/src/test/java/org/apache/tika/exception/CauseIOExceptionTest.java
 Fri Dec 21 01:01:07 2007
@@ -0,0 +1,46 @@
+/**
+ * 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.exception;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit tests for the [EMAIL PROTECTED] CauseIOException} class.
+ */
+public class CauseIOExceptionTest extends TestCase {
+
+    /**
+     * Test for the [EMAIL PROTECTED] CauseIOException#IOException(String)} 
constructor.
+     */
+    public void testIOExceptionString() {
+        CauseIOException exception = new CauseIOException("message");
+        assertEquals("message", exception.getMessage());
+        assertNull(exception.getCause());
+    }
+
+    /**
+     * Test for the [EMAIL PROTECTED] IOException#IOException(String, 
Throwable))}
+     * constructor.
+     */
+    public void testIOExceptionStringThrowable() {
+        Throwable cause = new IllegalArgumentException("cause");
+        CauseIOException exception = new CauseIOException("message", cause);
+        assertEquals("message", exception.getMessage());
+        assertEquals(cause, exception.getCause());
+    }
+
+}


Reply via email to