use of ddf.catalog.operation.DeleteResponse in project ddf by codice.
the class MockMemoryProvider method delete.
@Override
public DeleteResponse delete(DeleteRequest deleteRequest) {
hasReceivedDelete = true;
@SuppressWarnings("unchecked") List<String> ids = (List<String>) deleteRequest.getAttributeValues();
Map<String, Serializable> properties = new HashMap<>();
List<Metacard> returnedMetacards = new ArrayList<>(ids.size());
for (int i = 0; i < ids.size(); i++) {
String id = (String) ids.get(i);
UUID curUUID = UUID.fromString(id);
if (store.containsKey(curUUID.toString())) {
Metacard card = store.remove(curUUID.toString());
if (card != null) {
returnedMetacards.add(card);
}
}
}
DeleteResponse response = new DeleteResponseImpl(deleteRequest, properties, returnedMetacards);
return response;
}
use of ddf.catalog.operation.DeleteResponse in project ddf by codice.
the class CatalogBackupPluginTest method getDeleteResponse.
private DeleteResponse getDeleteResponse(List<String> metacardIds) {
MetacardType mockMetacardType = mock(MetacardType.class);
when(mockMetacardType.getName()).thenReturn(MetacardType.DEFAULT_METACARD_TYPE_NAME);
List<Metacard> deletedMetacards = new ArrayList<>(metacardIds.size());
for (String metacardId : metacardIds) {
Metacard mockMetacard = mock(Metacard.class);
when(mockMetacard.getId()).thenReturn(metacardId);
when(mockMetacard.getMetacardType()).thenReturn(mockMetacardType);
deletedMetacards.add(mockMetacard);
}
DeleteRequest request = mock(DeleteRequest.class);
DeleteResponse mockDeleteResponse = mock(DeleteResponse.class);
when(mockDeleteResponse.getDeletedMetacards()).thenReturn(deletedMetacards);
when(mockDeleteResponse.getRequest()).thenReturn(request);
return mockDeleteResponse;
}
use of ddf.catalog.operation.DeleteResponse in project ddf by codice.
the class ContentProducerDataAccessObjectTest method testCreateContentItem.
@Test
public void testCreateContentItem() throws Exception {
File testFile = temporaryFolder.newFile("testCreateContentItem.txt");
//make sample list of metacard and set of keys
List<MetacardImpl> metacardList = ImmutableList.of(new MetacardImpl());
Set<String> keys = ImmutableSet.of(String.valueOf(testFile.getAbsolutePath().hashCode()));
//mock out responses for create, delete, update
CreateResponse mockCreateResponse = mock(CreateResponse.class);
doReturn(metacardList).when(mockCreateResponse).getCreatedMetacards();
DeleteResponse mockDeleteResponse = mock(DeleteResponse.class);
doReturn(metacardList).when(mockDeleteResponse).getDeletedMetacards();
UpdateResponse mockUpdateResponse = mock(UpdateResponse.class);
doReturn(metacardList).when(mockUpdateResponse).getUpdatedMetacards();
//setup mockFileSystemPersistenceProvider
FileSystemPersistenceProvider mockFileSystemPersistenceProvider = mock(FileSystemPersistenceProvider.class);
doReturn(keys).when(mockFileSystemPersistenceProvider).loadAllKeys();
doReturn("sample").when(mockFileSystemPersistenceProvider).loadFromPersistence(any(String.class));
//setup mockCatalogFramework
CatalogFramework mockCatalogFramework = mock(CatalogFramework.class);
doReturn(mockCreateResponse).when(mockCatalogFramework).create(any(CreateStorageRequest.class));
doReturn(mockDeleteResponse).when(mockCatalogFramework).delete(any(DeleteRequest.class));
//setup mockComponent
ContentComponent mockComponent = mock(ContentComponent.class);
doReturn(mockCatalogFramework).when(mockComponent).getCatalogFramework();
//setup mockEndpoint
ContentEndpoint mockEndpoint = mock(ContentEndpoint.class);
doReturn(mockComponent).when(mockEndpoint).getComponent();
WatchEvent.Kind<Path> kind;
String mimeType = "txt";
Map<String, Object> headers = new HashedMap();
Map<String, Serializable> attributeOverrides = new HashMap<>();
attributeOverrides.put("example", ImmutableList.of("something", "something1"));
attributeOverrides.put("example2", ImmutableList.of("something2"));
headers.put(Constants.ATTRIBUTE_OVERRIDES_KEY, attributeOverrides);
kind = StandardWatchEventKinds.ENTRY_CREATE;
contentProducerDataAccessObject.createContentItem(mockFileSystemPersistenceProvider, mockEndpoint, testFile, kind, mimeType, headers);
kind = StandardWatchEventKinds.ENTRY_DELETE;
contentProducerDataAccessObject.createContentItem(mockFileSystemPersistenceProvider, mockEndpoint, testFile, kind, mimeType, headers);
kind = StandardWatchEventKinds.ENTRY_MODIFY;
contentProducerDataAccessObject.createContentItem(mockFileSystemPersistenceProvider, mockEndpoint, testFile, kind, mimeType, headers);
}
use of ddf.catalog.operation.DeleteResponse in project ddf by codice.
the class ContentProducerDataAccessObject method createContentItem.
public void createContentItem(FileSystemPersistenceProvider fileIdMap, ContentEndpoint endpoint, File ingestedFile, WatchEvent.Kind<Path> eventType, String mimeType, Map<String, Object> headers) throws SourceUnavailableException, IngestException {
LOGGER.debug("Creating content item.");
String key = String.valueOf(ingestedFile.getAbsolutePath().hashCode());
String id = fileIdMap.loadAllKeys().contains(key) ? String.valueOf(fileIdMap.loadFromPersistence(key)) : null;
if (StandardWatchEventKinds.ENTRY_CREATE.equals(eventType)) {
CreateStorageRequest createRequest = new CreateStorageRequestImpl(Collections.singletonList(new ContentItemImpl(uuidGenerator.generateUuid(), Files.asByteSource(ingestedFile), mimeType, ingestedFile.getName(), 0L, null)), null);
processHeaders(headers, createRequest, ingestedFile);
CreateResponse createResponse = endpoint.getComponent().getCatalogFramework().create(createRequest);
if (createResponse != null) {
List<Metacard> createdMetacards = createResponse.getCreatedMetacards();
for (Metacard metacard : createdMetacards) {
fileIdMap.store(key, metacard.getId());
LOGGER.debug("content item created with id = {}", metacard.getId());
}
}
} else if (StandardWatchEventKinds.ENTRY_MODIFY.equals(eventType)) {
UpdateStorageRequest updateRequest = new UpdateStorageRequestImpl(Collections.singletonList(new ContentItemImpl(id, Files.asByteSource(ingestedFile), mimeType, ingestedFile.getName(), 0, null)), null);
processHeaders(headers, updateRequest, ingestedFile);
UpdateResponse updateResponse = endpoint.getComponent().getCatalogFramework().update(updateRequest);
if (updateResponse != null) {
List<Update> updatedMetacards = updateResponse.getUpdatedMetacards();
for (Update update : updatedMetacards) {
LOGGER.debug("content item updated with id = {}", update.getNewMetacard().getId());
}
}
} else if (StandardWatchEventKinds.ENTRY_DELETE.equals(eventType)) {
DeleteRequest deleteRequest = new DeleteRequestImpl(id);
DeleteResponse deleteResponse = endpoint.getComponent().getCatalogFramework().delete(deleteRequest);
if (deleteResponse != null) {
List<Metacard> deletedMetacards = deleteResponse.getDeletedMetacards();
for (Metacard delete : deletedMetacards) {
fileIdMap.delete(ingestedFile.getAbsolutePath());
LOGGER.debug("content item deleted with id = {}", delete.getId());
}
}
}
}
use of ddf.catalog.operation.DeleteResponse in project ddf by codice.
the class CatalogComponentFrameworkTest method testDeleteWithIngestException.
@Test
public /**
* Operation: DELETE
* Body contains: 12345678900987654321abcdeffedcba
*/
void testDeleteWithIngestException() throws Exception {
resetMocks();
// Setup expectations to verify
final MockEndpoint mockVerifierEndpoint = getMockEndpoint("mock:result");
mockVerifierEndpoint.expectedMessageCount(1);
final List<Metacard> metacards = new ArrayList<Metacard>();
metacards.add(metacard1);
// setup mock catalog framework
final String[] metacardIds = new String[metacards.size()];
for (int i = 0; i < metacards.size(); i++) {
metacardIds[i] = metacards.get(i).getId();
}
DeleteRequest deleteRequest = new DeleteRequestImpl(metacardIds);
DeleteResponse deleteResponse = new DeleteResponseImpl(deleteRequest, new HashMap(), metacards);
when(catalogFramework.delete(any(DeleteRequest.class))).thenThrow(new IngestException());
// Exercise the route with a DELETE operation
template.sendBodyAndHeader("direct:sampleInput", metacardIds, "Operation", "DELETE");
// Verify that the number of metacards in the exchange after the records
// is identical to the input
assertListSize(mockVerifierEndpoint.getExchanges(), 1);
final Exchange exchange = mockVerifierEndpoint.getExchanges().get(0);
final List<Update> cardsDeleted = (List<Update>) exchange.getIn().getBody();
assertListSize(cardsDeleted, 0);
mockVerifierEndpoint.assertIsSatisfied();
}
Aggregations