You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by si...@apache.org on 2011/11/01 16:05:21 UTC

svn commit: r1196036 - /cocoon/cocoon3/trunk/cocoon-cli/src/main/java/org/apache/cocoon/cli/PipelineDescriptorParser.java

Author: simonetripodi
Date: Tue Nov  1 15:05:21 2011
New Revision: 1196036

URL: http://svn.apache.org/viewvc?rev=1196036&view=rev
Log:
plugged the custom error handler that throws exceptions when the input XML is not valid

Modified:
    cocoon/cocoon3/trunk/cocoon-cli/src/main/java/org/apache/cocoon/cli/PipelineDescriptorParser.java

Modified: cocoon/cocoon3/trunk/cocoon-cli/src/main/java/org/apache/cocoon/cli/PipelineDescriptorParser.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-cli/src/main/java/org/apache/cocoon/cli/PipelineDescriptorParser.java?rev=1196036&r1=1196035&r2=1196036&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-cli/src/main/java/org/apache/cocoon/cli/PipelineDescriptorParser.java (original)
+++ cocoon/cocoon3/trunk/cocoon-cli/src/main/java/org/apache/cocoon/cli/PipelineDescriptorParser.java Tue Nov  1 15:05:21 2011
@@ -30,14 +30,21 @@ import java.util.Map.Entry;
 
 import javax.xml.validation.Schema;
 
+import org.apache.commons.digester3.Digester;
 import org.apache.commons.digester3.binder.DigesterLoader;
 import org.apache.commons.digester3.substitution.MultiVariableExpander;
 import org.apache.commons.digester3.substitution.VariableSubstitutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
 
 final class PipelineDescriptorParser
 {
 
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
+
     private final DigesterLoader digesterLoader;
 
     public PipelineDescriptorParser( boolean printHelp )
@@ -81,8 +88,31 @@ final class PipelineDescriptorParser
     public PipelinesRegistry parse( File pipelineDescriptorFile )
         throws IOException, SAXException
     {
-        PipelinesRegistry registry = digesterLoader.newDigester().parse( pipelineDescriptorFile );
-        return registry;
+        Digester digester = digesterLoader.newDigester();
+        digester.setErrorHandler( new ErrorHandler()
+        {
+
+            public void warning( SAXParseException exception )
+                throws SAXException
+            {
+                logger.warn( "Pipeline XML descriptor not correct", exception );
+            }
+
+            public void fatalError( SAXParseException exception )
+                throws SAXException
+            {
+                throw exception;
+            }
+
+            public void error( SAXParseException exception )
+                throws SAXException
+            {
+                throw exception;
+            }
+
+        } );
+
+        return digester.parse( pipelineDescriptorFile );
     }
 
 }