aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java')
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java336
1 files changed, 0 insertions, 336 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java b/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
deleted file mode 100644
index 6df72c81..00000000
--- a/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
+++ /dev/null
@@ -1,336 +0,0 @@
-package org.apache.maven.exception;
-
-/*
- * 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;
-import java.net.ConnectException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.lifecycle.LifecycleExecutionException;
-import org.apache.maven.model.building.ModelProblem;
-import org.apache.maven.model.building.ModelProblemUtils;
-import org.apache.maven.plugin.AbstractMojoExecutionException;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.PluginContainerException;
-import org.apache.maven.plugin.PluginExecutionException;
-import org.apache.maven.project.ProjectBuildingException;
-import org.apache.maven.project.ProjectBuildingResult;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.util.StringUtils;
-
-/*
-
-- test projects for each of these
-- how to categorize the problems so that the id of the problem can be match to a page with descriptive help and the test
- project
-- nice little sample projects that could be run in the core as well as integration tests
-
-All Possible Errors
-- invalid lifecycle phase (maybe same as bad CLI param, though you were talking about embedder too)
-- <module> specified is not found
-- malformed settings
-- malformed POM
-- local repository not writable
-- remote repositories not available
-- artifact metadata missing
-- extension metadata missing
-- extension artifact missing
-- artifact metadata retrieval problem
-- version range violation
-- circular dependency
-- artifact missing
-- artifact retrieval exception
-- md5 checksum doesn't match for local artifact, need to redownload this
-- POM doesn't exist for a goal that requires one
-- parent POM missing (in both the repository + relative path)
-- component not found
-
-Plugins:
-- plugin metadata missing
-- plugin metadata retrieval problem
-- plugin artifact missing
-- plugin artifact retrieval problem
-- plugin dependency metadata missing
-- plugin dependency metadata retrieval problem
-- plugin configuration problem
-- plugin execution failure due to something that is know to possibly go wrong (like compilation failure)
-- plugin execution error due to something that is not expected to go wrong (the compiler executable missing)
-- asking to use a plugin for which you do not have a version defined - tools to easily select versions
-- goal not found in a plugin (probably could list the ones that are)
-
- */
-
-// PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
-// CycleDetectedInPluginGraphException;
-
-@Component( role = ExceptionHandler.class )
-public class DefaultExceptionHandler
- implements ExceptionHandler
-{
-
- public ExceptionSummary handleException( Throwable exception )
- {
- return handle( "", exception );
- }
-
- private ExceptionSummary handle( String message, Throwable exception )
- {
- String reference = getReference( exception );
-
- List<ExceptionSummary> children = null;
-
- if ( exception instanceof ProjectBuildingException )
- {
- List<ProjectBuildingResult> results = ( (ProjectBuildingException) exception ).getResults();
-
- children = new ArrayList<ExceptionSummary>();
-
- for ( ProjectBuildingResult result : results )
- {
- ExceptionSummary child = handle( result );
- if ( child != null )
- {
- children.add( child );
- }
- }
-
- message = "The build could not read " + children.size() + " project" + ( children.size() == 1 ? "" : "s" );
- }
- else
- {
- message = getMessage( message, exception );
- }
-
- return new ExceptionSummary( exception, message, reference, children );
- }
-
- private ExceptionSummary handle( ProjectBuildingResult result )
- {
- List<ExceptionSummary> children = new ArrayList<ExceptionSummary>();
-
- for ( ModelProblem problem : result.getProblems() )
- {
- ExceptionSummary child = handle( problem, result.getProjectId() );
- if ( child != null )
- {
- children.add( child );
- }
- }
-
- if ( children.isEmpty() )
- {
- return null;
- }
-
- String message =
- "\nThe project " + result.getProjectId() + " (" + result.getPomFile() + ") has "
- + children.size() + " error" + ( children.size() == 1 ? "" : "s" );
-
- return new ExceptionSummary( null, message, null, children );
- }
-
- private ExceptionSummary handle( ModelProblem problem, String projectId )
- {
- if ( ModelProblem.Severity.ERROR.compareTo( problem.getSeverity() ) >= 0 )
- {
- String message = problem.getMessage();
-
- String location = ModelProblemUtils.formatLocation( problem, projectId );
-
- if ( StringUtils.isNotEmpty( location ) )
- {
- message += " @ " + location;
- }
-
- return handle( message, problem.getException() );
- }
- else
- {
- return null;
- }
- }
-
- private String getReference( Throwable exception )
- {
- String reference = "";
-
- if ( exception != null )
- {
- if ( exception instanceof MojoExecutionException )
- {
- reference = MojoExecutionException.class.getSimpleName();
-
- Throwable cause = exception.getCause();
- if ( cause instanceof IOException )
- {
- cause = cause.getCause();
- if ( cause instanceof ConnectException )
- {
- reference = ConnectException.class.getSimpleName();
- }
- }
- }
- else if ( exception instanceof MojoFailureException )
- {
- reference = MojoFailureException.class.getSimpleName();
- }
- else if ( exception instanceof LinkageError )
- {
- reference = LinkageError.class.getSimpleName();
- }
- else if ( exception instanceof PluginExecutionException )
- {
- Throwable cause = exception.getCause();
-
- if ( cause instanceof PluginContainerException )
- {
- Throwable cause2 = cause.getCause();
-
- if ( cause2 instanceof NoClassDefFoundError
- && cause2.getMessage().contains( "org/sonatype/aether/" ) )
- {
- reference = "AetherClassNotFound";
- }
- }
-
- if ( StringUtils.isEmpty( reference ) )
- {
- reference = getReference( cause );
- }
-
- if ( StringUtils.isEmpty( reference ) )
- {
- reference = exception.getClass().getSimpleName();
- }
- }
- else if ( exception instanceof LifecycleExecutionException )
- {
- reference = getReference( exception.getCause() );
- }
- else if ( isNoteworthyException( exception ) )
- {
- reference = exception.getClass().getSimpleName();
- }
- }
-
- if ( StringUtils.isNotEmpty( reference ) && !reference.startsWith( "http:" ) )
- {
- reference = "http://cwiki.apache.org/confluence/display/MAVEN/" + reference;
- }
-
- return reference;
- }
-
- private boolean isNoteworthyException( Throwable exception )
- {
- if ( exception == null )
- {
- return false;
- }
- else if ( exception instanceof Error )
- {
- return true;
- }
- else if ( exception instanceof RuntimeException )
- {
- return false;
- }
- else if ( exception.getClass().getName().startsWith( "java" ) )
- {
- return false;
- }
- return true;
- }
-
- private String getMessage( String message, Throwable exception )
- {
- String fullMessage = ( message != null ) ? message : "";
-
- for ( Throwable t = exception; t != null; t = t.getCause() )
- {
- String exceptionMessage = t.getMessage();
-
- if ( t instanceof AbstractMojoExecutionException )
- {
- String longMessage = ( (AbstractMojoExecutionException) t ).getLongMessage();
- if ( StringUtils.isNotEmpty( longMessage ) )
- {
- if ( StringUtils.isEmpty( exceptionMessage ) || longMessage.contains( exceptionMessage ) )
- {
- exceptionMessage = longMessage;
- }
- else if ( !exceptionMessage.contains( longMessage ) )
- {
- exceptionMessage = join( exceptionMessage, '\n' + longMessage );
- }
- }
- }
-
- if ( StringUtils.isEmpty( exceptionMessage ) )
- {
- exceptionMessage = t.getClass().getSimpleName();
- }
-
- if ( t instanceof UnknownHostException && !fullMessage.contains( "host" ) )
- {
- fullMessage = join( fullMessage, "Unknown host " + exceptionMessage );
- }
- else if ( !fullMessage.contains( exceptionMessage ) )
- {
- fullMessage = join( fullMessage, exceptionMessage );
- }
- }
-
- return fullMessage.trim();
- }
-
- private String join( String message1, String message2 )
- {
- String message = "";
-
- if ( StringUtils.isNotEmpty( message1 ) )
- {
- message = message1.trim();
- }
-
- if ( StringUtils.isNotEmpty( message2 ) )
- {
- if ( StringUtils.isNotEmpty( message ) )
- {
- if ( message.endsWith( "." ) || message.endsWith( "!" ) || message.endsWith( ":" ) )
- {
- message += " ";
- }
- else
- {
- message += ": ";
- }
- }
-
- message += message2;
- }
-
- return message;
- }
-
-}