001    package 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    
022    import org.apache.maven.artifact.Artifact;
023    import org.apache.maven.artifact.repository.ArtifactRepository;
024    import org.apache.maven.plugin.descriptor.MojoDescriptor;
025    import org.apache.maven.plugin.descriptor.PluginDescriptor;
026    import org.apache.maven.project.MavenProject;
027    import org.codehaus.plexus.util.ReaderFactory;
028    import org.codehaus.plexus.util.StringUtils;
029    
030    import java.util.HashSet;
031    import java.util.List;
032    import java.util.Set;
033    
034    /**
035     * Default implementation of {@link PluginToolsRequest}, which is used to pass parameters to components used to extract
036     * {@link MojoDescriptor} instances from different types of metadata for a given plugin.
037     *
038     * @author jdcasey
039     * @since 2.5
040     */
041    public 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        public PluginDescriptor getPluginDescriptor()
071        {
072            return pluginDescriptor;
073        }
074    
075        /**
076         * {@inheritDoc}
077         */
078        public PluginToolsRequest setPluginDescriptor( PluginDescriptor pluginDescriptor )
079        {
080            this.pluginDescriptor = pluginDescriptor;
081            return this;
082        }
083    
084        /**
085         * {@inheritDoc}
086         */
087        public MavenProject getProject()
088        {
089            return project;
090        }
091    
092        /**
093         * {@inheritDoc}
094         */
095        public PluginToolsRequest setProject( MavenProject project )
096        {
097            this.project = project;
098            return this;
099        }
100    
101        /**
102         * {@inheritDoc}
103         */
104        public String getEncoding()
105        {
106            return this.encoding;
107        }
108    
109        /**
110         * {@inheritDoc}
111         */
112        public PluginToolsRequest setEncoding( String encoding )
113        {
114            if ( StringUtils.isNotEmpty( encoding ) )
115            {
116                this.encoding = encoding;
117            }
118            else
119            {
120                this.encoding = DEFAULT_ENCODING;
121            }
122    
123            return this;
124        }
125    
126        /**
127         * {@inheritDoc}
128         */
129        public boolean isSkipErrorNoDescriptorsFound()
130        {
131            return skipErrorNoDescriptorsFound;
132        }
133    
134        /**
135         * {@inheritDoc}
136         */
137        public PluginToolsRequest setSkipErrorNoDescriptorsFound( boolean skipErrorNoDescriptorsFound )
138        {
139            this.skipErrorNoDescriptorsFound = skipErrorNoDescriptorsFound;
140            return this;
141        }
142    
143        public Set<Artifact> getDependencies()
144        {
145            if ( this.dependencies == null )
146            {
147                this.dependencies = new HashSet<Artifact>();
148            }
149            return dependencies;
150        }
151    
152        public PluginToolsRequest setDependencies( Set<Artifact> dependencies )
153        {
154            this.dependencies = dependencies;
155            return this;
156        }
157    
158        public List<ArtifactRepository> getRemoteRepos()
159        {
160            return remoteRepos;
161        }
162    
163        public PluginToolsRequest setRemoteRepos( List<ArtifactRepository> remoteRepos )
164        {
165            this.remoteRepos = remoteRepos;
166            return this;
167        }
168    
169        public ArtifactRepository getLocal()
170        {
171            return local;
172        }
173    
174        public PluginToolsRequest setLocal( ArtifactRepository local )
175        {
176            this.local = local;
177            return this;
178        }
179    }