View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.tools.plugin;
20  
21  import java.net.URI;
22  import java.util.HashSet;
23  import java.util.List;
24  import java.util.Set;
25  
26  import org.apache.maven.artifact.Artifact;
27  import org.apache.maven.plugin.descriptor.PluginDescriptor;
28  import org.apache.maven.project.MavenProject;
29  import org.apache.maven.settings.Settings;
30  import org.codehaus.plexus.util.ReaderFactory;
31  import org.codehaus.plexus.util.StringUtils;
32  import org.eclipse.aether.RepositorySystemSession;
33  
34  /**
35   * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
36   * {@link org.apache.maven.plugin.descriptor.MojoDescriptor MojoDescriptor} instances from different types of metadata
37   * for a given plugin.
38   *
39   * @author jdcasey
40   * @since 2.5
41   */
42  public class DefaultPluginToolsRequest implements PluginToolsRequest {
43  
44      private static final String DEFAULT_ENCODING = ReaderFactory.FILE_ENCODING;
45  
46      private PluginDescriptor pluginDescriptor;
47  
48      private MavenProject project;
49  
50      private String encoding = DEFAULT_ENCODING;
51  
52      private boolean skipErrorNoDescriptorsFound;
53  
54      private Set<Artifact> dependencies;
55  
56      private RepositorySystemSession repoSession;
57  
58      private URI internalJavadocBaseUrl;
59  
60      private String internalJavadocVersion;
61  
62      private List<URI> externalJavadocBaseUrls;
63  
64      private Settings settings;
65  
66      private String requiredJavaVersion;
67  
68      private String mavenApiVersion;
69  
70      public DefaultPluginToolsRequest(MavenProject project, PluginDescriptor pluginDescriptor) {
71          this.project = project;
72          this.pluginDescriptor = pluginDescriptor;
73      }
74  
75      /**
76       * {@inheritDoc}
77       */
78      @Override
79      public PluginDescriptor getPluginDescriptor() {
80          return pluginDescriptor;
81      }
82  
83      /**
84       * {@inheritDoc}
85       */
86      @Override
87      public PluginToolsRequest setPluginDescriptor(PluginDescriptor pluginDescriptor) {
88          this.pluginDescriptor = pluginDescriptor;
89          return this;
90      }
91  
92      /**
93       * {@inheritDoc}
94       */
95      @Override
96      public MavenProject getProject() {
97          return project;
98      }
99  
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 }