use of ddf.catalog.content.operation.impl.DeleteStorageRequestImpl in project ddf by codice.
the class HistorianTest method testDeleteResponse.
@Test
public void testDeleteResponse() throws SourceUnavailableException, IngestException, StorageException {
Metacard metacard = getMetacardUpdatePair().get(0);
storeMetacard(metacard);
// Send a delete request
DeleteStorageRequest deleteStorageRequest = new DeleteStorageRequestImpl(Collections.singletonList(metacard), new HashMap<>());
storageProvider.delete(deleteStorageRequest);
// Version delete request
DeleteRequest deleteRequest = new DeleteRequestImpl("deleteRequest");
DeleteResponse deleteResponse = new DeleteResponseImpl(deleteRequest, new HashMap<>(), Collections.singletonList(metacard));
historian.version(deleteResponse);
// Only the version metacard is left
assertThat(storageProvider.storageMap.size(), equalTo(1));
}
use of ddf.catalog.content.operation.impl.DeleteStorageRequestImpl in project ddf by codice.
the class HistorianTest method testDeleteResponseSetSkipFlag.
@Test
public void testDeleteResponseSetSkipFlag() throws SourceUnavailableException, IngestException, StorageException {
Metacard metacard = getMetacardUpdatePair().get(0);
storeMetacard(metacard);
// Send a delete request
DeleteStorageRequest deleteStorageRequest = new DeleteStorageRequestImpl(Collections.singletonList(metacard), new HashMap<>());
storageProvider.delete(deleteStorageRequest);
// Version delete request
DeleteRequest deleteRequest = new DeleteRequestImpl("deleteRequest");
DeleteResponse deleteResponse = new DeleteResponseImpl(deleteRequest, new HashMap<>(), Collections.singletonList(metacard));
historian.version(deleteResponse);
assertThat(deleteResponse.getProperties(), hasEntry(MetacardVersion.SKIP_VERSIONING, true));
}
use of ddf.catalog.content.operation.impl.DeleteStorageRequestImpl in project ddf by codice.
the class ExportCommand method doDelete.
private void doDelete(List<ExportItem> exportedItems, List<ExportItem> exportedContentItems) {
Instant start;
console.println("Starting delete");
start = Instant.now();
for (ExportItem exportedContentItem : exportedContentItems) {
try {
DeleteStorageRequestImpl deleteRequest = new DeleteStorageRequestImpl(Collections.singletonList(new IdAndUriMetacard(exportedContentItem.getId(), exportedContentItem.getResourceUri())), exportedContentItem.getId(), Collections.emptyMap());
storageProvider.delete(deleteRequest);
storageProvider.commit(deleteRequest);
} catch (StorageException e) {
printErrorMessage("Could not delete content for metacard: " + exportedContentItem.toString());
}
}
for (ExportItem exported : exportedItems) {
try {
catalogProvider.delete(new DeleteRequestImpl(exported.getId()));
} catch (IngestException e) {
printErrorMessage("Could not delete metacard: " + exported.toString());
}
}
// delete items from cache
try {
getCacheProxy().removeById(exportedItems.stream().map(ExportItem::getId).collect(Collectors.toList()).toArray(new String[exportedItems.size()]));
} catch (Exception e) {
LOGGER.warn("Could not delete all exported items from cache (Results will eventually expire)", e);
}
console.println("Metacards and Content deleted in: " + getFormattedDuration(start));
console.println("Number of metacards deleted: " + exportedItems.size());
console.println("Number of content deleted: " + exportedContentItems.size());
}
use of ddf.catalog.content.operation.impl.DeleteStorageRequestImpl in project ddf by codice.
the class FileSystemStorageProviderTest method testDeleteWithSimilarIds.
@Test
public void testDeleteWithSimilarIds() throws Exception {
CreateStorageResponse createResponse = assertContentItem(TEST_INPUT_CONTENTS, NITF_MIME_TYPE, TEST_INPUT_FILENAME);
String id = createResponse.getCreatedContentItems().get(0).getId();
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String badId = id.substring(0, 6) + uuid.substring(6, uuid.length() - 1);
boolean hadError = false;
try {
CreateStorageResponse badCreateResponse = assertContentItemWithQualifier(TEST_INPUT_CONTENTS, NITF_MIME_TYPE, TEST_INPUT_FILENAME, badId, "");
} catch (AssertionError e) {
// bad id is not a valid ID
hadError = true;
} finally {
if (!hadError) {
fail("Create succeeded when it should not have! " + badId + "Should not be valid!");
}
hadError = false;
}
DeleteStorageRequest deleteRequest = new DeleteStorageRequestImpl(createResponse.getCreatedContentItems().stream().map(ContentItem::getMetacard).collect(Collectors.toList()), null);
when(deleteRequest.getMetacards().get(0).getId()).thenReturn(id);
DeleteStorageResponse deleteResponse = provider.delete(deleteRequest);
List<ContentItem> items = deleteResponse.getDeletedContentItems();
ContentItem item = items.get(0);
LOGGER.debug("Item retrieved: {}", item);
assertEquals(id, item.getId());
assertThat(item.getFilename(), is(""));
provider.commit(deleteRequest);
try {
assertReadRequest(createResponse.getCreatedContentItems().get(0).getUri(), NITF_MIME_TYPE);
} catch (StorageException e) {
// The item was deleted so it shouldn't have found it
hadError = true;
} finally {
if (!hadError) {
fail("read succeeded when it should not have! ");
}
}
}
use of ddf.catalog.content.operation.impl.DeleteStorageRequestImpl in project ddf by codice.
the class DeleteOperations method doDelete.
//
// Private helper methods
//
public DeleteResponse doDelete(DeleteRequest deleteRequest, List<String> fanoutTagBlacklist) throws IngestException, SourceUnavailableException {
DeleteStorageRequest deleteStorageRequest = null;
DeleteResponse deleteResponse = null;
deleteRequest = queryOperations.setFlagsOnRequest(deleteRequest);
deleteRequest = validateDeleteRequest(deleteRequest);
deleteRequest = validateLocalSource(deleteRequest);
try {
deleteRequest = populateMetacards(deleteRequest, fanoutTagBlacklist);
deleteRequest = preProcessPreAuthorizationPlugins(deleteRequest);
deleteStorageRequest = new DeleteStorageRequestImpl(getDeleteMetacards(deleteRequest), deleteRequest.getProperties());
deleteRequest = processPreDeletePolicyPlugins(deleteRequest);
deleteRequest = processPreDeleteAccessPlugins(deleteRequest);
deleteRequest = processPreIngestPlugins(deleteRequest);
deleteRequest = validateDeleteRequest(deleteRequest);
// Call the Provider delete method
LOGGER.debug("Calling catalog.delete() with {} entries.", deleteRequest.getAttributeValues().size());
deleteResponse = performLocalDelete(deleteRequest, deleteStorageRequest);
deleteResponse = remoteDeleteOperations.performRemoteDelete(deleteRequest, deleteResponse);
deleteResponse = postProcessPreAuthorizationPlugins(deleteResponse);
deleteRequest = populateDeleteRequestPolicyMap(deleteRequest, deleteResponse);
deleteResponse = processPostDeleteAccessPlugins(deleteResponse);
// Post results to be available for pubsub
deleteResponse = validateFixDeleteResponse(deleteResponse, deleteRequest);
} catch (StopProcessingException see) {
LOGGER.debug(PRE_INGEST_ERROR + see.getMessage(), see);
throw new IngestException(PRE_INGEST_ERROR + see.getMessage());
} catch (RuntimeException re) {
LOGGER.info("Exception during runtime while performing delete", re);
throw new InternalIngestException("Exception during runtime while performing delete");
} finally {
if (deleteStorageRequest != null) {
try {
sourceOperations.getStorage().commit(deleteStorageRequest);
} catch (StorageException e) {
LOGGER.info("Unable to remove stored content items.", e);
}
}
}
deleteResponse = doPostIngest(deleteResponse);
return deleteResponse;
}
Aggregations