Modified: maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj?rev=603779&r1=603778&r2=603779&view=diff ============================================================================== --- maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj (original) +++ maven/components/trunk/maven-embedder/src/main/aspect/org/apache/maven/embedder/cache/ErrorReportingAspect.aj Wed Dec 12 15:40:49 2007 @@ -11,7 +11,9 @@ import org.apache.maven.lifecycle.LifecycleExecutionException; import org.apache.maven.project.error.ProjectReporterManager; import org.apache.maven.project.error.ProjectErrorReporter; +import org.apache.maven.project.DuplicateProjectException; import org.apache.maven.project.ProjectBuildingException; +import org.apache.maven.reactor.MavenExecutionException; public privileged aspect ErrorReportingAspect { @@ -79,6 +81,51 @@ } } + boolean around( DuplicateProjectException e, boolean showStackTraces, StringWriter writer ): + execution( private static boolean CLIReportingUtils.handleDuplicateProjectException( DuplicateProjectException, boolean, StringWriter ) ) + && args( e, showStackTraces, writer ) + { + ProjectErrorReporter projectErrorReporter = ProjectReporterManager.getReporter(); + + if ( projectErrorReporter == null ) + { + return proceed( e, showStackTraces, writer ); + } + else + { + Throwable reportingError = projectErrorReporter.findReportedException( e ); + + boolean result = false; + + if ( reportingError != null ) + { + writer.write( projectErrorReporter.getFormattedMessage( reportingError ) ); + + if ( showStackTraces ) + { + writer.write( CLIReportingUtils.NEWLINE ); + writer.write( CLIReportingUtils.NEWLINE ); + Throwable cause = projectErrorReporter.getRealCause( reportingError ); + if ( cause != null ) + { + cause.printStackTrace( new PrintWriter( writer ) ); + } + } + + writer.write( CLIReportingUtils.NEWLINE ); + writer.write( CLIReportingUtils.NEWLINE ); + + result = true; + } + else + { + result = proceed( e, showStackTraces, writer ); + } + + return result; + } + } + boolean around( BuildFailureException e, boolean showStackTraces, StringWriter writer ): execution( private static boolean CLIReportingUtils.handleBuildFailureException( BuildFailureException, boolean, StringWriter ) ) && args( e, showStackTraces, writer ) @@ -169,4 +216,48 @@ } } + boolean around( MavenExecutionException e, boolean showStackTraces, StringWriter writer ): + execution( private static boolean CLIReportingUtils.handleMavenExecutionException( MavenExecutionException, boolean, StringWriter ) ) + && args( e, showStackTraces, writer ) + { + CoreErrorReporter coreErrorReporter = CoreReporterManager.getReporter(); + + if ( coreErrorReporter == null ) + { + return proceed( e, showStackTraces, writer ); + } + else + { + Throwable reportingError = coreErrorReporter.findReportedException( e ); + + boolean result = false; + + if ( reportingError != null ) + { + writer.write( coreErrorReporter.getFormattedMessage( reportingError ) ); + + if ( showStackTraces ) + { + writer.write( CLIReportingUtils.NEWLINE ); + writer.write( CLIReportingUtils.NEWLINE ); + Throwable cause = coreErrorReporter.getRealCause( reportingError ); + if ( cause != null ) + { + cause.printStackTrace( new PrintWriter( writer ) ); + } + } + + writer.write( CLIReportingUtils.NEWLINE ); + writer.write( CLIReportingUtils.NEWLINE ); + + result = true; + } + else + { + result = proceed( e, showStackTraces, writer ); + } + + return result; + } + } }
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=603779&r1=603778&r2=603779&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 Wed Dec 12 15:40:49 2007 @@ -1,21 +1,18 @@ package org.apache.maven.cli; import org.apache.maven.BuildFailureException; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.embedder.MavenEmbedderConsoleLogger; import org.apache.maven.embedder.MavenEmbedderLogger; 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.extension.ExtensionScanningException; 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; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; @@ -279,69 +276,7 @@ boolean showStackTraces, StringWriter writer ) { - - // ===================================================================== - // Cases covered: - // ===================================================================== - // - // MavenExecutionException(String, File, ProjectBuildingException) - // MavenExecutionException(String, ExtensionScanningException) - // MavenExecutionException(String, IOException) - // - // ===================================================================== - // Cases left to cover: - // ===================================================================== - // - // MavenExecutionException(String, ArtifactResolutionException) - // MavenExecutionException(String, File) - - Throwable cause = e.getCause(); - if ( cause != null ) - { - if ( cause instanceof IOException ) - { - writer.write( e.getMessage() ); - writer.write( NEWLINE ); - - handleGenericException( cause, showStackTraces, writer ); - - return true; - } - else if ( cause instanceof ExtensionScanningException ) - { - writer.write( "While scanning for build extensions:" ); - writer.write( NEWLINE ); - writer.write( NEWLINE ); - - Throwable nestedCause = cause.getCause(); - if ( ( nestedCause != null ) && ( nestedCause instanceof ProjectBuildingException ) ) - { - return handleProjectBuildingException( (ProjectBuildingException) nestedCause, - showStackTraces, - writer ); - } - else - { - handleGenericException( cause, showStackTraces, writer ); - - return true; - } - } - else if ( cause instanceof ProjectBuildingException ) - { - return handleProjectBuildingException( (ProjectBuildingException) cause, - showStackTraces, - writer ); - } - else if ( cause instanceof ArtifactResolutionException ) - { - - } - } - else - { - - } + handleGenericException( e, showStackTraces, writer ); if ( e.getPomFile() != null ) { @@ -360,26 +295,7 @@ boolean showStackTraces, StringWriter writer ) { - // ===================================================================== - // Cases covered: - // ===================================================================== - // - // DuplicateProjectException(String, File, File, String) - - File existing = e.getExistingProjectFile(); - File conflicting = e.getConflictingProjectFile(); - String projectId = e.getProjectId(); - - writer.write( "Duplicated project detected." ); - writer.write( NEWLINE ); - writer.write( NEWLINE ); - writer.write( "Project: " + projectId ); - writer.write( NEWLINE ); - writer.write( "File: " ); - writer.write( existing.getAbsolutePath() ); - writer.write( NEWLINE ); - writer.write( "File: " ); - writer.write( conflicting.getAbsolutePath() ); + handleGenericException( e, showStackTraces, writer ); return true; } @@ -445,6 +361,7 @@ StringWriter writer ) { handleGenericException( e, showStackTraces, writer ); + return true; } Added: maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj?rev=603779&view=auto ============================================================================== --- maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj (added) +++ maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProjectCollisionReporterAspect.aj Wed Dec 12 15:40:49 2007 @@ -0,0 +1,32 @@ +package org.apache.maven.project.aspect; + +import org.apache.maven.project.DuplicateProjectException; +import org.apache.maven.project.ProjectSorter; + +import java.util.List; + +public aspect ProjectCollisionReporterAspect + extends AbstractProjectErrorReporterAspect +{ + + /** + * <b>Call Stack:</b> + * <br/> + * <pre> + * MavenEmbedder.execute(MavenExecutionRequest) + * MavenEmbedder.readProjectWithDependencies(MavenExecutionRequest) + * --> DefaultMaven.execute(MavenExecutionRequest) + * --> DefaultMaven.createReactorManager(MavenExecutionRequest, MavenExecutionResult) + * --> new ReactorManager(List, String) + * --> new ProjectSorter(List) + * <----------------------- DuplicateProjectException + * </pre> + */ + after( List allProjectInstances ) throwing( DuplicateProjectException err ): + execution( ProjectSorter.new( List ) ) + && args( allProjectInstances ) + { + getReporter().reportProjectCollision( allProjectInstances, err ); + } + +} 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=603779&r1=603778&r2=603779&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 Wed Dec 12 15:40:49 2007 @@ -15,6 +15,7 @@ import org.apache.maven.profiles.activation.ProfileActivationContext; import org.apache.maven.profiles.activation.ProfileActivationException; import org.apache.maven.profiles.activation.ProfileActivator; +import org.apache.maven.project.DuplicateProjectException; import org.apache.maven.project.InvalidProjectModelException; import org.apache.maven.project.InvalidProjectVersionException; import org.apache.maven.project.MavenProject; @@ -790,5 +791,35 @@ writer ); registerProjectBuildError( cause, writer.toString() ); + } + + public void reportProjectCollision( List allProjectInstances, + DuplicateProjectException err ) + { + + File existing = err.getExistingProjectFile(); + File conflicting = err.getConflictingProjectFile(); + String projectId = err.getProjectId(); + + StringWriter writer = new StringWriter(); + + writer.write( "Duplicated project detected." ); + writer.write( NEWLINE ); + writer.write( NEWLINE ); + writer.write( "Project: " + projectId ); + writer.write( NEWLINE ); + writer.write( "File: " ); + writer.write( String.valueOf( existing ) ); + writer.write( NEWLINE ); + writer.write( "File: " ); + writer.write( String.valueOf( conflicting ) ); + writer.write( NEWLINE ); + writer.write( NEWLINE ); + writer.write( "NOTE: Each project in a Maven build must have a unique combination of groupId and artifactId." ); + + addTips( ProjectErrorTips.getTipsForDuplicateProjectError( allProjectInstances, err ), + writer ); + + registerProjectBuildError( 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=603779&r1=603778&r2=603779&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 Wed Dec 12 15:40:49 2007 @@ -13,6 +13,7 @@ import org.apache.maven.profiles.activation.ProfileActivationContext; import org.apache.maven.profiles.activation.ProfileActivationException; import org.apache.maven.profiles.activation.ProfileActivator; +import org.apache.maven.project.DuplicateProjectException; import org.apache.maven.project.InvalidProjectModelException; import org.apache.maven.project.InvalidProjectVersionException; import org.apache.maven.project.MavenProject; @@ -413,4 +414,20 @@ String childId, File childPomFile, ArtifactResolutionException cause ); + + /** + * <b>Call Stack:</b> + * <br/> + * <pre> + * MavenEmbedder.execute(MavenExecutionRequest) + * MavenEmbedder.readProjectWithDependencies(MavenExecutionRequest) + * --> DefaultMaven.execute(MavenExecutionRequest) + * --> DefaultMaven.createReactorManager(MavenExecutionRequest, MavenExecutionResult) + * --> new ReactorManager(List, String) + * --> new ProjectSorter(List) + * <----------------------- DuplicateProjectException + * </pre> + */ + void reportProjectCollision( List allProjectInstances, + DuplicateProjectException err ); } Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java?rev=603779&r1=603778&r2=603779&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorTips.java Wed Dec 12 15:40:49 2007 @@ -8,6 +8,7 @@ import org.apache.maven.profiles.activation.ProfileActivationContext; import org.apache.maven.profiles.activation.ProfileActivationException; import org.apache.maven.profiles.activation.ProfileActivator; +import org.apache.maven.project.DuplicateProjectException; import org.apache.maven.project.InvalidProjectVersionException; import org.apache.maven.project.MavenProject; import org.apache.maven.project.interpolation.ModelInterpolationException; @@ -163,6 +164,13 @@ public static List getTipsForPomParsingError( String projectId, File pomFile, Exception cause ) + { + // TODO Auto-generated method stub + return null; + } + + public static List getTipsForDuplicateProjectError( List allProjectInstances, + DuplicateProjectException err ) { // TODO Auto-generated method stub return null;