use HttpClient instead java.net.URL for package download

This commit is contained in:
Sebastian Sdorra
2011-05-09 15:14:20 +02:00
parent d04c898fb8
commit 9e566d09c2
4 changed files with 34 additions and 12 deletions

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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;