Author: jdcasey
Date: Sat Dec 15 00:17:21 2007
New Revision: 604401

URL: http://svn.apache.org/viewvc?rev=604401&view=rev
Log:
Error reporting works properly now.

Added:
    
maven/components/trunk/maven-core/src/main/aspect/org/apache/maven/errors/CoreReporterDebugAspect.aj
    
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterDebugAspect.aj
Removed:
    
maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj
Modified:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreErrorReporter.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/DefaultCoreErrorReporter.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/Configuration.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultConfiguration.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java

Added: 
maven/components/trunk/maven-core/src/main/aspect/org/apache/maven/errors/CoreReporterDebugAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/aspect/org/apache/maven/errors/CoreReporterDebugAspect.aj?rev=604401&view=auto
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/aspect/org/apache/maven/errors/CoreReporterDebugAspect.aj
 (added)
+++ 
maven/components/trunk/maven-core/src/main/aspect/org/apache/maven/errors/CoreReporterDebugAspect.aj
 Sat Dec 15 00:17:21 2007
@@ -0,0 +1,28 @@
+package org.apache.maven.errors;
+
+import org.apache.maven.errors.DefaultCoreErrorReporter;
+import org.apache.maven.errors.CoreErrorReporter;
+import org.aspectj.lang.reflect.SourceLocation;
+
+public privileged aspect CoreReporterDebugAspect
+{
+
+//    before( Throwable key, DefaultCoreErrorReporter reporter ):
+//        call( void DefaultCoreErrorReporter.registerBuildError( Throwable, 
.. ) )
+//        && args( key, .. )
+//        && target( reporter )
+//    {
+//        SourceLocation location = thisJoinPoint.getSourceLocation();
+//        System.out.println( "Registering: " + key.getClass().getName() + "@" 
+ key.hashCode() + "\nfrom: " + location.getFileName() + ", line: " + 
location.getLine() + "\nreporter instance hashcode is: " + reporter.hashCode() 
);
+//    }
+//
+//    after() returning( Throwable key ):
+//        execution( Throwable CoreErrorReporter+.findReportedException( 
Throwable ) )
+//    {
+//        if ( key != null )
+//        {
+//            System.out.println( "Found reported exception: " + 
key.getClass().getName() + "@" + key.hashCode() );
+//        }
+//    }
+
+}

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreErrorReporter.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreErrorReporter.java
 Sat Dec 15 00:17:21 2007
@@ -37,6 +37,7 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.apache.maven.project.error.ProjectErrorReporter;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
 import org.apache.maven.project.path.PathTranslator;
 import org.apache.maven.reactor.MavenExecutionException;
@@ -51,17 +52,8 @@
 import java.util.Map;
 
 public interface CoreErrorReporter
