![JAR search and dependency download from the Maven repository](/logo.png)
com.jfrog.bintray.client.impl.handle.RepositoryHandleImpl Maven / Gradle / Ivy
package com.jfrog.bintray.client.impl.handle;
import com.jfrog.bintray.client.api.BintrayCallException;
import com.jfrog.bintray.client.api.ObjectMapperHelper;
import com.jfrog.bintray.client.api.details.PackageDetails;
import com.jfrog.bintray.client.api.details.RepositoryDetails;
import com.jfrog.bintray.client.api.handle.AttributesSearchQuery;
import com.jfrog.bintray.client.api.handle.PackageHandle;
import com.jfrog.bintray.client.api.handle.RepositoryHandle;
import com.jfrog.bintray.client.api.handle.SubjectHandle;
import com.jfrog.bintray.client.api.model.Pkg;
import com.jfrog.bintray.client.api.model.Repository;
import com.jfrog.bintray.client.impl.model.PackageImpl;
import com.jfrog.bintray.client.impl.model.RepositoryImpl;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.entity.ContentType;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.jfrog.bintray.client.api.BintrayClientConstatnts.API_PKGS;
import static com.jfrog.bintray.client.api.BintrayClientConstatnts.API_REPOS;
/**
* @author Dan Feldman
*/
class RepositoryHandleImpl implements RepositoryHandle {
private static final Logger log = LoggerFactory.getLogger(RepositoryHandleImpl.class);
private BintrayImpl bintrayHandle;
private SubjectHandleImpl owner;
private String name;
private AttributesSearchQueryImpl searchQuery = null;
public RepositoryHandleImpl(BintrayImpl bintrayHandle, SubjectHandleImpl owner, String repoName) {
this.bintrayHandle = bintrayHandle;
this.owner = owner;
this.name = repoName;
}
@Override
public SubjectHandle owner() {
return owner;
}
@Override
public Repository get() throws IOException, BintrayCallException {
HttpResponse response = bintrayHandle.get(getRepositoryUri(), null);
RepositoryDetails repoDetails;
InputStream jsonContentStream = response.getEntity().getContent();
ObjectMapper mapper = ObjectMapperHelper.get();
try {
repoDetails = mapper.readValue(jsonContentStream, RepositoryDetails.class);
} catch (IOException e) {
log.error("Can't parse the json file: " + e.getMessage());
throw e;
}
return new RepositoryImpl(repoDetails);
}
@Override
public RepositoryHandle update(RepositoryDetails repositoryDetails) throws IOException, BintrayCallException {
Map headers = new HashMap<>();
String jsonContent = RepositoryImpl.getUpdateJson(repositoryDetails);
BintrayImpl.addContentTypeJsonHeader(headers);
bintrayHandle.patch(getRepositoryUri(), headers, IOUtils.toInputStream(jsonContent));
return this;
}
@Override
public PackageHandle pkg(String packageName) {
return new PackageHandleImpl(bintrayHandle, this, packageName);
}
@Override
public PackageHandle createPkg(PackageDetails packageDetails) throws IOException, BintrayCallException {
String jsonContent = PackageImpl.getCreateUpdateJson(packageDetails);
bintrayHandle.post(String.format(API_PKGS + "%s/%s", owner.name(), name), null, IOUtils.toInputStream(jsonContent));
return new PackageHandleImpl(bintrayHandle, this, packageDetails.getName()).setAttributes(packageDetails);
}
@Override
public AttributesSearchQuery searchForPackage() {
return new AttributesSearchQueryImpl(this);
}
@Override
public RepositoryHandle delete() throws BintrayCallException {
bintrayHandle.delete(getRepositoryUri(), null);
return this;
}
@Override
public String name() {
return name;
}
@Override
public boolean exists() throws BintrayCallException {
try {
bintrayHandle.head(getRepositoryUri(), null);
} catch (BintrayCallException e) {
if (e.getStatusCode() == 404) {
return false;
}
throw e;
}
return true;
}
@Override
public String getRepositoryUri() {
return String.format(API_REPOS + "%s/%s", owner.name(), name);
}
public void addQuery(AttributesSearchQueryImpl query) {
searchQuery = query;
}
/**
* Searches for packages according to the attribute search query supplied to addQuery
*
* @return a list of packages that were returned by Bintray's search
* @throws IOException
* @throws BintrayCallException
*/
public List attributeSearch() throws IOException, BintrayCallException {
ObjectMapper mapper = ObjectMapperHelper.get();
StringWriter writer = new StringWriter();
try {
mapper.writeValue(writer, searchQuery);
} catch (IOException e) {
log.error("Error writing search query to json: ", e);
throw e;
}
Map headers = new HashMap<>();
headers.put(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType());
HttpResponse response = bintrayHandle.post("/search/attributes/" + owner.name() + "/" + name, headers,
IOUtils.toInputStream(writer.toString()));
List answer;
answer = mapper.readValue(response.getEntity().getContent(), new TypeReference>() {
});
List packages = new ArrayList<>();
for (PackageDetails pkgDetails : answer) {
packages.add(new PackageImpl(pkgDetails));
}
searchQuery = null;
return packages;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy