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.artifact.repository.ArtifactRepository; 028import org.apache.maven.plugin.descriptor.PluginDescriptor; 029import org.apache.maven.project.MavenProject; 030import org.apache.maven.settings.Settings; 031import org.codehaus.plexus.util.ReaderFactory; 032import org.codehaus.plexus.util.StringUtils; 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 List<ArtifactRepository> remoteRepos; 057 058 private ArtifactRepository local; 059 060 private URI internalJavadocBaseUrl; 061 062 private String internalJavadocVersion; 063 064 private List<URI> externalJavadocBaseUrls; 065 066 private Settings settings; 067 068 private String requiredJavaVersion; 069 070 private String mavenApiVersion; 071 072 public DefaultPluginToolsRequest(MavenProject project, PluginDescriptor pluginDescriptor) { 073 this.project = project; 074 this.pluginDescriptor = pluginDescriptor; 075 } 076 077 /** 078 * {@inheritDoc} 079 */ 080 @Override 081 public PluginDescriptor getPluginDescriptor() { 082 return pluginDescriptor; 083 } 084 085 /** 086 * {@inheritDoc} 087 */ 088 @Override 089 public PluginToolsRequest setPluginDescriptor(PluginDescriptor pluginDescriptor) { 090 this.pluginDescriptor = pluginDescriptor; 091 return this; 092 } 093 094 /** 095 * {@inheritDoc} 096 */ 097 @Override 098 public MavenProject getProject() { 099 return project; 100 } 101 102 /** 103 * {@inheritDoc} 104 */ 105 @Override 106 public PluginToolsRequest setProject(MavenProject project) { 107 this.project = project; 108 return this; 109 } 110 111 /** 112 * {@inheritDoc} 113 */ 114 @Override 115 public String getEncoding() { 116 return this.encoding; 117 } 118 119 /** 120 * {@inheritDoc} 121 */ 122 @Override 123 public PluginToolsRequest setEncoding(String encoding) { 124 if (StringUtils.isNotEmpty(encoding)) { 125 this.encoding = encoding; 126 } else { 127 this.encoding = DEFAULT_ENCODING; 128 } 129 130 return this; 131 } 132 133 /** 134 * {@inheritDoc} 135 */ 136 @Override 137 public boolean isSkipErrorNoDescriptorsFound() { 138 return skipErrorNoDescriptorsFound; 139 } 140 141 /** 142 * {@inheritDoc} 143 */ 144 @Override 145 public PluginToolsRequest setSkipErrorNoDescriptorsFound(boolean skipErrorNoDescriptorsFound) { 146 this.skipErrorNoDescriptorsFound = skipErrorNoDescriptorsFound; 147 return this; 148 } 149 150 @Override 151 public Set<Artifact> getDependencies() { 152 if (this.dependencies == null) { 153 this.dependencies = new HashSet<>(); 154 } 155 return dependencies; 156 } 157 158 @Override 159 public PluginToolsRequest setDependencies(Set<Artifact> dependencies) { 160 this.dependencies = dependencies; 161 return this; 162 } 163 164 @Override 165 public List<ArtifactRepository> getRemoteRepos() { 166 return remoteRepos; 167 } 168 169 @Override 170 public PluginToolsRequest setRemoteRepos(List<ArtifactRepository> remoteRepos) { 171 this.remoteRepos = remoteRepos; 172 return this; 173 } 174 175 @Override 176 public ArtifactRepository getLocal() { 177 return local; 178 } 179 180 @Override 181 public PluginToolsRequest setLocal(ArtifactRepository local) { 182 this.local = local; 183 return this; 184 } 185 186 @Override 187 public PluginToolsRequest setInternalJavadocBaseUrl(URI baseUrl) { 188 internalJavadocBaseUrl = baseUrl; 189 return this; 190 } 191 192 @Override 193 public URI getInternalJavadocBaseUrl() { 194 return internalJavadocBaseUrl; 195 } 196 197 @Override 198 public PluginToolsRequest setInternalJavadocVersion(String javadocVersion) { 199 this.internalJavadocVersion = javadocVersion; 200 return this; 201 } 202 203 @Override 204 public String getInternalJavadocVersion() { 205 return internalJavadocVersion; 206 } 207 208 @Override 209 public PluginToolsRequest setExternalJavadocBaseUrls(List<URI> javadocLinks) { 210 this.externalJavadocBaseUrls = javadocLinks; 211 return this; 212 } 213 214 @Override 215 public List<URI> getExternalJavadocBaseUrls() { 216 return externalJavadocBaseUrls; 217 } 218 219 @Override 220 public PluginToolsRequest setSettings(Settings settings) { 221 this.settings = settings; 222 return this; 223 } 224 225 @Override 226 public Settings getSettings() { 227 return settings; 228 } 229 230 @Override 231 public PluginToolsRequest setRequiredJavaVersion(String requiredJavaVersion) { 232 this.requiredJavaVersion = requiredJavaVersion; 233 return this; 234 } 235 236 @Override 237 public String getRequiredJavaVersion() { 238 return requiredJavaVersion; 239 } 240 241 @Override 242 public PluginToolsRequest setUsedMavenApiVersion(String mavenApiVersion) { 243 this.mavenApiVersion = mavenApiVersion; 244 return this; 245 } 246 247 @Override 248 public String getUsedMavenApiVersion() { 249 return mavenApiVersion; 250 } 251}