+    extends ProjectErrorReporter
 {
-
-    String NEWLINE = "\n";
-
-    void clearErrors();
-
-    String getFormattedMessage( Throwable error );
-
-    Throwable getRealCause( Throwable error );
-
-    Throwable findReportedException( Throwable error );
 
     void reportNoGoalsSpecifiedException( MavenProject rootProject, 
NoGoalsSpecifiedException error );
 

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/CoreReporterManager.java
 Sat Dec 15 00:17:21 2007
@@ -1,5 +1,7 @@
 package org.apache.maven.errors;
 
+import org.apache.maven.project.error.ProjectReporterManager;
+
 public final class CoreReporterManager
 {
 
@@ -14,6 +16,8 @@
         if ( reporter == null )
         {
             reporter = new DefaultCoreErrorReporter();
+            // FIXME: Is this correct? What might this isolate and make 
inaccessible in a running system?
+            ProjectReporterManager.setReporter( reporter );
         }
 
         return reporter;
@@ -22,6 +26,7 @@
     public static void setReporter( CoreErrorReporter instance )
     {
         reporter = instance;
+        ProjectReporterManager.setReporter( instance );
     }
 
     public static void clearReporter()

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/DefaultCoreErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/DefaultCoreErrorReporter.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/DefaultCoreErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/errors/DefaultCoreErrorReporter.java
 Sat Dec 15 00:17:21 2007
@@ -44,6 +44,7 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.apache.maven.project.error.DefaultProjectErrorReporter;
 import org.apache.maven.project.error.ProjectErrorReporter;
 import org.apache.maven.project.error.ProjectReporterManager;
 import org.apache.maven.project.interpolation.ModelInterpolationException;
@@ -66,70 +67,20 @@
 import java.util.Map;
 
 public class DefaultCoreErrorReporter
+    extends DefaultProjectErrorReporter
     implements CoreErrorReporter
 {
 
-    private Map formattedMessages = new HashMap();
+    private static final String NEWLINE = "\n";
 
-    private Map realCauses = new HashMap();
-
-    /**
-     * @see org.apache.maven.project.error.ProjectErrorReporter#clearErrors()
-     */
-    public void clearErrors()
+    public DefaultCoreErrorReporter( Map formattedMessageStore, Map 
realCauseStore )
     {
-        formattedMessages.clear();
-        realCauses.clear();
+        super( formattedMessageStore, realCauseStore );
     }
 
-    /**
-     * @see 
org.apache.maven.project.error.ProjectErrorReporter#hasInformationFor(java.lang.Throwable)
-     */
-    public Throwable findReportedException( Throwable error )
+    public DefaultCoreErrorReporter()
     {
-        if ( formattedMessages.containsKey( error ) )
-        {
-            return error;
-        }
-        else if ( error.getCause() != null )
-        {
-            return findReportedException( error.getCause() );
-        }
-
-        return null;
-    }
 
-    /**
-     * @see 
org.apache.maven.project.error.ProjectErrorReporter#getFormattedMessage(java.lang.Throwable)
-     */
-    public String getFormattedMessage( Throwable error )
-    {
-        return (String) formattedMessages.get( error );
-    }
-
-    /**
-     * @see 
org.apache.maven.project.error.ProjectErrorReporter#getRealCause(java.lang.Throwable)
-     */
-    public Throwable getRealCause( Throwable error )
-    {
-        return (Throwable) realCauses.get( error );
-    }
-
-    private void registerBuildError( Throwable error,
-                                     String formattedMessage,
-                                     Throwable realCause )
-    {
-        formattedMessages.put( error, formattedMessage );
-        if ( realCause != null )
-        {
-            realCauses.put( error, realCause );
-        }
-    }
-
-    private void registerBuildError( Throwable error,
-                                     String formattedMessage )
-    {
-        formattedMessages.put( error, formattedMessage );
     }
 
     public void reportNoGoalsSpecifiedException( MavenProject rootProject, 
NoGoalsSpecifiedException error )

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
 Sat Dec 15 00:17:21 2007
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.errors.CoreErrorReporter;
 import org.apache.maven.monitor.event.EventMonitor;
 import org.apache.maven.profiles.ProfileManager;
 import org.apache.maven.settings.Settings;
@@ -527,6 +528,8 @@
 
     private Settings settings;
 
+    private CoreErrorReporter errorReporter;
+
     public MavenExecutionRequest setSettings( Settings settings )
     {
         this.settings = settings;
@@ -621,6 +624,17 @@
     {
         realmManager.clear();
 
+        return this;
+    }
+
+    public CoreErrorReporter getErrorReporter()
+    {
+        return errorReporter;
+    }
+
+    public MavenExecutionRequest setErrorReporter( CoreErrorReporter reporter )
+    {
+        errorReporter = reporter;
         return this;
     }
 }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
 Sat Dec 15 00:17:21 2007
@@ -21,6 +21,7 @@
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.errors.CoreErrorReporter;
 import org.apache.maven.monitor.event.EventMonitor;
 import org.apache.maven.profiles.ProfileManager;
 import org.apache.maven.settings.Settings;
@@ -207,4 +208,7 @@
     MavenRealmManager getRealmManager();
 
     MavenExecutionRequest clearAccumulatedBuildState();
+
+    MavenExecutionRequest setErrorReporter( CoreErrorReporter reporter );
+    CoreErrorReporter getErrorReporter();
 }

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
 Sat Dec 15 00:17:21 2007
@@ -1,14 +1,14 @@
 package org.apache.maven.cli;
 
-import org.apache.maven.BuildFailureException;
 import org.apache.maven.embedder.MavenEmbedderConsoleLogger;
 import org.apache.maven.embedder.MavenEmbedderLogger;
+import org.apache.maven.errors.CoreErrorReporter;
+import org.apache.maven.errors.DefaultCoreErrorReporter;
 import org.apache.maven.execution.BuildFailure;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.execution.ReactorManager;
 import org.apache.maven.lifecycle.LifecycleExecutionException;
-import org.apache.maven.project.DuplicateProjectException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingException;
 import org.apache.maven.reactor.MavenExecutionException;
@@ -128,7 +128,7 @@
             {
                 Exception e = (Exception) i.next();
 
-                showError( e, request.isShowErrors(), logger );
+                showError( e, request.isShowErrors(), 
request.getErrorReporter(), logger );
             }
         }
         else
@@ -178,14 +178,15 @@
                            Exception e,
                            boolean showErrors )
     {
-        showError( message, e, showErrors, new MavenEmbedderConsoleLogger() );
+        showError( message, e, showErrors, new DefaultCoreErrorReporter(), new 
MavenEmbedderConsoleLogger() );
     }
 
     static void showError( Exception e,
                            boolean show,
+                           CoreErrorReporter reporter,
                            MavenEmbedderLogger logger )
     {
-        showError( null, e, show, logger );
+        showError( null, e, show, reporter, logger );
     }
 
     /**
@@ -198,6 +199,7 @@
     public static void showError( String message,
                            Exception e,
                            boolean showStackTraces,
+                           CoreErrorReporter reporter,
                            MavenEmbedderLogger logger )
     {
         StringWriter writer = new StringWriter();
@@ -210,7 +212,7 @@
             writer.write( NEWLINE );
         }
 
-        buildErrorMessage( e, showStackTraces, writer );
+        buildErrorMessage( e, showStackTraces, reporter, writer );
 
         writer.write( NEWLINE );
 
@@ -231,17 +233,38 @@
 
     public static void buildErrorMessage( Exception e,
                                            boolean showStackTraces,
+                                           CoreErrorReporter reporter,
                                            StringWriter writer )
     {
-        boolean handled = false;
-
-        if ( e instanceof BuildFailureException )
+        if ( reporter != null )
         {
-            handled = handleBuildFailureException( (BuildFailureException) e,
-                                                   showStackTraces,
-                                                   writer );
+            Throwable reported = reporter.findReportedException( e );
+
+            if ( reported != null )
+            {
+                writer.write( reporter.getFormattedMessage( reported ) );
+
+                if ( showStackTraces )
+                {
+                    writer.write( NEWLINE );
+                    writer.write( NEWLINE );
+                    Throwable cause = reporter.getRealCause( reported );
+                    if ( cause != null )
+                    {
+                        cause.printStackTrace( new PrintWriter( writer ) );
+                    }
+                }
+
+                writer.write( NEWLINE );
+                writer.write( NEWLINE );
+
+                return;
+            }
         }
-        else if ( e instanceof ProjectBuildingException )
+
+        boolean handled = false;
+
+        if ( e instanceof ProjectBuildingException )
         {
             handled = handleProjectBuildingException( 
(ProjectBuildingException) e,
                                                       showStackTraces,
@@ -253,12 +276,6 @@
                                                          showStackTraces,
                                                          writer );
         }
-        else if ( e instanceof DuplicateProjectException )
-        {
-            handled = handleDuplicateProjectException( 
(DuplicateProjectException) e,
-                                                       showStackTraces,
-                                                       writer );
-        }
         else if ( e instanceof MavenExecutionException )
         {
             handled = handleMavenExecutionException( (MavenExecutionException) 
e,
@@ -291,15 +308,6 @@
         return true;
     }
 
-    private static boolean handleDuplicateProjectException( 
DuplicateProjectException e,
-                                                            boolean 
showStackTraces,
-                                                            StringWriter 
writer )
-    {
-        handleGenericException( e, showStackTraces, writer );
-
-        return true;
-    }
-
     private static void handleGenericException( Throwable exception,
                                                 boolean showStackTraces,
                                                 StringWriter writer )
@@ -330,7 +338,6 @@
         return true;
     }
 
-    // NOTE: This method is an aspect target.
     private static boolean handleProjectBuildingException( 
ProjectBuildingException e,
                                                            boolean 
showStackTraces,
                                                            StringWriter writer 
)
@@ -351,16 +358,6 @@
             writer.write( e.getPomFile().getAbsolutePath() );
         }
         writer.write( NEWLINE );
-
-        return true;
-    }
-
-    // NOTE: This method is an aspect target.
-    private static boolean handleBuildFailureException( BuildFailureException 
e,
-                                                        boolean 
showStackTraces,
-                                                        StringWriter writer )
-    {
-        handleGenericException( e, showStackTraces, writer );
 
         return true;
     }

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
 Sat Dec 15 00:17:21 2007
@@ -29,6 +29,7 @@
 import org.apache.maven.embedder.MavenEmbedderException;
 import org.apache.maven.embedder.MavenEmbedderFileLogger;
 import org.apache.maven.embedder.MavenEmbedderLogger;
+import org.apache.maven.errors.DefaultCoreErrorReporter;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.codehaus.plexus.classworlds.ClassWorld;
@@ -145,6 +146,8 @@
 
         Configuration configuration = buildEmbedderConfiguration( request, 
commandLine, classWorld );
 
+        System.out.println( "Using error reporter: " + 
configuration.getErrorReporter() );
+
         ConfigurationValidationResult cvr = 
MavenEmbedder.validateConfiguration( configuration );
 
         if ( cvr.isUserSettingsFilePresent() && 
!cvr.isUserSettingsFileParses() )
@@ -209,6 +212,7 @@
         }
 
         Configuration configuration = new DefaultConfiguration()
+            .setErrorReporter( new DefaultCoreErrorReporter() )
             .setUserSettingsFile( userSettingsFile )
             .setGlobalSettingsFile( MavenEmbedder.DEFAULT_GLOBAL_SETTINGS_FILE 
)
             .setClassWorld( classWorld );

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/Configuration.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/Configuration.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/Configuration.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/Configuration.java
 Sat Dec 15 00:17:21 2007
@@ -18,6 +18,7 @@
  * under the License.
  */
 
