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 }