use of ddf.catalog.content.StorageException 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;
}
use of ddf.catalog.content.StorageException in project ddf by codice.
the class InMemoryStorageProvider method delete.
@Override
public DeleteStorageResponse delete(DeleteStorageRequest deleteRequest) throws StorageException {
if (deleteRequest == null) {
throw new StorageException("delete request can't be null");
}
List<ContentItem> itemsToDelete = new ArrayList<>();
for (Metacard metacard : deleteRequest.getMetacards()) {
List<ContentItem> tmp = storageMap.values().stream().filter(item -> item.getMetacard().getId().equals(metacard.getId())).collect(Collectors.toList());
if (tmp.isEmpty()) {
throw new StorageException("can't delete a metacard that isn't stored");
}
itemsToDelete.addAll(tmp);
}
for (ContentItem item : itemsToDelete) {
deleteMap.put(item.getUri(), item);
}
return new DeleteStorageResponseImpl(deleteRequest, itemsToDelete);
}
Aggregations