View Javadoc

1   /*
2    * Copyright 2013 smartics, Kronseder & Reiner GmbH
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package de.smartics.maven.plugin.jboss.modules.aether;
17  
18  import java.util.List;
19  
20  import org.sonatype.aether.RepositorySystem;
21  import org.sonatype.aether.RepositorySystemSession;
22  import org.sonatype.aether.graph.Dependency;
23  import org.sonatype.aether.graph.DependencyFilter;
24  import org.sonatype.aether.repository.RemoteRepository;
25  
26  /**
27   * A repository builder to be used in the context of a Maven Mojo. Mojos get the
28   * resources for this builder injected and only pass them on.
29   */
30  public final class MojoRepositoryBuilder implements RepositoryBuilder
31  {
32    // ********************************* Fields *********************************
33  
34    // --- constants ------------------------------------------------------------
35  
36    // --- members --------------------------------------------------------------
37  
38    /**
39     * The remote repositories of artifacts.
40     */
41    private List<RemoteRepository> remoteRepositories;
42  
43    /**
44     * The session to launch requests.
45     */
46    private RepositorySystemSession session;
47  
48    /**
49     * The system to run requests against.
50     */
51    private RepositorySystem repositorySystem;
52  
53    /**
54     * The filters for dependencies.
55     */
56    private List<DependencyFilter> dependencyFilters;
57  
58    /**
59     * The list of managed dependencies to allow to resolve the appropriate
60     * versions of artifacts.
61     */
62    private List<Dependency> managedDependencies;
63  
64    /**
65     * The flag to set the system offline.
66     */
67    private boolean offline;
68  
69    /**
70     * The generator of traversers used to prune dependency branches.
71     */
72    private DependencyTraverserGenerator traverserGenerator;
73  
74    // ****************************** Initializer *******************************
75  
76    // ****************************** Constructors ******************************
77  
78    /**
79     * Default constructor.
80     */
81    public MojoRepositoryBuilder()
82    {
83    }
84  
85    // ****************************** Inner Classes *****************************
86  
87    // ********************************* Methods ********************************
88  
89    // --- init -----------------------------------------------------------------
90  
91    // --- get&set --------------------------------------------------------------
92  
93    @Override
94    public List<RemoteRepository> getRemoteRepositories()
95    {
96      return remoteRepositories;
97    }
98  
99    /**
100    * Sets the remote repositories of artifacts.
101    *
102    * @param remoteRepositories the remote repositories of artifacts.
103    * @return a reference to this builder.
104    */
105   public MojoRepositoryBuilder with(
106       final List<RemoteRepository> remoteRepositories)
107   {
108     this.remoteRepositories = remoteRepositories;
109     return this;
110   }
111 
112   @Override
113   public RepositorySystem getRepositorySystem()
114   {
115     return repositorySystem;
116   }
117 
118   /**
119    * Sets the system to run requests against.
120    *
121    * @param repositorySystem the system to run requests against.
122    * @return a reference to this builder.
123    */
124   public MojoRepositoryBuilder with(final RepositorySystem repositorySystem)
125   {
126     this.repositorySystem = repositorySystem;
127     return this;
128   }
129 
130   @Override
131   public RepositorySystemSession getSession()
132   {
133     return session;
134   }
135 
136   /**
137    * Sets the session to launch requests.
138    *
139    * @param session the session to launch requests.
140    * @return a reference to this builder.
141    */
142   public MojoRepositoryBuilder with(final RepositorySystemSession session)
143   {
144     this.session = session;
145     return this;
146   }
147 
148   @Override
149   public List<DependencyFilter> getDependencyFilters()
150   {
151     return dependencyFilters;
152   }
153 
154   /**
155    * Sets the filters for dependencies.
156    *
157    * @param dependencyFilters the filters for dependencies.
158    * @return a reference to this builder.
159    */
160   public MojoRepositoryBuilder withDependencyFilters(
161       final List<DependencyFilter> dependencyFilters)
162   {
163     this.dependencyFilters = dependencyFilters;
164     return this;
165   }
166 
167   @Override
168   public List<Dependency> getManagedDependencies()
169   {
170     return managedDependencies;
171   }
172 
173   /**
174    * Sets the list of managed dependencies to allow to resolve the appropriate
175    * versions of artifacts.
176    *
177    * @param managedDependencies the list of managed dependencies to allow to
178    *          resolve the appropriate versions of artifacts.
179    * @return a reference to this builder.
180    */
181   public MojoRepositoryBuilder withManagedDependencies(
182       final List<Dependency> managedDependencies)
183   {
184     this.managedDependencies = managedDependencies;
185     return this;
186   }
187 
188   @Override
189   public boolean isOffline()
190   {
191     return offline;
192   }
193 
194   /**
195    * Sets the flag to set the system offline.
196    *
197    * @param offline the flag to set the system offline.
198    * @return a reference to this builder.
199    */
200   public MojoRepositoryBuilder withOffline(final boolean offline)
201   {
202     this.offline = offline;
203     return this;
204   }
205 
206   @Override
207   public DependencyTraverserGenerator getTraverserGenerator()
208   {
209     return traverserGenerator;
210   }
211 
212   /**
213    * Sets the generator of traversers used to prune dependency branches.
214    *
215    * @param traverserGenerator the generator of traversers used to prune
216    *          dependency branches.
217    * @return a reference to this builder.
218    */
219   public MojoRepositoryBuilder withTraverserGenerator(
220       final DependencyTraverserGenerator traverserGenerator)
221   {
222     this.traverserGenerator = traverserGenerator;
223     return this;
224   }
225 
226   // --- business -------------------------------------------------------------
227 
228   /**
229    * Builds the instance.
230    *
231    * @return the created instance.
232    */
233   public MavenRepository build()
234   {
235     return new MavenRepository(this);
236   }
237 
238   // --- object basics --------------------------------------------------------
239 }