001package org.apache.maven.plugin;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 *  http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
023import org.apache.maven.model.Plugin;
024import org.apache.maven.plugin.descriptor.MojoDescriptor;
025import org.apache.maven.plugin.descriptor.PluginDescriptor;
026import org.apache.maven.project.MavenProject;
027import org.codehaus.plexus.PlexusContainerException;
028import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
029import org.codehaus.plexus.component.repository.exception.ComponentRepositoryException;
030import org.codehaus.plexus.configuration.PlexusConfigurationException;
031
032/**
033 * Exception in the plugin manager.
034 *
035 * @author <a href="mailto:brett@apache.org">Brett Porter</a>
036 */
037public class PluginManagerException
038    extends Exception
039{
040
041    private final String pluginGroupId;
042
043    private final String pluginArtifactId;
044
045    private final String pluginVersion;
046
047    private String goal;
048
049    private MavenProject project;
050
051    protected PluginManagerException( Plugin plugin, String message, MavenProject project, Throwable cause )
052    {
053        super( message, cause );
054
055        this.project = project;
056        pluginGroupId = plugin.getGroupId();
057        pluginArtifactId = plugin.getArtifactId();
058        pluginVersion = plugin.getVersion();
059    }
060
061    public PluginManagerException( Plugin plugin, String message, Throwable cause )
062    {
063        super( message, cause );
064
065        pluginGroupId = plugin.getGroupId();
066        pluginArtifactId = plugin.getArtifactId();
067        pluginVersion = plugin.getVersion();
068    }
069
070    protected PluginManagerException( MojoDescriptor mojoDescriptor, String message, Throwable cause )
071    {
072        super( message, cause );
073        pluginGroupId = mojoDescriptor.getPluginDescriptor().getGroupId();
074        pluginArtifactId = mojoDescriptor.getPluginDescriptor().getArtifactId();
075        pluginVersion = mojoDescriptor.getPluginDescriptor().getVersion();
076        goal = mojoDescriptor.getGoal();
077    }
078
079    protected PluginManagerException( MojoDescriptor mojoDescriptor, MavenProject project, String message )
080    {
081        super( message );
082        this.project = project;
083        pluginGroupId = mojoDescriptor.getPluginDescriptor().getGroupId();
084        pluginArtifactId = mojoDescriptor.getPluginDescriptor().getArtifactId();
085        pluginVersion = mojoDescriptor.getPluginDescriptor().getVersion();
086        goal = mojoDescriptor.getGoal();
087    }
088
089    protected PluginManagerException( MojoDescriptor mojoDescriptor, MavenProject project, String message,
090                                      Throwable cause )
091    {
092        super( message, cause );
093        this.project = project;
094        pluginGroupId = mojoDescriptor.getPluginDescriptor().getGroupId();
095        pluginArtifactId = mojoDescriptor.getPluginDescriptor().getArtifactId();
096        pluginVersion = mojoDescriptor.getPluginDescriptor().getVersion();
097        goal = mojoDescriptor.getGoal();
098    }
099
100    public PluginManagerException( Plugin plugin, InvalidVersionSpecificationException cause )
101    {
102        super( cause );
103
104        pluginGroupId = plugin.getGroupId();
105        pluginArtifactId = plugin.getArtifactId();
106        pluginVersion = plugin.getVersion();
107    }
108
109    public PluginManagerException( Plugin plugin, String message, PlexusConfigurationException cause )
110    {
111        super( message, cause );
112
113        pluginGroupId = plugin.getGroupId();
114        pluginArtifactId = plugin.getArtifactId();
115        pluginVersion = plugin.getVersion();
116    }
117
118    public PluginManagerException( Plugin plugin, String message, ComponentRepositoryException cause )
119    {
120        super( message, cause );
121
122        pluginGroupId = plugin.getGroupId();
123        pluginArtifactId = plugin.getArtifactId();
124        pluginVersion = plugin.getVersion();
125    }
126
127    public PluginManagerException( MojoDescriptor mojoDescriptor, MavenProject project, String message,
128                                   NoSuchRealmException cause )
129    {
130        super( message, cause );
131
132        this.project = project;
133        pluginGroupId = mojoDescriptor.getPluginDescriptor().getGroupId();
134        pluginArtifactId = mojoDescriptor.getPluginDescriptor().getArtifactId();
135        pluginVersion = mojoDescriptor.getPluginDescriptor().getVersion();
136        goal = mojoDescriptor.getGoal();
137    }
138
139    public PluginManagerException( MojoDescriptor mojoDescriptor, String message, MavenProject project,
140                                   PlexusContainerException cause )
141    {
142        super( message, cause );
143
144        this.project = project;
145
146        PluginDescriptor pd = mojoDescriptor.getPluginDescriptor();
147        pluginGroupId = pd.getGroupId();
148        pluginArtifactId = pd.getArtifactId();
149        pluginVersion = pd.getVersion();
150
151        goal = mojoDescriptor.getGoal();
152    }
153
154    public PluginManagerException( Plugin plugin, String message, PlexusContainerException cause )
155    {
156        super( message, cause );
157
158        pluginGroupId = plugin.getGroupId();
159        pluginArtifactId = plugin.getArtifactId();
160        pluginVersion = plugin.getVersion();
161    }
162
163    public PluginManagerException( Plugin plugin, String message, MavenProject project )
164    {
165        super( message );
166
167        pluginGroupId = plugin.getGroupId();
168        pluginArtifactId = plugin.getArtifactId();
169        pluginVersion = plugin.getVersion();
170        this.project = project;
171    }
172
173    public String getPluginGroupId()
174    {
175        return pluginGroupId;
176    }
177
178    public String getPluginArtifactId()
179    {
180        return pluginArtifactId;
181    }
182
183    public String getPluginVersion()
184    {
185        return pluginVersion;
186    }
187
188    public String getGoal()
189    {
190        return goal;
191    }
192
193    public MavenProject getProject()
194    {
195        return project;
196    }
197}