use of org.commonjava.maven.galley.model.Transfer in project indy by Commonjava.
the class PackageMetadataMerger method merge.
public byte[] merge(final Collection<Transfer> sources, final Group group, final String path) {
Logger logger = LoggerFactory.getLogger(getClass());
logger.debug("Generating merged metadata in: {}:{}", group.getKey(), path);
InputStream stream = null;
boolean merged = false;
final PackageMetadata packageMetadata = new PackageMetadata();
final IndyObjectMapper mapper = new IndyObjectMapper(true);
for (final Transfer src : sources) {
if (!src.exists()) {
continue;
}
try {
stream = src.openInputStream();
String content = IOUtils.toString(stream);
logger.debug("Adding in metadata content from: {}\n\n{}\n\n", src, content);
PackageMetadata md = mapper.readValue(content, PackageMetadata.class);
merged = packageMetadata.merge(md) || merged;
} catch (final IOException e) {
final StoreKey key = getKey(src);
logger.error(String.format("Cannot read metadata: %s from artifact-store: %s. Reason: %s", src.getPath(), key, e.getMessage()), e);
} finally {
closeQuietly(stream);
}
}
if (metadataProviders != null) {
for (PackageMetadataProvider provider : metadataProviders) {
try {
PackageMetadata toMerge = provider.getMetadata(group.getKey(), path);
if (toMerge != null) {
merged = packageMetadata.merge(toMerge) || merged;
}
} catch (IndyWorkflowException e) {
logger.error(String.format("Cannot read metadata: %s from metadata provider: %s. Reason: %s", path, provider.getClass().getSimpleName(), e.getMessage()), e);
}
}
}
if (merged) {
String output = null;
try {
output = mapper.writeValueAsString(packageMetadata);
} catch (JsonProcessingException e) {
logger.error(String.format("Cannot convert from metadata: %s to String. Reason: %s", packageMetadata, e.getMessage()), e);
}
return output.getBytes();
}
return null;
}
use of org.commonjava.maven.galley.model.Transfer in project indy by Commonjava.
the class PackageMetadataMergerTest method mergeTwoSimplePackageMetadataFiles.
@Test
public void mergeTwoSimplePackageMetadataFiles() throws Exception {
String path = "jquery/package.json";
HostedRepository h1 = new HostedRepository("test-hosted-1");
HostedRepository h2 = new HostedRepository("test-hosted-2");
Transfer t1 = cacheProvider.getTransfer(new ConcreteResource(LocationUtils.toLocation(h1), path));
initTestData(t1, VERSION_META + "package-1.json");
Transfer t2 = cacheProvider.getTransfer(new ConcreteResource(LocationUtils.toLocation(h2), path));
initTestData(t2, VERSION_META + "package-2.json");
Group g = new Group("test-group", h1.getKey(), h2.getKey());
List<Transfer> sources = Arrays.asList(t1, t2);
byte[] output = new PackageMetadataMerger(Collections.emptyList()).merge(sources, g, path);
IndyObjectMapper mapper = new IndyObjectMapper(true);
PackageMetadata merged = mapper.readValue(IOUtils.toString(new ByteArrayInputStream(output)), PackageMetadata.class);
// normal object fields merging verification
assertThat(merged.getName(), equalTo("jquery"));
assertThat(merged.getAuthor().getName(), equalTo("JS Foundation and other contributors"));
assertThat(merged.getRepository().getType(), equalTo("git"));
assertThat(merged.getRepository().getUrl(), equalTo("git+https://github.com/jquery/jquery.git"));
assertThat(merged.getReadmeFilename(), equalTo("README.md"));
assertThat(merged.getHomepage(), equalTo("https://jquery.com"));
assertThat(merged.getBugs().getUrl(), equalTo("https://github.com/jquery/jquery/issues"));
assertThat(merged.getLicense(), equalTo("MIT"));
// dist-tags object merging verification
assertThat(merged.getDistTags().getBeta(), equalTo("3.2.1-beta.1"));
assertThat(merged.getDistTags().getLatest(), equalTo("3.2.1"));
// versions map merging verification
Map<String, VersionMetadata> versions = merged.getVersions();
assertThat(versions, notNullValue());
assertThat(versions.size(), equalTo(2));
assertThat(versions.get("1.5.1").getVersion(), equalTo("1.5.1"));
assertThat(versions.get("1.6.2").getVersion(), equalTo("1.6.2"));
// maintainers list merging verification
List<UserInfo> maintainers = merged.getMaintainers();
assertThat(maintainers, notNullValue());
assertThat(maintainers.size(), equalTo(3));
assertThat(maintainers.get(0).getName(), equalTo("dmethvin"));
assertThat(maintainers.get(1).getName(), equalTo("mgol"));
assertThat(maintainers.get(2).getName(), equalTo("scott.gonzalez"));
// time map merging verification
Map<String, String> times = merged.getTime();
assertThat(times, notNullValue());
assertThat(times.size(), equalTo(8));
assertThat(times.get("modified"), equalTo("2017-05-23T10:57:14.309Z"));
assertThat(times.get("created"), equalTo("2011-04-19T07:19:56.392Z"));
// users map merging verification
Map<String, Boolean> users = merged.getUsers();
assertThat(users, notNullValue());
assertThat(users.size(), equalTo(10));
assertThat(users.get("fgribreau"), equalTo(true));
// keywords list merging verification
List<String> keywords = merged.getKeywords();
assertThat(keywords, notNullValue());
assertThat(keywords.size(), equalTo(4));
assertThat(keywords.contains("javascript"), equalTo(true));
}
use of org.commonjava.maven.galley.model.Transfer in project galley by Commonjava.
the class HttpListTest method simpleCentralListing_Missing.
@Test
public void simpleCentralListing_Missing() throws Exception {
final String dir = "central-missing/";
final String fname = dir + "index.html";
final String listingFname = dir + ".listing.txt";
final String url = fixture.formatUrl(fname);
final SimpleHttpLocation location = new SimpleHttpLocation("test", url, true, true, true, true, null);
final Transfer transfer = fixture.getTransfer(new ConcreteResource(location, listingFname));
final HttpListing listing = new HttpListing(url, new ConcreteResource(location, fname), fixture.getHttp());
final ListingResult result = listing.call();
assertThat(result, nullValue());
assertThat(listing.getError(), nullValue());
}
use of org.commonjava.maven.galley.model.Transfer in project galley by Commonjava.
the class HttpListTest method simpleNexusListing.
@Test
public void simpleNexusListing() throws Exception {
final String dir = "nexus-switchyard/";
final String fname = dir + "index.html";
final String listingFname = dir + ".listing.txt";
final String url = fixture.formatUrl(fname);
final String body = getBody(fname);
fixture.getServer().expect(url, 200, body);
final SimpleHttpLocation location = new SimpleHttpLocation("test", url, true, true, true, true, null);
final Transfer transfer = fixture.getTransfer(new ConcreteResource(location, listingFname));
final HttpListing listing = new HttpListing(url, new ConcreteResource(location, fname), fixture.getHttp());
final ListingResult result = listing.call();
assertThat(listing.getError(), nullValue());
assertThat(result, notNullValue());
assertThat(result.getListing(), notNullValue());
assertTrue(Arrays.equals(nexusswitchyard, result.getListing()));
}
use of org.commonjava.maven.galley.model.Transfer in project galley by Commonjava.
the class HttpListTest method simpleCentralListing_WriteListingFile.
@Test
public void simpleCentralListing_WriteListingFile() throws Exception {
final String dir = "central-btm/";
final String fname = dir + "index.html";
final String listingFname = dir + ".listing.txt";
final String url = fixture.formatUrl(fname);
final String body = getBody(fname);
fixture.getServer().expect(url, 200, body);
final SimpleHttpLocation location = new SimpleHttpLocation("test", url, true, true, true, true, null);
final Transfer transfer = fixture.getTransfer(new ConcreteResource(location, listingFname));
final HttpListing listing = new HttpListing(url, new ConcreteResource(location, fname), fixture.getHttp());
final ListingResult result = listing.call();
assertThat(listing.getError(), nullValue());
assertThat(result, notNullValue());
assertThat(result.getListing(), notNullValue());
assertTrue(Arrays.equals(centralbtm, result.getListing()));
final List<String> lines = IOUtils.readLines(transfer.openInputStream());
assertTrue("Listing file written incorrectly!", lines.equals(Arrays.asList(centralbtm)));
}
Aggregations