diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/Aether.java b/scm-webapp/src/main/java/sonia/scm/plugin/Aether.java index 4cbd33185f..0ad53e62c3 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/Aether.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/Aether.java @@ -48,8 +48,6 @@ import org.sonatype.aether.collection.DependencyGraphTransformer; import org.sonatype.aether.graph.Dependency; import org.sonatype.aether.graph.DependencyFilter; import org.sonatype.aether.graph.DependencyNode; -import org.sonatype.aether.repository.Authentication; -import org.sonatype.aether.repository.AuthenticationSelector; import org.sonatype.aether.repository.LocalRepository; import org.sonatype.aether.repository.LocalRepositoryManager; import org.sonatype.aether.repository.Proxy; @@ -81,10 +79,8 @@ public final class Aether /** Field description */ private static final DependencyFilter FILTER = - new AndDependencyFilter( - new CoreDependencyFilter(), - new BlacklistDependencyFilter() - ); + new AndDependencyFilter(new CoreDependencyFilter(), + new BlacklistDependencyFilter()); /** * the logger for Aether @@ -176,12 +172,14 @@ public final class Aether * @param system * @param localRepository * @param configuration + * @param advancedPluginConfiguration * * @return */ public static RepositorySystemSession createRepositorySystemSession( RepositorySystem system, LocalRepository localRepository, - ScmConfiguration configuration) + ScmConfiguration configuration, + AdvancedPluginConfiguration advancedPluginConfiguration) { MavenRepositorySystemSession session = new MavenRepositorySystemSession(); @@ -197,6 +195,9 @@ public final class Aether system.newLocalRepositoryManager(localRepository); session.setLocalRepositoryManager(localRepositoryManager); + session.setAuthenticationSelector( + new AetherAuthenticationSelector(advancedPluginConfiguration) + ); // create graph transformer to resolve dependency conflicts //J- diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/AetherDependencyResolver.java b/scm-webapp/src/main/java/sonia/scm/plugin/AetherDependencyResolver.java index 67bf4e8a40..6505a8f5f2 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/AetherDependencyResolver.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/AetherDependencyResolver.java @@ -77,15 +77,18 @@ public class AetherDependencyResolver * * * @param configuration + * @param advancedPluginConfiguration * @param system * @param localRepository * @param remoteRepositories */ public AetherDependencyResolver(ScmConfiguration configuration, + AdvancedPluginConfiguration advancedPluginConfiguration, RepositorySystem system, LocalRepository localRepository, List remoteRepositories) { this.configuration = configuration; + this.advancedPluginConfiguration = advancedPluginConfiguration; this.system = system; this.localRepository = localRepository; this.remoteRepositories = remoteRepositories; @@ -169,7 +172,7 @@ public class AetherDependencyResolver if (session == null) { session = Aether.createRepositorySystemSession(system, localRepository, - configuration); + configuration, advancedPluginConfiguration); } return session; @@ -177,6 +180,9 @@ public class AetherDependencyResolver //~--- fields --------------------------------------------------------------- + /** Field description */ + private final AdvancedPluginConfiguration advancedPluginConfiguration; + /** Field description */ private ScmConfiguration configuration; diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java b/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java index 37c4c6235e..b122463a24 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java @@ -82,8 +82,6 @@ public class AetherPluginHandler //~--- constructors --------------------------------------------------------- - private final AdvancedPluginConfiguration advancedPluginConfiguration; - /** * Constructs ... * @@ -92,9 +90,11 @@ public class AetherPluginHandler * @param pluginManager * @param context * @param configuration + * @param advancedPluginConfiguration */ public AetherPluginHandler(PluginManager pluginManager, - SCMContextProvider context, ScmConfiguration configuration, AdvancedPluginConfiguration advancedPluginConfiguration) + SCMContextProvider context, ScmConfiguration configuration, + AdvancedPluginConfiguration advancedPluginConfiguration) { this.pluginManager = pluginManager; this.configuration = configuration; @@ -127,7 +127,7 @@ public class AetherPluginHandler logger.error("could not read classpath file", ex); } } - + IOUtil.mkdirs(localRepositoryDirectory); repositorySystem = Aether.createRepositorySystem(); localRepository = new LocalRepository(localRepositoryDirectory); @@ -198,9 +198,12 @@ public class AetherPluginHandler { try { - AetherDependencyResolver resolver = - new AetherDependencyResolver(configuration, repositorySystem, - localRepository, remoteRepositories); + //J- + AetherDependencyResolver resolver = new AetherDependencyResolver( + configuration, advancedPluginConfiguration, repositorySystem, + localRepository, remoteRepositories + ); + //J+ resolver.resolveDependencies(dependency, localDependencies); @@ -340,6 +343,9 @@ public class AetherPluginHandler //~--- fields --------------------------------------------------------------- + /** Field description */ + private final AdvancedPluginConfiguration advancedPluginConfiguration; + /** Field description */ private Classpath classpath; diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index 85c7eeef4e..98479f77ec 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -98,6 +98,10 @@ public class DefaultPluginManager /** Field description */ public static final String ENCODING = "UTF-8"; + /** Field description */ + private static final String ADVANCED_CONFIGURATION = + "advanced-configuration.xml"; + /** the logger for DefaultPluginManager */ private static final Logger logger = LoggerFactory.getLogger(DefaultPluginManager.class); @@ -106,9 +110,6 @@ public class DefaultPluginManager public static final PluginFilter FILTER_UPDATES = new StatePluginFilter(PluginState.UPDATE_AVAILABLE); - - private static final String ADVANCED_CONFIGURATION = "advanced-configuration.xml"; - //~--- constructors --------------------------------------------------------- /** @@ -151,21 +152,23 @@ public class DefaultPluginManager { throw new ConfigurationException(ex); } - + File file = new File(context.getBaseDirectory(), ADVANCED_CONFIGURATION); + if (file.exists()) { - advancedPluginConfiguration = JAXB.unmarshal(file, AdvancedPluginConfiguration.class); - } else { + logger.info("load advanced plugin configuration from {}", file); + advancedPluginConfiguration = JAXB.unmarshal(file, + AdvancedPluginConfiguration.class); + } + else + { + logger.debug("no advanced plugin configuration found"); advancedPluginConfiguration = new AdvancedPluginConfiguration(); } this.configuration.addListener(this); } - - - private final AdvancedPluginConfiguration advancedPluginConfiguration; - //~--- methods -------------------------------------------------------------- @@ -650,10 +653,12 @@ public class DefaultPluginManager if (pluginHandler == null) { pluginHandler = new AetherPluginHandler(this, - SCMContext.getContext(), configuration, advancedPluginConfiguration); + SCMContext.getContext(), configuration, + advancedPluginConfiguration); } - + Builder builder = ImmutableSet.builder(); + builder.addAll(advancedPluginConfiguration.getRepositories()); builder.addAll(center.getRepositories()); @@ -760,6 +765,9 @@ public class DefaultPluginManager //~--- fields --------------------------------------------------------------- + /** Field description */ + private final AdvancedPluginConfiguration advancedPluginConfiguration; + /** Field description */ private Cache cache;