+import org.apache.maven.errors.CoreErrorReporter;
 import org.apache.maven.execution.MavenRealmManager;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.classworlds.ClassWorld;
@@ -131,4 +132,13 @@
     Configuration setRealmManager( MavenRealmManager realmManager );
 
     MavenRealmManager getRealmManager();
+
+    // 
----------------------------------------------------------------------------
+    // Error Reporter
+    // 
----------------------------------------------------------------------------
+
+    Configuration setErrorReporter( CoreErrorReporter errorReporter );
+
+    CoreErrorReporter getErrorReporter();
+
 }

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultConfiguration.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultConfiguration.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultConfiguration.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/DefaultConfiguration.java
 Sat Dec 15 00:17:21 2007
@@ -18,6 +18,7 @@
  * under the License.
  */
 
+import org.apache.maven.errors.CoreErrorReporter;
 import org.apache.maven.execution.MavenRealmManager;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.classworlds.ClassWorld;
@@ -61,6 +62,8 @@
 
     private MavenRealmManager realmManager;
 
+    private CoreErrorReporter errorReporter;
+
     /** Creates a new instance of DefaultConfiguration */
     public DefaultConfiguration()
     {
@@ -230,6 +233,17 @@
     public Configuration setRealmManager( MavenRealmManager realmManager )
     {
         this.realmManager = realmManager;
+        return this;
+    }
+
+    public CoreErrorReporter getErrorReporter()
+    {
+        return errorReporter;
+    }
+
+    public Configuration setErrorReporter( CoreErrorReporter errorReporter )
+    {
+        this.errorReporter = errorReporter;
         return this;
     }
 }

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 Sat Dec 15 00:17:21 2007
@@ -31,6 +31,8 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.embedder.execution.MavenExecutionRequestPopulator;
+import org.apache.maven.errors.CoreErrorReporter;
+import org.apache.maven.errors.CoreReporterManager;
 import org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.DefaultMavenExecutionResult;
 import org.apache.maven.execution.MavenExecutionRequest;
