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}