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();
     }