@@ -330,6 +332,11 @@
     public MavenProject readProject( File mavenProject )
     throws ProjectBuildingException, ExtensionScanningException
     {
+        CoreErrorReporter errorReporter = request.getErrorReporter();
+        errorReporter.clearErrors();
+
+        CoreReporterManager.setReporter( errorReporter );
+
         return readProject( mavenProject, request );
     }
 
@@ -358,6 +365,11 @@
         {
             request = populator.populateDefaults( request, configuration );
 
+            CoreErrorReporter errorReporter = request.getErrorReporter();
+            errorReporter.clearErrors();
+
+            CoreReporterManager.setReporter( errorReporter );
+
             // This is necessary to make the 
MavenEmbedderProjectWithExtensionReadingTest work which uses
             // a custom type for a dependency like this:
             //
@@ -795,6 +807,11 @@
 
                 return result;
             }
+
+            CoreErrorReporter errorReporter = request.getErrorReporter();
+            errorReporter.clearErrors();
+
+            CoreReporterManager.setReporter( errorReporter );
 
             return maven.execute( request );
         }

Modified: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
 (original)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
 Sat Dec 15 00:17:21 2007
@@ -28,6 +28,7 @@
 import org.apache.maven.embedder.Configuration;
 import org.apache.maven.embedder.MavenEmbedder;
 import org.apache.maven.embedder.MavenEmbedderException;
