001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *   http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied.  See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019package org.apache.maven.tools.plugin;
020
021import java.net.URI;
022import java.util.HashSet;
023import java.util.List;
024import java.util.Set;
025
026import org.apache.maven.artifact.Artifact;
027import org.apache.maven.plugin.descriptor.PluginDescriptor;
028import org.apache.maven.project.MavenProject;
029import org.apache.maven.settings.Settings;
030import org.codehaus.plexus.util.ReaderFactory;
031import org.codehaus.plexus.util.StringUtils;
032import org.eclipse.aether.RepositorySystemSession;
033
034/**
035 * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
036 * {@link org.apache.maven.plugin.descriptor.MojoDescriptor MojoDescriptor} instances from different types of metadata
037 * for a given plugin.
038 *
039 * @author jdcasey
040 * @since 2.5
041 */
042public class DefaultPluginToolsRequest implements PluginToolsRequest {
043
044    private static final String DEFAULT_ENCODING = ReaderFactory.FILE_ENCODING;
045
046    private PluginDescriptor pluginDescriptor;
047
048    private MavenProject project;
049
050    private String encoding = DEFAULT_ENCODING;
051
052    private boolean skipErrorNoDescriptorsFound;
053
054    private Set<Artifact> dependencies;
055
056    private RepositorySystemSession repoSession;
057
058    private URI internalJavadocBaseUrl;
059
060    private String internalJavadocVersion;
061
062    private List<URI> externalJavadocBaseUrls;
063
064    private Settings settings;
065
066    private String requiredJavaVersion;
067
068    private String mavenApiVersion;
069
070    public DefaultPluginToolsRequest(MavenProject project, PluginDescriptor pluginDescriptor) {
071        this.project = project;
072        this.pluginDescriptor = pluginDescriptor;
073    }
074
075    /**
076     * {@inheritDoc}
077     */
078    @Override
079    public PluginDescriptor getPluginDescriptor() {
080        return pluginDescriptor;
081    }
082
083    /**
084     * {@inheritDoc}
085     */
086    @Override
087    public PluginToolsRequest setPluginDescriptor(PluginDescriptor pluginDescriptor) {
088        this.pluginDescriptor = pluginDescriptor;
089        return this;
090    }
091
092    /**
093     * {@inheritDoc}
094     */
095    @Override
096    public MavenProject getProject() {
097        return project;
098    }
099
100    /**
101     * {@inheritDoc}
102     */
103    @Override
104    public PluginToolsRequest setProject(MavenProject project) {
105        this.project = project;
106        return this;
107    }
108
109    /**
110     * {@inheritDoc}
111     */
112    @Override
113    public String getEncoding() {
114        return this.encoding;
115    }
116
117    /**
118     * {@inheritDoc}
119     */
120    @Override
121    public PluginToolsRequest setEncoding(String encoding) {
122        if (StringUtils.isNotEmpty(encoding)) {
123            this.encoding = encoding;
124        } else {
125            this.encoding = DEFAULT_ENCODING;
126        }
127
128        return this;
129    }
130
131    /**
132     * {@inheritDoc}
133     */
134    @Override
135    public boolean isSkipErrorNoDescriptorsFound() {
136        return skipErrorNoDescriptorsFound;
137    }
138
139    /**
140     * {@inheritDoc}
141     */
142    @Override
143    public PluginToolsRequest setSkipErrorNoDescriptorsFound(boolean skipErrorNoDescriptorsFound) {
144        this.skipErrorNoDescriptorsFound = skipErrorNoDescriptorsFound;
145        return this;
146    }
147
148    @Override
149    public Set<Artifact> getDependencies() {
150        if (this.dependencies == null) {
151            this.dependencies = new HashSet<>();
152        }
153        return dependencies;
154    }
155
156    @Override
157    public PluginToolsRequest setDependencies(Set<Artifact> dependencies) {
158        this.dependencies = dependencies;
159        return this;
160    }
161
162    @Override
163    public RepositorySystemSession getRepoSession() {
164        return repoSession;
165    }
166
167    public void setRepoSession(RepositorySystemSession repoSession) {
168        this.repoSession = repoSession;
169    }
170
171    @Override
172    public PluginToolsRequest setInternalJavadocBaseUrl(URI baseUrl) {
173        internalJavadocBaseUrl = baseUrl;
174        return this;
175    }
176
177    @Override
178    public URI getInternalJavadocBaseUrl() {
179        return internalJavadocBaseUrl;
180    }
181
182    @Override
183    public PluginToolsRequest setInternalJavadocVersion(String javadocVersion) {
184        this.internalJavadocVersion = javadocVersion;
185        return this;
186    }
187
188    @Override
189    public String getInternalJavadocVersion() {
190        return internalJavadocVersion;
191    }
192
193    @Override
194    public PluginToolsRequest setExternalJavadocBaseUrls(List<URI> javadocLinks) {
195        this.externalJavadocBaseUrls = javadocLinks;
196        return this;
197    }
198
199    @Override
200    public List<URI> getExternalJavadocBaseUrls() {
201        return externalJavadocBaseUrls;
202    }
203
204    @Override
205    public PluginToolsRequest setSettings(Settings settings) {
206        this.settings = settings;
207        return this;
208    }
209
210    @Override
211    public Settings getSettings() {
212        return settings;
213    }
214
215    @Override
216    public PluginToolsRequest setRequiredJavaVersion(String requiredJavaVersion) {
217        this.requiredJavaVersion = requiredJavaVersion;
218        return this;
219    }
220
221    @Override
222    public String getRequiredJavaVersion() {
223        return requiredJavaVersion;
224    }
225
226    @Override
227    public PluginToolsRequest setUsedMavenApiVersion(String mavenApiVersion) {
228        this.mavenApiVersion = mavenApiVersion;
229        return this;
230    }
231
232    @Override
233    public String getUsedMavenApiVersion() {
234        return mavenApiVersion;
235    }
236}