Author: bentmann
Date: Wed May 27 20:28:12 2009
New Revision: 779299

URL: http://svn.apache.org/viewvc?rev=779299&view=rev
Log:
o Added dedicated exception for POM parsing errors

Added:
    
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelParseException.java
   (with props)
Modified:
    
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
    
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java

Modified: 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java?rev=779299&r1=779298&r2=779299&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/DefaultModelReader.java
 Wed May 27 20:28:12 2009
@@ -72,7 +72,7 @@
         }
         catch ( XmlPullParserException e )
         {
-            throw (IOException) new IOException( "Failed to parse POM" 
).initCause( e );
+            throw new ModelParseException( e.getMessage(), e, 
e.getLineNumber(), e.getColumnNumber() );
         }
         finally
         {
@@ -95,7 +95,7 @@
         }
         catch ( XmlPullParserException e )
         {
-            throw (IOException) new IOException( "Failed to parse POM" 
).initCause( e );
+            throw new ModelParseException( e.getMessage(), e, 
e.getLineNumber(), e.getColumnNumber() );
         }
         finally
         {

Added: 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelParseException.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelParseException.java?rev=779299&view=auto
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelParseException.java
 (added)
+++ 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelParseException.java
 Wed May 27 20:28:12 2009
@@ -0,0 +1,93 @@
+package org.apache.maven.model.io;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.IOException;
+
+/**
+ * Signals a failure to parse the POM due to invalid syntax (e.g. 
non-wellformed XML or unknown elements).
+ * 
+ * @author Benjamin Bentmann
+ */
+public class ModelParseException
+    extends IOException
+{
+
+    /**
+     * The one-based index of the line containing the error.
+     */
+    private int lineNumber;
+
+    /**
+     * The one-based index of the column containing the error.
+     */
+    private int columnNumber;
+
+    /**
+     * Creates a new parser exception with the specified details.
+     * 
+     * @param message The error message, may be {...@code null}.
+     * @param lineNumber The one-based index of the line containing the error 
or {...@code -1} if unknown.
+     * @param columnNumber The one-based index of the column containing the 
error or {...@code -1} if unknown.
+     */
+    public ModelParseException( String message, int lineNumber, int 
columnNumber )
+    {
+        super( message );
+        this.lineNumber = lineNumber;
+        this.columnNumber = columnNumber;
+    }
+
+    /**
+     * Creates a new parser exception with the specified details.
+     * 
+     * @param message The error message, may be {...@code null}.
+     * @param cause The nested cause of this error, may be {...@code null}.
+     * @param lineNumber The one-based index of the line containing the error 
or {...@code -1} if unknown.
+     * @param columnNumber The one-based index of the column containing the 
error or {...@code -1} if unknown.
+     */
+    public ModelParseException( String message, Throwable cause, int 
lineNumber, int columnNumber )
+    {
+        super( message );
+        initCause( cause );
+        this.lineNumber = lineNumber;
+        this.columnNumber = columnNumber;
+    }
+
+    /**
+     * Gets the one-based index of the line containing the error.
+     * 
+     * @return The one-based index of the line containing the error or a 
non-positive value if unknown.
+     */
+    public int getLineNumber()
+    {
+        return lineNumber;
+    }
+
+    /**
+     * Gets the one-based index of the column containing the error.
+     * 
+     * @return The one-based index of the column containing the error or 
non-positive value if unknown.
+     */
+    public int getColumnNumber()
+    {
+        return columnNumber;
+    }
+
+}

Propchange: 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelParseException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelParseException.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java?rev=779299&r1=779298&r2=779299&view=diff
==============================================================================
--- 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java
 (original)
+++ 
maven/components/branches/MNG-2766/maven-model-builder/src/main/java/org/apache/maven/model/io/ModelReader.java
 Wed May 27 20:28:12 2009
@@ -48,9 +48,10 @@
      * @param options The options to use for deserialization, may be {...@code 
null} to use the default values.
      * @return The deserialized model, never {...@code null}.
      * @throws IOException If the model could not be deserialized.
+     * @throws ModelParseException If the input format could not be parsed.
      */
     Model read( File input, Map<String, Object> options )
-        throws IOException;
+        throws IOException, ModelParseException;
 
     /**
      * Reads the model from the specified character reader. The reader will be 
automatically closed before the method
@@ -60,9 +61,10 @@
      * @param options The options to use for deserialization, may be {...@code 
null} to use the default values.
      * @return The deserialized model, never {...@code null}.
      * @throws IOException If the model could not be deserialized.
+     * @throws ModelParseException If the input format could not be parsed.
      */
     Model read( Reader input, Map<String, Object> options )
-        throws IOException;
+        throws IOException, ModelParseException;
 
     /**
      * Reads the model from the specified byte stream. The stream will be 
automatically closed before the method
@@ -72,8 +74,9 @@
      * @param options The options to use for deserialization, may be {...@code 
null} to use the default values.
      * @return The deserialized model, never {...@code null}.
      * @throws IOException If the model could not be deserialized.
+     * @throws ModelParseException If the input format could not be parsed.
      */
     Model read( InputStream input, Map<String, Object> options )
-        throws IOException;
+        throws IOException, ModelParseException;
 
 }


Reply via email to