+import org.apache.maven.errors.DefaultCoreErrorReporter;
 import org.apache.maven.execution.DefaultMavenRealmManager;
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.model.Profile;
@@ -97,6 +98,8 @@
                                                    Configuration configuration 
)
         throws MavenEmbedderException
     {
+        reporter( request, configuration );
+
         executionProperties( request, configuration );
 
         pom( request, configuration );
@@ -122,6 +125,22 @@
         realmManager( request, configuration );
 
         return request;
+    }
+
+    private void reporter( MavenExecutionRequest request,
+                           Configuration configuration )
+    {
+        if ( request.getErrorReporter() == null )
+        {
+            if ( configuration.getErrorReporter() != null )
+            {
+                request.setErrorReporter( configuration.getErrorReporter() );
+            }
+            else
+            {
+                request.setErrorReporter( new DefaultCoreErrorReporter() );
+            }
+        }
     }
 
     private void executionProperties( MavenExecutionRequest request,

Added: 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterDebugAspect.aj
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterDebugAspect.aj?rev=604401&view=auto
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterDebugAspect.aj
 (added)
+++ 
maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectReporterDebugAspect.aj
 Sat Dec 15 00:17:21 2007
@@ -0,0 +1,34 @@
+package org.apache.maven.project.aspect;
+
+import org.apache.maven.project.error.ProjectErrorReporter;
+import org.apache.maven.project.error.DefaultProjectErrorReporter;
+import org.aspectj.lang.reflect.SourceLocation;
+
+public privileged aspect ProjectReporterDebugAspect
+{
+
+//    before( Throwable key, String message, DefaultProjectErrorReporter 
reporter ):
+//        call( void DefaultProjectErrorReporter.registerBuildError( 
Throwable, String, .. ) )
+//        && args( key, message, .. )
+//        && target( reporter )
+//    {
+//        SourceLocation location = thisJoinPoint.getSourceLocation();
+//        System.out.println( "Registering: " + key.getClass().getName() + "@" 
+ key.hashCode() + "\nfrom: " + location.getFileName() + ", line: " + 
location.getLine() + "\nreporter is: " + reporter + "\n\nMessage:\n\n" + 
message );
+//    }
+//
+//    before():
+//        execution( void DefaultProjectErrorReporter.clearErrors() )
+//    {
+//        System.out.println( "WARNING: CLEARING ALL ERROR REPORTS." );
+//    }
+//
+//    after() returning( Throwable key ):
+//        execution( Throwable ProjectErrorReporter+.findReportedException( 
Throwable ) )
+//    {
+//        if ( key != null )
+//        {
+//            System.out.println( "Found reported exception: " + 
key.getClass().getName() + "@" + key.hashCode() );
+//        }
+//    }
+
+}

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
 Sat Dec 15 00:17:21 2007
