001package org.apache.maven.tools.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.Artifact;
023import org.apache.maven.artifact.repository.ArtifactRepository;
024import org.apache.maven.plugin.descriptor.PluginDescriptor;
025import org.apache.maven.project.MavenProject;
026import org.apache.maven.settings.Settings;
027import org.codehaus.plexus.util.ReaderFactory;
028import org.codehaus.plexus.util.StringUtils;
029
030import java.net.URI;
031import java.util.HashSet;
032import java.util.List;
033import java.util.Set;
034
035/**
036 * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
037 * {@link org.apache.maven.plugin.descriptor.MojoDescriptor MojoDescriptor} instances from different types of metadata
038 * for a given plugin.
039 *
040 * @author jdcasey
041 * @since 2.5
042 */
043public class DefaultPluginToolsRequest
044    implements PluginToolsRequest
045{
046
047    private static final String DEFAULT_ENCODING = ReaderFactory.FILE_ENCODING;
048
049    private PluginDescriptor pluginDescriptor;
050
051    private MavenProject project;
052
053    private String encoding = DEFAULT_ENCODING;
054
055    private boolean skipErrorNoDescriptorsFound;
056
057    private Set<Artifact> dependencies;
058
059    private List<ArtifactRepository> remoteRepos;
060
061    private ArtifactRepository local;
062
063    private URI internalJavadocBaseUrl;
064    
065    private String internalJavadocVersion;
066    
067    private List<URI> externalJavadocBaseUrls;
068
069    private Settings settings;
070
071    public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor )
072    {
073        this.project = project;
074        this.pluginDescriptor = pluginDescriptor;
075    }
076
077    /**
078     * {@inheritDoc}
079     */
080    @Override
081    public PluginDescriptor getPluginDescriptor()
082    {
083        return pluginDescriptor;
084    }
085
086    /**
087     * {@inheritDoc}
088     */
089    @Override
090    public PluginToolsRequest setPluginDescriptor( PluginDescriptor pluginDescriptor )
091    {
092        this.pluginDescriptor = pluginDescriptor;
093        return this;
094    }
095
096    /**
097     * {@inheritDoc}
098     */
099    @Override
100    public MavenProject getProject()
101    {
102        return project;
103    }
104
105    /**
106     * {@inheritDoc}
107     */
108    @Override
109    public PluginToolsRequest setProject( MavenProject project )
110    {
111        this.project = project;
112        return this;
113    }
114
115    /**
116     * {@inheritDoc}
117     */
118    @Override
119    public String getEncoding()
120    {
121        return this.encoding;
122    }
123
124    /**
125     * {@inheritDoc}
126     */
127    @Override
128    public PluginToolsRequest setEncoding( String encoding )
129    {
130        if ( StringUtils.isNotEmpty( encoding ) )
131        {
132            this.encoding = encoding;
133        }
134        else
135        {
136            this.encoding = DEFAULT_ENCODING;
137        }
138
139        return this;
140    }
141
142    /**
143     * {@inheritDoc}
144     */
145    @Override
146    public boolean isSkipErrorNoDescriptorsFound()
147    {
148        return skipErrorNoDescriptorsFound;
149    }
150
151    /**
152     * {@inheritDoc}
153     */
154    @Override
155    public PluginToolsRequest setSkipErrorNoDescriptorsFound( boolean skipErrorNoDescriptorsFound )
156    {
157        this.skipErrorNoDescriptorsFound = skipErrorNoDescriptorsFound;
158        return this;
159    }
160
161    @Override
162    public Set<Artifact> getDependencies()
163    {
164        if ( this.dependencies == null )
165        {
166            this.dependencies = new HashSet<>();
167        }
168        return dependencies;
169    }
170
171    @Override
172    public PluginToolsRequest setDependencies( Set<Artifact> dependencies )
173    {
174        this.dependencies = dependencies;
175        return this;
176    }
177
178    @Override
179    public List<ArtifactRepository> getRemoteRepos()
180    {
181        return remoteRepos;
182    }
183
184    @Override
185    public PluginToolsRequest setRemoteRepos( List<ArtifactRepository> remoteRepos )
186    {
187        this.remoteRepos = remoteRepos;
188        return this;
189    }
190
191    @Override
192    public ArtifactRepository getLocal()
193    {
194        return local;
195    }
196
197    @Override
198    public PluginToolsRequest setLocal( ArtifactRepository local )
199    {
200        this.local = local;
201        return this;
202    }
203
204    @Override
205    public PluginToolsRequest setInternalJavadocBaseUrl( URI baseUrl )
206    {
207        internalJavadocBaseUrl = baseUrl;
208        return this;
209    }
210
211    @Override
212    public URI getInternalJavadocBaseUrl()
213    {
214        return internalJavadocBaseUrl;
215    }
216
217    @Override
218    public PluginToolsRequest setInternalJavadocVersion( String javadocVersion )
219    {
220        this.internalJavadocVersion = javadocVersion;
221        return this;
222    }
223
224    @Override
225    public String getInternalJavadocVersion()
226    {
227        return internalJavadocVersion;
228    }
229
230    @Override
231    public PluginToolsRequest setExternalJavadocBaseUrls( List<URI> javadocLinks )
232    {
233        this.externalJavadocBaseUrls = javadocLinks;
234        return this;
235    }
236
237    @Override
238    public List<URI> getExternalJavadocBaseUrls()
239    {
240        return externalJavadocBaseUrls;
241    }
242
243    @Override
244    public PluginToolsRequest setSettings( Settings settings )
245    {
246        this.settings = settings;
247        return this;
248    }
249
250    @Override
251    public Settings getSettings()
252    {
253        return settings;
254    }
255}