From 9e566d09c26abb49b2bc445c677bb368b1b0fdbd Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 9 May 2011 15:14:20 +0200 Subject: [PATCH] use HttpClient instead java.net.URL for package download --- .../scm/api/rest/resources/HgConfigResource.java | 11 +++++++++-- .../sonia/scm/installer/AbstractHgInstaller.java | 8 ++++++-- .../java/sonia/scm/installer/HgInstaller.java | 11 ++++++++--- .../sonia/scm/installer/HgPackageInstaller.java | 16 +++++++++++----- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java index 9db723df65..2f43505f7e 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/api/rest/resources/HgConfigResource.java @@ -44,6 +44,7 @@ import sonia.scm.installer.HgInstallerFactory; import sonia.scm.installer.HgPackage; import sonia.scm.installer.HgPackageReader; import sonia.scm.installer.HgPackages; +import sonia.scm.net.HttpClient; import sonia.scm.repository.HgConfig; import sonia.scm.repository.HgRepositoryHandler; import sonia.scm.web.HgWebConfigWriter; @@ -84,13 +85,16 @@ public class HgConfigResource * * * + * + * @param client * @param handler * @param cacheManager */ @Inject - public HgConfigResource(HgRepositoryHandler handler, + public HgConfigResource(HttpClient client, HgRepositoryHandler handler, CacheManager cacheManager) { + this.client = client; this.handler = handler; this.pkgReader = new HgPackageReader(cacheManager); } @@ -155,7 +159,7 @@ public class HgConfigResource if (pkg != null) { - if (HgInstallerFactory.createInstaller().installPackage(handler, + if (HgInstallerFactory.createInstaller().installPackage(client, handler, SCMContext.getContext().getBaseDirectory(), pkg)) { response = Response.noContent().build(); @@ -336,6 +340,9 @@ public class HgConfigResource //~--- fields --------------------------------------------------------------- + /** Field description */ + private HttpClient client; + /** Field description */ private HgRepositoryHandler handler; diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/AbstractHgInstaller.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/AbstractHgInstaller.java index 3cf83bbc62..637825a407 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/AbstractHgInstaller.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/AbstractHgInstaller.java @@ -35,6 +35,7 @@ package sonia.scm.installer; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.net.HttpClient; import sonia.scm.repository.HgConfig; import sonia.scm.repository.HgRepositoryHandler; import sonia.scm.util.IOUtil; @@ -83,6 +84,8 @@ public abstract class AbstractHgInstaller implements HgInstaller * * * + * + * @param client * @param handler * @param baseDirectory * @param pkg @@ -90,9 +93,10 @@ public abstract class AbstractHgInstaller implements HgInstaller * @return */ @Override - public boolean installPackage(HgRepositoryHandler handler, + public boolean installPackage(HttpClient client, HgRepositoryHandler handler, File baseDirectory, HgPackage pkg) { - return new HgPackageInstaller(handler, baseDirectory, pkg).install(); + return new HgPackageInstaller(client, handler, baseDirectory, + pkg).install(); } } diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgInstaller.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgInstaller.java index db14b82f9a..219ce5204e 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgInstaller.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgInstaller.java @@ -35,7 +35,9 @@ package sonia.scm.installer; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.net.HttpClient; import sonia.scm.repository.HgConfig; +import sonia.scm.repository.HgRepositoryHandler; //~--- JDK imports ------------------------------------------------------------ @@ -43,7 +45,6 @@ import java.io.File; import java.io.IOException; import java.util.List; -import sonia.scm.repository.HgRepositoryHandler; /** * @@ -69,12 +70,16 @@ public interface HgInstaller * * * + * + * @param client * @param handler * @param baseDirectory * @param pkg + * + * @return */ - public boolean installPackage(HgRepositoryHandler handler, File baseDirectory, - HgPackage pkg); + public boolean installPackage(HttpClient client, HgRepositoryHandler handler, + File baseDirectory, HgPackage pkg); /** * Method description diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgPackageInstaller.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgPackageInstaller.java index ea83bcad2c..558970b67c 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgPackageInstaller.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/HgPackageInstaller.java @@ -39,6 +39,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.io.ZipUnArchiver; +import sonia.scm.net.HttpClient; import sonia.scm.repository.HgConfig; import sonia.scm.repository.HgRepositoryHandler; import sonia.scm.util.IOUtil; @@ -51,8 +52,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.net.URL; - import java.text.MessageFormat; /** @@ -73,13 +72,16 @@ public class HgPackageInstaller implements Runnable * * * + * + * @param client * @param handler * @param baseDirectory * @param pkg */ - public HgPackageInstaller(HgRepositoryHandler handler, File baseDirectory, - HgPackage pkg) + public HgPackageInstaller(HttpClient client, HgRepositoryHandler handler, + File baseDirectory, HgPackage pkg) { + this.client = client; this.handler = handler; this.baseDirectory = baseDirectory; this.pkg = pkg; @@ -150,7 +152,8 @@ public class HgPackageInstaller implements Runnable logger.debug("download package to {}", file.getAbsolutePath()); } - input = new URL(pkg.getUrl()).openStream(); + // TODO error handling + input = client.get(pkg.getUrl()).getContent(); output = new FileOutputStream(file); IOUtil.copy(input, output); } @@ -255,6 +258,9 @@ public class HgPackageInstaller implements Runnable /** Field description */ private File baseDirectory; + /** Field description */ + private HttpClient client; + /** Field description */ private HgRepositoryHandler handler;