Author: vgritsenko Date: Fri Apr 29 09:57:27 2005 New Revision: 165318 URL: http://svn.apache.org/viewcvs?rev=165318&view=rev Log: unwrap evil SAXExceptions
Modified: cocoon/trunk/src/java/org/apache/cocoon/components/source/SourceUtil.java Modified: cocoon/trunk/src/java/org/apache/cocoon/components/source/SourceUtil.java URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/source/SourceUtil.java?rev=165318&r1=165317&r2=165318&view=diff ============================================================================== --- cocoon/trunk/src/java/org/apache/cocoon/components/source/SourceUtil.java (original) +++ cocoon/trunk/src/java/org/apache/cocoon/components/source/SourceUtil.java Fri Apr 29 09:57:27 2005 @@ -1,5 +1,5 @@ /* - * Copyright 1999-2004 The Apache Software Foundation. + * Copyright 1999-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -62,7 +62,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> * @author <a href="mailto:[EMAIL PROTECTED]">Stephan Michels</a> - * @version CVS $Id$ + * @version $Id$ */ public final class SourceUtil { @@ -82,6 +82,37 @@ } /** + * Generates SAX events from the XMLizable and handle SAXException. + * + * @param source the data + */ + static public void toSAX(XMLizable source, + ContentHandler handler) + throws SAXException, IOException, ProcessingException { + try { + source.toSAX(handler); + } catch (SAXException e) { + // Unwrap ProcessingException, IOException, and extreme cases of SAXExceptions. + // See also handleSAXException + final Exception cause = e.getException(); + if (cause != null) { + if (cause instanceof ProcessingException) { + throw (ProcessingException) cause; + } + if (cause instanceof IOException) { + throw (IOException) cause; + } + if (cause instanceof SAXException) { + throw (SAXException) cause; + } + } + + // Throw original SAX exception + throw e; + } + } + + /** * Generates SAX events from the given source. * * <p><b>NOTE</b>: If the implementation can produce lexical events, @@ -133,7 +164,7 @@ ContentHandler handler) throws SAXException, IOException, ProcessingException { if (source instanceof XMLizable) { - ((XMLizable) source).toSAX(handler); + toSAX((XMLizable) source, handler); } else { String mimeType = source.getMimeType(); if (null == mimeType) { @@ -205,7 +236,7 @@ ContentHandler handler) throws SAXException, IOException, ProcessingException { if (source instanceof XMLizable) { - ((XMLizable) source).toSAX(handler); + toSAX((XMLizable) source, handler); } else { SAXParser parser = null; try {