use of org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY in project indy by Commonjava.
the class ContentIndexDirLvWithMetadataTest method test.
@Test
public void test() throws Exception {
final String remoteName1 = newName();
RemoteRepository remote1 = new RemoteRepository(MAVEN_PKG_KEY, remoteName1, server.formatUrl(remoteName1));
remote1 = client.stores().create(remote1, name.getMethodName(), RemoteRepository.class);
final String remoteName2 = newName();
RemoteRepository remote2 = new RemoteRepository(MAVEN_PKG_KEY, remoteName2, server.formatUrl(remoteName2));
remote2 = client.stores().create(remote2, name.getMethodName(), RemoteRepository.class);
final String groupName = newName();
Group group = new Group(MAVEN_PKG_KEY, groupName, remote1.getKey(), remote2.getKey());
group = client.stores().create(group, name.getMethodName(), Group.class);
server.expect(server.formatUrl(remoteName2, PATH_META), 200, PATH_META_CONTENT);
try (InputStream s = client.content().get(group.getKey(), PATH_META)) {
assertThat(IOUtils.toString(s), equalTo(PATH_META_CONTENT));
}
AdvancedCache<IndexedStorePath, IndexedStorePath> advancedCache = (AdvancedCache) contentIndex.execute(c -> c);
System.out.println("[Content index DEBUG]: cached isps: " + advancedCache.keySet());
for (IndexedStorePath value : advancedCache.values()) {
assertThat(value.getOriginStoreKey(), equalTo(remote2.getKey()));
}
System.out.println("[Content index DEBUG]: cache size:" + advancedCache.size());
System.out.println("[Content index DEBUG]: cache hit:" + advancedCache.getStats().getHits());
System.out.println("[Content index DEBUG]: cache misses:" + advancedCache.getStats().getMisses());
}
use of org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY in project indy by Commonjava.
the class ImpliedRepositoryDetector method addImpliedRepositories.
private void addImpliedRepositories(final ImplicationsJob job) {
job.implied = new ArrayList<>();
logger.debug("Retrieving repository/pluginRepository declarations from:\n {}", new JoinString("\n ", job.pomView.getDocRefStack()));
final List<List<RepositoryView>> repoLists = Arrays.asList(job.pomView.getNonProfileRepositories(), job.pomView.getAllPluginRepositories());
final ImpliedRepositoryCreator creator = createRepoCreator();
if (creator == null) {
logger.error("Cannot proceed without a valid ImpliedRepositoryCreator instance. Aborting detection.");
return;
}
for (final List<RepositoryView> repos : repoLists) {
if (repos == null || repos.isEmpty()) {
continue;
}
for (final RepositoryView repo : repos) {
final ProjectVersionRef gav = job.pathInfo.getProjectId();
try {
if (config.isBlacklisted(repo.getUrl())) {
logger.debug("Discarding blacklisted repository: {}", repo);
continue;
} else if (!config.isIncludeSnapshotRepos() && !repo.isReleasesEnabled()) {
logger.debug("Discarding snapshot repository: {}", repo);
continue;
}
} catch (final MalformedURLException e) {
logger.error(String.format("Cannot add implied remote repo: %s from: %s (transfer: %s). Failed to check if repository is blacklisted.", repo.getUrl(), gav, job.transfer), e);
}
logger.debug("Detected POM-declared repository: {}", repo);
List<RemoteRepository> rrs = null;
try {
rrs = storeManager.query().getRemoteRepositoryByUrl(MAVEN_PKG_KEY, repo.getUrl());
} catch (IndyDataException e) {
logger.error(String.format("Cannot lookup remote repositories by URL: %s. Reason: %s", e.getMessage()), e);
}
final RemoteRepository ref = creator.createFrom(gav, repo, LoggerFactory.getLogger(creator.getClass()));
if (ref == null) {
logger.warn("ImpliedRepositoryCreator didn't create anything for repo: {}, specified in: {}. Skipping.", repo.getId(), gav);
continue;
}
if (rrs != null && !rrs.isEmpty()) {
rrs = rrs.stream().filter(rr -> rr.isAllowReleases() == ref.isAllowReleases()).filter(rr -> rr.isAllowSnapshots() == ref.isAllowSnapshots()).filter(rr -> (isEmpty(rr.getPathMaskPatterns()) && isEmpty(ref.getPathMaskPatterns())) || rr.getPathMaskPatterns().equals(ref.getPathMaskPatterns())).collect(Collectors.toList());
}
if (rrs == null || rrs.isEmpty()) {
logger.debug("Creating new RemoteRepository for: {}", repo);
final RemoteRepository rr = ref.copyOf();
rr.setMetadata(METADATA_ORIGIN, IMPLIED_REPO_ORIGIN);
try {
rr.setMetadata(IMPLIED_BY_STORES, mapper.writeValueAsString(new ImpliedRepoMetadataManager.ImpliedRemotesWrapper(Collections.singletonList(job.store.getKey()))));
} catch (JsonProcessingException e) {
logger.error("Failed to set {}", IMPLIED_BY_STORES);
continue;
}
if (!remoteValidator.isValid(rr)) {
logger.warn("Implied repository to: {} is invalid! Repository created was: {}", repo.getUrl(), rr);
continue;
}
final String changelog = String.format("Adding remote repository: %s (url: %s, name: %s), which is implied by the POM: %s (at: %s/%s)", repo.getId(), repo.getUrl(), repo.getName(), gav, job.transfer.getLocation().getUri(), job.transfer.getPath());
final ChangeSummary summary = new ChangeSummary(ChangeSummary.SYSTEM_USER, changelog);
try {
final boolean result = storeManager.storeArtifactStore(rr, summary, true, false, new EventMetadata().set(StoreDataManager.EVENT_ORIGIN, IMPLIED_REPOS_DETECTION).set(IMPLIED_BY_POM_TRANSFER, job.transfer));
logger.debug("Stored new RemoteRepository: {}. (successful? {})", rr, result);
job.implied.add(rr);
} catch (final IndyDataException e) {
logger.error(String.format("Cannot add implied remote repo: %s from: %s (transfer: %s). Failed to store new remote repository.", repo.getUrl(), gav, job.transfer), e);
}
} else {
logger.debug("Found existing RemoteRepositories: {}", rrs);
for (final RemoteRepository rr : rrs) {
rr.setMetadata(METADATA_ORIGIN, IMPLIED_REPO_ORIGIN);
try {
metadataManager.updateImpliedBy(rr, job.store);
} catch (ImpliedReposException e) {
logger.error("Failed to set {}", IMPLIED_BY_STORES);
continue;
}
final String changelog = String.format("Updating the existing remote repository: %s (url: %s, name: %s), which is implied by the POM: %s (at: %s/%s)", repo.getId(), repo.getUrl(), repo.getName(), gav, job.transfer.getLocation().getUri(), job.transfer.getPath());
final ChangeSummary summary = new ChangeSummary(ChangeSummary.SYSTEM_USER, changelog);
try {
final boolean result = storeManager.storeArtifactStore(rr, summary, false, false, null);
logger.debug("Updated the RemoteRepository: {}. (successful? {})", rr, result);
job.implied.add(rr);
} catch (final IndyDataException e) {
logger.error(String.format("Cannot add implied remote repo: %s from: %s (transfer: %s). Failed to update the remote repository.", repo.getUrl(), gav, job.transfer), e);
}
}
}
}
}
}
use of org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY in project indy by Commonjava.
the class NfcResource method deprecatedGetStore.
@Path("/{type: (hosted|group|remote)}/{name}")
@ApiOperation("[Deprecated] Retrieve all not-found cache entries currently tracked for a given store")
@ApiResponses({ @ApiResponse(code = 200, response = NotFoundCacheDTO.class, message = "The not-found cache for the specified artifact store") })
@GET
@Produces(ApplicationContent.application_json)
public Response deprecatedGetStore(@ApiParam(allowableValues = "hosted,group,remote", name = "type", required = true, value = "The type of store") @PathParam("type") final String t, @ApiParam(name = "name", value = "The name of the store") @PathParam("name") final String name, @ApiParam(name = "pageIndex", value = "page index") @QueryParam("pageIndex") final Integer pageIndex, @ApiParam(name = "pageSize", value = "page size") @QueryParam("pageSize") final Integer pageSize) {
Response response;
final StoreType type = StoreType.get(t);
String altPath = Paths.get("/api/nfc", MAVEN_PKG_KEY, type.singularEndpointName(), name).toString();
final StoreKey key = new StoreKey(type, name);
try {
NotFoundCacheDTO dto;
Page page = new Page(pageIndex, pageSize);
if (page != null && page.allowPaging()) {
Pagination<NotFoundCacheDTO> nfcPagination = controller.getMissing(key, page);
dto = nfcPagination.getCurrData();
} else {
dto = controller.getMissing(key);
}
response = responseHelper.formatOkResponseWithJsonEntity(dto, rb -> responseHelper.markDeprecated(rb, altPath));
} catch (final IndyWorkflowException e) {
response = responseHelper.formatResponse(e, (rb) -> responseHelper.markDeprecated(rb, altPath));
}
return response;
}
use of org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY in project indy by Commonjava.
the class SchedulerHandler method deprecatedGetStoreDisableTimeout.
@ApiOperation("[Deprecated] Retrieve the expiration information related to re-enablement of a repository")
@ApiResponses({ @ApiResponse(code = 200, message = "Expiration information retrieved successfully.", response = Expiration.class), @ApiResponse(code = 400, message = "Store is manually disabled (doesn't automatically re-enable), or isn't disabled.") })
@Path("store/{type: (hosted|group|remote)}/{name}/disable-timeout")
@GET
@Deprecated
public Response deprecatedGetStoreDisableTimeout(@ApiParam(allowableValues = "hosted,group,remote", required = true) @PathParam("type") String storeType, @ApiParam(required = true) @PathParam("name") String storeName) {
StoreType type = StoreType.get(storeType);
String altPath = Paths.get("/api/admin/schedule", MAVEN_PKG_KEY, type.singularEndpointName(), storeName).toString();
StoreKey storeKey = new StoreKey(type, storeName);
Expiration timeout = null;
try {
timeout = controller.getStoreDisableTimeout(storeKey);
if (timeout == null) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
return responseHelper.formatOkResponseWithJsonEntity(timeout, rb -> responseHelper.markDeprecated(rb, altPath));
} catch (IndyWorkflowException e) {
responseHelper.throwError(e, rb -> responseHelper.markDeprecated(rb, altPath));
}
return null;
}
use of org.commonjava.indy.pkg.maven.model.MavenPackageTypeDescriptor.MAVEN_PKG_KEY in project indy by Commonjava.
the class DeprecatedFoloContentAccessResource method doCreate.
@ApiOperation("Store and track file/artifact content under the given artifact store (type/name) and path.")
@ApiResponses({ @ApiResponse(code = 201, message = "Content was stored successfully"), @ApiResponse(code = 400, message = "No appropriate storage location was found in the specified store (this store, or a member if a group is specified).") })
@PUT
@Path("/{path: (.*)}")
public Response doCreate(@ApiParam("User-assigned tracking session key") @PathParam("id") final String id, @ApiParam(allowableValues = "hosted,group,remote", required = true) @PathParam("type") final String type, @PathParam("name") final String name, @PathParam("path") final String path, @Context final HttpServletRequest request, @Context final UriInfo uriInfo) {
final TrackingKey tk = new TrackingKey(id);
EventMetadata metadata = new EventMetadata().set(TRACKING_KEY, tk).set(ACCESS_CHANNEL, AccessChannel.MAVEN_REPO);
final Supplier<URI> uriSupplier = () -> uriInfo.getBaseUriBuilder().path(getClass()).path(path).build(id, type, name);
final Consumer<Response.ResponseBuilder> deprecation = builder -> {
String alt = Paths.get("/api/folo/track/", id, MAVEN_PKG_KEY, type, name, path).toString();
responseHelper.markDeprecated(builder, alt);
};
return handler.doCreate(MAVEN_PKG_KEY, type, name, path, request, metadata, uriSupplier, deprecation);
}
Aggregations