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.codehaus.plexus.util.ReaderFactory;
027import org.codehaus.plexus.util.StringUtils;
028
029import java.util.HashSet;
030import java.util.List;
031import java.util.Set;
032
033/**
034 * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
035 * {@link org.apache.maven.plugin.descriptor.MojoDescriptor MojoDescriptor} instances from different types of metadata
036 * for a given plugin.
037 *
038 * @author jdcasey
039 * @since 2.5
040 */
041public class DefaultPluginToolsRequest
042    implements PluginToolsRequest
043{
044
045    private static final String DEFAULT_ENCODING = ReaderFactory.FILE_ENCODING;
046
047    private PluginDescriptor pluginDescriptor;
048
049    private MavenProject project;
050
051    private String encoding = DEFAULT_ENCODING;
052
053    private boolean skipErrorNoDescriptorsFound;
054
055    private Set<Artifact> dependencies;
056
057    private List<ArtifactRepository> remoteRepos;
058
059    private ArtifactRepository local;
060
061    public DefaultPluginToolsRequest( MavenProject project, PluginDescriptor pluginDescriptor )
062    {
063        this.project = project;
064        this.pluginDescriptor = pluginDescriptor;
065    }
066
067    /**
068     * {@inheritDoc}
069     */
070    @Override
071    public PluginDescriptor getPluginDescriptor()
072    {
073        return pluginDescriptor;
074    }
075
076    /**
077     * {@inheritDoc}
078     */
079    @Override
080    public PluginToolsRequest setPluginDescriptor( PluginDescriptor pluginDescriptor )
081    {
082        this.pluginDescriptor = pluginDescriptor;
083        return this;
084    }
085
086    /**
087     * {@inheritDoc}
088     */
089    @Override
090    public MavenProject getProject()
091    {
092        return project;
093    }
094
095    /**
096     * {@inheritDoc}
097     */
098    @Override
099    public PluginToolsRequest setProject( MavenProject project )
100    {
101        this.project = project;
102        return this;
103    }
104
105    /**
106     * {@inheritDoc}
107     */
108    @Override
109    public String getEncoding()
110    {
111        return this.encoding;
112    }
113
114    /**
115     * {@inheritDoc}
116     */
117    @Override
118    public PluginToolsRequest setEncoding( String encoding )
119    {
120        if ( StringUtils.isNotEmpty( encoding ) )
121        {
122            this.encoding = encoding;
123        }
124        else
125        {
126            this.encoding = DEFAULT_ENCODING;
127        }
128
129        return this;
130    }
131
132    /**
133     * {@inheritDoc}
134     */
135    @Override
136    public boolean isSkipErrorNoDescriptorsFound()
137    {
138        return skipErrorNoDescriptorsFound;
139    }
140
141    /**
142     * {@inheritDoc}
143     */
144    @Override
145    public PluginToolsRequest setSkipErrorNoDescriptorsFound( boolean skipErrorNoDescriptorsFound )
146    {
147        this.skipErrorNoDescriptorsFound = skipErrorNoDescriptorsFound;
148        return this;
149    }
150
151    @Override
152    public Set<Artifact> getDependencies()
153    {
154        if ( this.dependencies == null )
155        {
156            this.dependencies = new HashSet<>();
157        }
158        return dependencies;
159    }
160
161    @Override
162    public PluginToolsRequest setDependencies( Set<Artifact> dependencies )
163    {
164        this.dependencies = dependencies;
165        return this;
166    }
167
168    @Override
169    public List<ArtifactRepository> getRemoteRepos()
170    {
171        return remoteRepos;
172    }
173
174    @Override
175    public PluginToolsRequest setRemoteRepos( List<ArtifactRepository> remoteRepos )
176    {
177        this.remoteRepos = remoteRepos;
178        return this;
179    }
180
181    @Override
182    public ArtifactRepository getLocal()
183    {
184        return local;
185    }
186
187    @Override
188    public PluginToolsRequest setLocal( ArtifactRepository local )
189    {
190        this.local = local;
191        return this;
192    }
193}