package org.handwerkszeug.mvnhack.repository.impl;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;
import org.handwerkszeug.common.exception.IORuntimeException;
import org.handwerkszeug.common.util.UrlUtil;
import org.handwerkszeug.mvnhack.Constants;
import org.handwerkszeug.mvnhack.repository.Artifact;
import org.handwerkszeug.mvnhack.repository.ArtifactBuilder;
import org.handwerkszeug.mvnhack.repository.Context;
import org.handwerkszeug.mvnhack.repository.Repository;
public class RemoteRepository implements Repository {
protected String baseUrl;
protected ArtifactBuilder builder;
public RemoteRepository(String url, ArtifactBuilder builder) {
if (url.endsWith("/") == false) {
url += "/";
}
this.baseUrl = url;
this.builder = builder;
}
@Override
public Artifact load(Context context, String groupId, String artifactId,
String version) {
StringBuilder stb = new StringBuilder();
stb.append(baseUrl);
stb.append(ArtifactUtil.toPom(groupId, artifactId, version));
URL url = UrlUtil.toURL(stb.toString());
try {
return builder.build(context, context.open(
ArtifactUtil.create(groupId, artifactId, version), url));
} catch (IORuntimeException e) {
}
return null;
}
@Override
public Set<URL> getLocation(Artifact artifact) {
Set<URL> urls = new HashSet<URL>();
urls.add(toURL(ArtifactUtil.toPath(artifact)));
urls.add(toURL(ArtifactUtil.toPath(artifact, ".jar")));
urls.add(toURL(ArtifactUtil.toPath(artifact, Constants.POM)));
urls.add(toURL(ArtifactUtil.toPath(artifact,
"-sources." + artifact.getType())));
urls.add(toURL(ArtifactUtil.toPath(artifact, "-sources.jar")));
return urls;
}
protected URL toURL(String suffix) {
StringBuilder stb = new StringBuilder();
stb.append(this.baseUrl);
stb.append(suffix);
return UrlUtil.toURL(stb.toString());
}
}