Author: vsiveton
Date: Sat Dec  6 06:48:32 2008
New Revision: 723991

URL: http://svn.apache.org/viewvc?rev=723991&view=rev
Log:
o move the MessagesErrorHandler class as an inner class of AbstractXmlParser

Removed:
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/MessagesErrorHandler.java
Modified:
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java?rev=723991&r1=723990&r2=723991&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
 Sat Dec  6 06:48:32 2008
@@ -34,6 +34,7 @@
 
 import javax.xml.XMLConstants;
 
+import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.markup.XmlMarkup;
 import org.apache.maven.doxia.sink.Sink;
@@ -51,7 +52,9 @@
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXNotRecognizedException;
 import org.xml.sax.SAXNotSupportedException;
+import org.xml.sax.SAXParseException;
 import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
 import org.xml.sax.helpers.XMLReaderFactory;
 
 /**
@@ -584,6 +587,98 @@
     }
 
     /**
+     * Convenience class to beautify <code>SAXParseException</code> messages.
+     */
+    static class MessagesErrorHandler
+        extends DefaultHandler
+    {
+        private static final int TYPE_UNKNOWN = 0;
+
+        private static final int TYPE_WARNING = 1;
+
+        private static final int TYPE_ERROR = 2;
+
+        private static final int TYPE_FATAL = 3;
+
+        private final Log log;
+
+        public MessagesErrorHandler( Log log )
+        {
+            this.log = log;
+        }
+
+        /** [EMAIL PROTECTED] */
+        public void warning( SAXParseException e )
+            throws SAXException
+        {
+            processException( TYPE_WARNING, e );
+        }
+
+        /** [EMAIL PROTECTED] */
+        public void error( SAXParseException e )
+            throws SAXException
+        {
+            processException( TYPE_ERROR, e );
+        }
+
+        /** [EMAIL PROTECTED] */
+        public void fatalError( SAXParseException e )
+            throws SAXException
+        {
+            processException( TYPE_FATAL, e );
+        }
+
+        private void processException( int type, SAXParseException e )
+            throws SAXException
+        {
+            StringBuffer message = new StringBuffer();
+
+            switch ( type )
+            {
+                case TYPE_WARNING:
+                    message.append( "Warning:" );
+                    break;
+
+                case TYPE_ERROR:
+                    message.append( "Error:" );
+                    break;
+
+                case TYPE_FATAL:
+                    message.append( "Fatal error:" );
+                    break;
+
+                case TYPE_UNKNOWN:
+                default:
+                    message.append( "Unknown:" );
+                    break;
+            }
+
+            message.append( EOL );
+            message.append( "  Public ID: " + e.getPublicId() ).append( EOL );
+            message.append( "  System ID: " + e.getSystemId() ).append( EOL );
+            message.append( "  Line number: " + e.getLineNumber() ).append( 
EOL );
+            message.append( "  Column number: " + e.getColumnNumber() 
).append( EOL );
+            message.append( "  Message: " + e.getMessage() ).append( EOL );
+
+            switch ( type )
+            {
+                case TYPE_WARNING:
+                    if ( log.isWarnEnabled() )
+                    {
+                        log.warn( message.toString() );
+                    }
+                    break;
+
+                case TYPE_UNKNOWN:
+                case TYPE_ERROR:
+                case TYPE_FATAL:
+                default:
+                    throw new SAXException( message.toString() );
+            }
+        }
+    }
+
+    /**
      * Implementation of the callback mechanism <code>EntityResolver</code>.
      * Using a mechanism of cached files in temp dir to improve performance 
when using the <code>XMLReader</code>.
      */


Reply via email to