From d04c898fb869adeec3dcf9a56716dcd75bb525f4 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 9 May 2011 15:08:42 +0200 Subject: [PATCH] use proxy settings for maven aether, see #14 --- .../sonia/scm/plugin/AetherPluginHandler.java | 46 +++++++++++++++++-- .../scm/plugin/DefaultPluginManager.java | 4 +- 2 files changed, 43 insertions(+), 7 deletions(-) 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 a30e5f64ec..0cebfb87ec 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/AetherPluginHandler.java @@ -57,7 +57,10 @@ import org.sonatype.aether.impl.VersionRangeResolver; import org.sonatype.aether.impl.VersionResolver; import org.sonatype.aether.impl.internal.DefaultServiceLocator; import org.sonatype.aether.repository.LocalRepository; +import org.sonatype.aether.repository.Proxy; +import org.sonatype.aether.repository.ProxySelector; import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.resolution.DependencyRequest; import org.sonatype.aether.spi.connector.RepositoryConnectorFactory; import org.sonatype.aether.util.artifact.DefaultArtifact; import org.sonatype.aether.util.graph.PreorderNodeListGenerator; @@ -66,6 +69,7 @@ import sonia.scm.ConfigurationException; import sonia.scm.SCMContextProvider; import sonia.scm.boot.BootstrapListener; import sonia.scm.boot.Classpath; +import sonia.scm.config.ScmConfiguration; import sonia.scm.util.IOUtil; import sonia.scm.util.Util; @@ -109,11 +113,14 @@ public class AetherPluginHandler * * @param pluginManager * @param context + * @param configuration */ public AetherPluginHandler(PluginManager pluginManager, - SCMContextProvider context) + SCMContextProvider context, + ScmConfiguration configuration) { this.pluginManager = pluginManager; + this.configuration = configuration; localRepositoryDirectory = new File(context.getBaseDirectory(), BootstrapListener.PLUGIN_DIRECTORY); @@ -208,8 +215,23 @@ public class AetherPluginHandler for (PluginRepository repository : repositories) { - remoteRepositories.add(new RemoteRepository(repository.getId(), - "default", repository.getUrl())); + RemoteRepository rr = new RemoteRepository(repository.getId(), "default", + repository.getUrl()); + + if (configuration.isEnableProxy()) + { + Proxy proxy = createProxy(); + + if (logger.isDebugEnabled()) + { + logger.debug("enable proxy {} for {}", repository.getUrl(), + proxy.getHost()); + } + + rr.setProxy(proxy); + } + + remoteRepositories.add(rr); } } @@ -236,8 +258,9 @@ public class AetherPluginHandler { DependencyNode node = repositorySystem.collectDependencies(session, request).getRoot(); + DependencyRequest dr = new DependencyRequest(node, FILTER); - repositorySystem.resolveDependencies(session, node, FILTER); + repositorySystem.resolveDependencies(session, dr); synchronized (Classpath.class) { @@ -295,6 +318,18 @@ public class AetherPluginHandler return classpathSet; } + /** + * Method description + * + * + * @return + */ + private Proxy createProxy() + { + return new Proxy(Proxy.TYPE_HTTP, configuration.getProxyServer(), + configuration.getProxyPort(), null); + } + /** * Method description * @@ -381,6 +416,9 @@ public class AetherPluginHandler /** Field description */ private File classpathFile; + /** Field description */ + private ScmConfiguration configuration; + /** Field description */ private JAXBContext jaxbContext; 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 803c879a3e..06fa3f19c5 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -61,8 +61,6 @@ import sonia.scm.util.Util; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import java.net.URL; -import java.net.URLConnection; import java.net.URLEncoder; import java.util.Collection; @@ -553,7 +551,7 @@ public class DefaultPluginManager implements PluginManager if (pluginHandler == null) { pluginHandler = new AetherPluginHandler(this, - SCMContext.getContext()); + SCMContext.getContext(), configuration); } pluginHandler.setPluginRepositories(center.getRepositories());