use of org.apache.archiva.repository.content.ItemNotFoundException in project archiva by apache.
the class ManagedDefaultRepositoryContent method deleteAllItems.
@Override
public void deleteAllItems(ItemSelector selector, Consumer<ItemDeleteStatus> consumer) throws ContentAccessException, IllegalArgumentException {
try (Stream<? extends ContentItem> stream = newItemStream(selector, false)) {
stream.forEach(item -> {
try {
deleteItem(item);
consumer.accept(new ItemDeleteStatus(item));
} catch (ItemNotFoundException e) {
consumer.accept(new ItemDeleteStatus(item, ItemDeleteStatus.ITEM_NOT_FOUND, e));
} catch (Exception e) {
consumer.accept(new ItemDeleteStatus(item, ItemDeleteStatus.DELETION_FAILED, e));
} catch (Throwable e) {
consumer.accept(new ItemDeleteStatus(item, ItemDeleteStatus.UNKNOWN, e));
}
});
}
}
use of org.apache.archiva.repository.content.ItemNotFoundException in project archiva by apache.
the class DefaultRepositoriesService method deleteGroupId.
@Override
public ActionStatus deleteGroupId(String groupId, String repositoryId) throws ArchivaRestServiceException {
if (StringUtils.isEmpty(repositoryId)) {
throw new ArchivaRestServiceException("repositoryId cannot be null", 400, null);
}
if (!getPermissionStatus(repositoryId).isAuthorizedToDeleteArtifacts()) {
throw new ArchivaRestServiceException("not authorized to delete artifacts", 403, null);
}
if (StringUtils.isEmpty(groupId)) {
throw new ArchivaRestServiceException("groupId cannot be null", 400, null);
}
RepositorySession repositorySession = null;
try {
repositorySession = repositorySessionFactory.createSession();
} catch (MetadataRepositoryException e) {
e.printStackTrace();
}
try {
ManagedRepositoryContent repository = getManagedRepositoryContent(repositoryId);
ArchivaItemSelector itemselector = ArchivaItemSelector.builder().withNamespace(groupId).build();
ContentItem item = repository.getItem(itemselector);
repository.deleteItem(item);
MetadataRepository metadataRepository = repositorySession.getRepository();
metadataRepository.removeNamespace(repositorySession, repositoryId, groupId);
// just invalidate cache entry
String cacheKey = repositoryId + "-" + groupId;
namespacesCache.remove(cacheKey);
namespacesCache.remove(repositoryId);
repositorySession.save();
} catch (MetadataRepositoryException | MetadataSessionException e) {
log.error(e.getMessage(), e);
throw new ArchivaRestServiceException("Repository exception: " + e.getMessage(), 500, e);
} catch (RepositoryException e) {
log.error(e.getMessage(), e);
throw new ArchivaRestServiceException("Repository exception: " + e.getMessage(), 500, e);
} catch (ItemNotFoundException e) {
log.error("Item not found {}", e.getMessage(), e);
throw new ArchivaRestServiceException("Repository exception: " + e.getMessage(), 500, e);
} finally {
repositorySession.close();
}
return ActionStatus.SUCCESS;
}
use of org.apache.archiva.repository.content.ItemNotFoundException in project archiva by apache.
the class DefaultRepositoriesService method removeProjectVersion.
@Override
public ActionStatus removeProjectVersion(String repositoryId, String namespace, String projectId, String version) throws ArchivaRestServiceException {
// if not a generic we can use the standard way to delete artifact
if (!VersionUtil.isGenericSnapshot(version)) {
Artifact artifact = new Artifact(namespace, projectId, version);
artifact.setRepositoryId(repositoryId);
artifact.setContext(repositoryId);
return deleteArtifact(artifact);
}
if (StringUtils.isEmpty(repositoryId)) {
throw new ArchivaRestServiceException("repositoryId cannot be null", 400, null);
}
if (!getPermissionStatus(repositoryId).isAuthorizedToDeleteArtifacts()) {
throw new ArchivaRestServiceException("not authorized to delete artifacts", 403, null);
}
if (StringUtils.isEmpty(namespace)) {
throw new ArchivaRestServiceException("groupId cannot be null", 400, null);
}
if (StringUtils.isEmpty(projectId)) {
throw new ArchivaRestServiceException("artifactId cannot be null", 400, null);
}
if (StringUtils.isEmpty(version)) {
throw new ArchivaRestServiceException("version cannot be null", 400, null);
}
RepositorySession repositorySession = null;
try {
repositorySession = repositorySessionFactory.createSession();
} catch (MetadataRepositoryException e) {
e.printStackTrace();
}
try {
ManagedRepositoryContent repository = getManagedRepositoryContent(repositoryId);
BaseRepositoryContentLayout layout = repository.getLayout(BaseRepositoryContentLayout.class);
ArchivaItemSelector selector = ArchivaItemSelector.builder().withNamespace(namespace).withProjectId(projectId).withVersion(version).build();
Version versionItem = layout.getVersion(selector);
if (versionItem != null && versionItem.exists()) {
repository.deleteItem(versionItem);
}
MetadataRepository metadataRepository = repositorySession.getRepository();
Collection<ArtifactMetadata> artifacts = metadataRepository.getArtifacts(repositorySession, repositoryId, namespace, projectId, version);
for (ArtifactMetadata artifactMetadata : artifacts) {
metadataRepository.removeTimestampedArtifact(repositorySession, artifactMetadata, version);
}
metadataRepository.removeProjectVersion(repositorySession, repositoryId, namespace, projectId, version);
} catch (MetadataRepositoryException | MetadataResolutionException | RepositoryException | ItemNotFoundException | LayoutException e) {
throw new ArchivaRestServiceException("Repository exception: " + e.getMessage(), 500, e);
} finally {
try {
repositorySession.save();
} catch (MetadataSessionException e) {
log.error("Session save failed {}", e.getMessage());
}
repositorySession.close();
}
return ActionStatus.SUCCESS;
}
use of org.apache.archiva.repository.content.ItemNotFoundException in project archiva by apache.
the class ManagedDefaultRepositoryContentTest method deleteItemNotFound.
@Test
public void deleteItemNotFound() throws IOException, URISyntaxException, ItemNotFoundException {
ManagedRepository repo = createManagedRepoWithContent("delete-repository");
ManagedRepositoryContent myRepoContent = repo.getContent();
Path repoRoot = repo.getRoot().getFilePath();
ArchivaItemSelector selector = ArchivaItemSelector.builder().withNamespace("org.apache.test2").build();
ContentItem item = myRepoContent.getItem(selector);
assertTrue(item instanceof Namespace);
try {
myRepoContent.deleteItem(item);
assertTrue("ItemNotFoundException expected for non existing namespace", false);
} catch (ItemNotFoundException e) {
}
selector = ArchivaItemSelector.builder().withNamespace("org.apache.test").withProjectId("samplejar2").build();
item = myRepoContent.getItem(selector);
assertTrue(item instanceof Project);
try {
myRepoContent.deleteItem(item);
assertTrue("ItemNotFoundException expected for non existing project", false);
} catch (ItemNotFoundException e) {
}
selector = ArchivaItemSelector.builder().withNamespace("org.apache.test").withProjectId("samplejar").withVersion("1.1").build();
item = myRepoContent.getItem(selector);
assertTrue(item instanceof Version);
try {
myRepoContent.deleteItem(item);
assertTrue("ItemNotFoundException expected for non existing version", false);
} catch (ItemNotFoundException e) {
}
selector = ArchivaItemSelector.builder().withNamespace("org.apache.test").withProjectId("samplejar").withVersion("1.0").withArtifactId("samplejar").withArtifactVersion("1.0").withExtension("jax").build();
item = myRepoContent.getItem(selector);
assertTrue(item instanceof Artifact);
try {
myRepoContent.deleteItem(item);
assertTrue("ItemNotFoundException expected for non existing artifact", false);
} catch (ItemNotFoundException e) {
}
}
Aggregations