DIGESTER-85 Include filename or uri if Digester.parse(File file or String uri throws a SAXException
thre's no need to decorate the thrown exception, filename or uri have been logged at error level: since the request is focused on monitoring errors from 3rd-parties Digester use, logging which resource caused the error is more than enough
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/digester/trunk@1140083 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/commons/digester3/Digester.java b/src/main/java/org/apache/commons/digester3/Digester.java
index 2fc4900..72db7ed 100644
--- a/src/main/java/org/apache/commons/digester3/Digester.java
+++ b/src/main/java/org/apache/commons/digester3/Digester.java
@@ -19,6 +19,8 @@
* under the License.
*/
+import static java.lang.String.format;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -1574,7 +1576,29 @@
}
configure();
- getXMLReader().parse( input );
+
+ String systemId = input.getSystemId();
+ if ( systemId == null )
+ {
+ systemId = "(already loaded from stream)";
+ }
+
+ try
+ {
+ getXMLReader().parse( input );
+ }
+ catch ( IOException e )
+ {
+ log.error( format( "An error occurred while reading stream from '%s', see nested exceptions", systemId ),
+ e );
+ throw e;
+ }
+ catch ( SAXException e )
+ {
+ log.error( format( "An error occurred while parsing XML from '%s', see nested exceptions", systemId ),
+ e );
+ throw e;
+ }
cleanup();
return this.<T> getRoot();
}