@@ -37,9 +37,23 @@
     implements ProjectErrorReporter
 {
 
-    private Map formattedMessages = new HashMap();
+    private static final String NEWLINE = "\n";
 
-    private Map realCauses = new HashMap();
+    private Map formattedMessages;
+
+    private Map realCauses;
+
+    public DefaultProjectErrorReporter( Map formattedMessageStore, Map 
realCauseStore )
+    {
+        formattedMessages = formattedMessageStore;
+        realCauses = realCauseStore;
+    }
+
+    public DefaultProjectErrorReporter()
+    {
+        formattedMessages = new HashMap();
+        realCauses = new HashMap();
+    }
 
     /**
      * @see org.apache.maven.project.error.ProjectErrorReporter#clearErrors()
@@ -83,7 +97,7 @@
         return (Throwable) realCauses.get( error );
     }
 
-    private void registerProjectBuildError( Throwable error,
+    protected void registerBuildError( Throwable error,
                                             String formattedMessage,
                                             Throwable realCause )
     {
@@ -91,7 +105,7 @@
         realCauses.put( error, realCause );
     }
 
-    private void registerProjectBuildError( Throwable error,
+    protected void registerBuildError( Throwable error,
                                             String formattedMessage )
     {
         formattedMessages.put( error, formattedMessage );
@@ -133,7 +147,7 @@
                                                                                
  context,
                                                                                
  cause ), writer );
 
-        registerProjectBuildError( cause, writer.toString(), cause.getCause() 
);
+        registerBuildError( cause, writer.toString(), cause.getCause() );
     }
 
     /**
@@ -173,7 +187,7 @@
                                                                                
                 cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString(), cause.getCause() 
);
+        registerBuildError( cause, writer.toString(), cause.getCause() );
     }
 
     /**
@@ -207,7 +221,7 @@
                                                                                
        cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString(), cause.getCause() 
);
+        registerBuildError( cause, writer.toString(), cause.getCause() );
     }
 
     /**
@@ -241,7 +255,7 @@
                                                                                
                       cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString(), cause.getCause() 
);
+        registerBuildError( cause, writer.toString(), cause.getCause() );
     }
 
     /**
@@ -270,7 +284,7 @@
                                                                                
   projectDir,
                                                                                
   cause ), writer );
 
-        registerProjectBuildError( cause, writer.toString(), cause.getCause() 
);
+        registerBuildError( cause, writer.toString(), cause.getCause() );
     }
 
     /**
@@ -306,7 +320,7 @@
                                                                                
   projectDir,
                                                                                
   cause ), writer );
 
-        registerProjectBuildError( cause, writer.toString(), cause.getCause() 
);
+        registerBuildError( cause, writer.toString(), cause.getCause() );
     }
 
     /**
@@ -336,7 +350,7 @@
         addTips( ProjectErrorTips.getTipsForInvalidRepositorySpec( repo, 
projectId, pomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString(), cause.getCause() 
);
+        registerBuildError( cause, writer.toString(), cause.getCause() );
     }
 
     private void addStandardInfo( String projectId,
@@ -395,7 +409,7 @@
         addTips( ProjectErrorTips.getTipsForInvalidRepositorySpec( repo, 
project.getId(), pomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportErrorCreatingDeploymentArtifactRepository( MavenProject 
project,
@@ -421,7 +435,7 @@
         addTips( ProjectErrorTips.getTipsForInvalidRepositorySpec( repo, 
project.getId(), pomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportBadNonDependencyProjectArtifactVersion( MavenProject 
project,
@@ -446,7 +460,7 @@
         addTips( ProjectErrorTips.getTipsForBadNonDependencyArtifactSpec( 
project, pomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportErrorInterpolatingModel( MavenProject project,
@@ -464,7 +478,7 @@
         addTips( ProjectErrorTips.getTipsForProjectInterpolationError( 
project, pomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportProjectValidationFailure( MavenProject project,
@@ -492,7 +506,7 @@
         addTips( ProjectErrorTips.getTipsForProjectValidationFailure( project, 
pomFile, error.getValidationResult() ),
                  writer );
 
-        registerProjectBuildError( error, writer.toString() );
+        registerBuildError( error, writer.toString() );
     }
 
     public void reportBadManagedDependencyVersion( MavenProject project,
@@ -528,7 +542,7 @@
         addTips( ProjectErrorTips.getTipsForBadDependencySpec( project, 
pomFile, dep ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportBadDependencyVersion( MavenProject project,
@@ -564,7 +578,7 @@
         addTips( ProjectErrorTips.getTipsForBadDependencySpec( project, 
pomFile, dep ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportErrorParsingProjectModel( String projectId,
@@ -599,7 +613,7 @@
         addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
pomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportErrorParsingParentProjectModel( ModelAndFile childInfo,
@@ -643,7 +657,7 @@
         addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
parentPomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportErrorParsingProjectModel( String projectId,
@@ -671,7 +685,7 @@
         addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
pomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportErrorParsingParentProjectModel( ModelAndFile childInfo,
@@ -708,7 +722,7 @@
         addTips( ProjectErrorTips.getTipsForPomParsingError( projectId, 
parentPomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportParentPomArtifactNotFound( Parent parentRef,
@@ -790,7 +804,7 @@
         addTips( ProjectErrorTips.getTipsForPomParsingError( childId, 
childPomFile, cause ),
                  writer );
 
-        registerProjectBuildError( cause, writer.toString() );
+        registerBuildError( cause, writer.toString() );
     }
 
     public void reportProjectCollision( List allProjectInstances,
@@ -820,6 +834,6 @@
         addTips( ProjectErrorTips.getTipsForDuplicateProjectError( 
allProjectInstances, err ),
                  writer );
 
-        registerProjectBuildError( err, writer.toString() );
+        registerBuildError( err, writer.toString() );
     }
 }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java?rev=604401&r1=604400&r2=604401&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
 Sat Dec 15 00:17:21 2007
@@ -30,8 +30,6 @@
 public interface ProjectErrorReporter
 {
 
-    String NEWLINE = "\n";
-
     void clearErrors();
 
     String getFormattedMessage( Throwable error );


Reply via email to