Search in sources :

Example 6 with UpdateResponse

use of ddf.catalog.operation.UpdateResponse in project ddf by codice.

the class CatalogComponentFrameworkTest method testUpdateWithIngestException.

@Test
public /**
     * Operation: UPDATE
     * Body contains:  Metacard
     */
void testUpdateWithIngestException() 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 Update update = new UpdateImpl(metacard1, metacard2);
    List<Update> updates = new ArrayList<Update>();
    updates.add(update);
    final String[] metacardIds = new String[metacards.size()];
    for (int i = 0; i < metacards.size(); i++) {
        metacardIds[i] = metacards.get(i).getId();
    }
    UpdateRequest updateRequest = new UpdateRequestImpl(metacardIds, metacards);
    UpdateResponse updateResponse = new UpdateResponseImpl(updateRequest, new HashMap(), updates);
    when(catalogFramework.update(any(UpdateRequest.class))).thenThrow(new IngestException());
    // Exercise the route with a UPDATE operation
    template.sendBodyAndHeader("direct:sampleInput", metacards, "Operation", "UPDATE");
    // 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> cardsUpdated = (List<Update>) exchange.getIn().getBody();
    assertListSize(cardsUpdated, 0);
    mockVerifierEndpoint.assertIsSatisfied();
}
Also used : UpdateImpl(ddf.catalog.operation.impl.UpdateImpl) MockEndpoint(org.apache.camel.component.mock.MockEndpoint) UpdateRequest(ddf.catalog.operation.UpdateRequest) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Update(ddf.catalog.operation.Update) MockEndpoint(org.apache.camel.component.mock.MockEndpoint) Exchange(org.apache.camel.Exchange) UpdateResponse(ddf.catalog.operation.UpdateResponse) Metacard(ddf.catalog.data.Metacard) UpdateResponseImpl(ddf.catalog.operation.impl.UpdateResponseImpl) IngestException(ddf.catalog.source.IngestException) ArrayList(java.util.ArrayList) List(java.util.List) UpdateRequestImpl(ddf.catalog.operation.impl.UpdateRequestImpl) Test(org.junit.Test)

Example 7 with UpdateResponse

use of ddf.catalog.operation.UpdateResponse in project ddf by codice.

the class CatalogComponentFrameworkTest method testUpdateWithListOfMetacards.

@Test
public /**
     * Operation: UPDATE
     * Body contains:  List<Metacard>
     */
void testUpdateWithListOfMetacards() 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 Update update = new UpdateImpl(metacard1, metacard2);
    List<Update> updates = new ArrayList<Update>();
    updates.add(update);
    final String[] metacardIds = new String[metacards.size()];
    for (int i = 0; i < metacards.size(); i++) {
        metacardIds[i] = metacards.get(i).getId();
    }
    UpdateRequest updateRequest = new UpdateRequestImpl(metacardIds, metacards);
    UpdateResponse updateResponse = new UpdateResponseImpl(updateRequest, new HashMap(), updates);
    when(catalogFramework.update(any(UpdateRequest.class))).thenReturn(updateResponse);
    // Exercise the route with a UPDATE operation
    template.sendBodyAndHeader("direct:sampleInput", metacards, "Operation", "UPDATE");
    // 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> cardsUpdated = (List<Update>) exchange.getIn().getBody();
    assertListSize(cardsUpdated, 1);
    mockVerifierEndpoint.assertIsSatisfied();
}
Also used : UpdateImpl(ddf.catalog.operation.impl.UpdateImpl) MockEndpoint(org.apache.camel.component.mock.MockEndpoint) UpdateRequest(ddf.catalog.operation.UpdateRequest) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Update(ddf.catalog.operation.Update) MockEndpoint(org.apache.camel.component.mock.MockEndpoint) Exchange(org.apache.camel.Exchange) UpdateResponse(ddf.catalog.operation.UpdateResponse) Metacard(ddf.catalog.data.Metacard) UpdateResponseImpl(ddf.catalog.operation.impl.UpdateResponseImpl) ArrayList(java.util.ArrayList) List(java.util.List) UpdateRequestImpl(ddf.catalog.operation.impl.UpdateRequestImpl) Test(org.junit.Test)

Example 8 with UpdateResponse

use of ddf.catalog.operation.UpdateResponse in project ddf by codice.

the class SolrProviderTest method testUpdatePendingNrtIndex.

@Test
public void testUpdatePendingNrtIndex() throws Exception {
    deleteAllIn(provider);
    ConfigurationStore.getInstance().setForceAutoCommit(false);
    try {
        MockMetacard metacard = new MockMetacard(Library.getFlagstaffRecord());
        CreateResponse createResponse = create(metacard);
        String id = createResponse.getCreatedMetacards().get(0).getId();
        MockMetacard updatedMetacard = new MockMetacard(Library.getFlagstaffRecord());
        updatedMetacard.setContentTypeName("first");
        UpdateResponse firstUpdateResponse = update(id, updatedMetacard);
        updatedMetacard = new MockMetacard(Library.getFlagstaffRecord());
        updatedMetacard.setContentTypeName("second");
        UpdateResponse secondUpdateResponse = update(id, updatedMetacard);
        verifyContentTypeUpdate(firstUpdateResponse, MockMetacard.DEFAULT_TYPE, "first");
        verifyContentTypeUpdate(secondUpdateResponse, "first", "second");
    } finally {
        ConfigurationStore.getInstance().setForceAutoCommit(true);
    }
}
Also used : UpdateResponse(ddf.catalog.operation.UpdateResponse) CreateResponse(ddf.catalog.operation.CreateResponse) Matchers.containsString(org.hamcrest.Matchers.containsString) Test(org.junit.Test)

Example 9 with UpdateResponse

use of ddf.catalog.operation.UpdateResponse in project ddf by codice.

the class SolrProviderTest method testUpdateByMetacardId.

@Test
public void testUpdateByMetacardId() throws Exception {
    deleteAllIn(provider);
    MockMetacard metacard1 = new MockMetacard(Library.getFlagstaffRecord());
    MockMetacard metacard2 = new MockMetacard(Library.getShowLowRecord());
    String uri1 = "http://youwillfindme.com/here";
    String uri2 = "http://youwillfindme.com/there";
    metacard1.setResourceURI(new URI(uri1));
    metacard1.setContentTypeName("oldNitf");
    metacard2.setResourceURI(new URI(uri2));
    metacard2.setContentTypeName("oldNitf2");
    metacard2.setResourceSize("25L");
    List<Metacard> list = Arrays.asList((Metacard) metacard1, metacard2);
    CreateResponse createResponse = create(list);
    List<String> responseStrings = MockMetacard.toStringList(createResponse.getCreatedMetacards());
    assertEquals(2, responseStrings.size());
    /** UPDATE **/
    MockMetacard updatedMetacard1 = new MockMetacard(Library.getTampaRecord());
    MockMetacard updatedMetacard2 = new MockMetacard(Library.getFlagstaffRecord());
    updatedMetacard1.setId(metacard1.getId());
    updatedMetacard1.setContentTypeName("nitf");
    updatedMetacard2.setId(metacard2.getId());
    updatedMetacard2.setResourceURI(new URI(uri2));
    updatedMetacard2.setContentTypeName("nitf2");
    updatedMetacard2.setResourceSize("50L");
    list = Arrays.asList((Metacard) updatedMetacard1, updatedMetacard2);
    String[] ids = { metacard1.getId(), metacard2.getId() };
    UpdateResponse updateResponse = update(ids, list);
    assertEquals("Testing Update operation: ", 2, updateResponse.getUpdatedMetacards().size());
    List<Update> updatedMetacards = updateResponse.getUpdatedMetacards();
    for (Update up : updatedMetacards) {
        Metacard newCard = up.getNewMetacard();
        Metacard oldCard = up.getOldMetacard();
        assertNotNull(oldCard.getResourceURI());
        assertEquals(provider.getId(), oldCard.getSourceId());
        assertEquals(provider.getId(), newCard.getSourceId());
        if (oldCard.getContentTypeName().equals("oldNitf")) {
            assertEquals("nitf", newCard.getContentTypeName());
            // TPA is unique to the document
            assertTrue(newCard.getMetadata().indexOf("TPA") != ALL_RESULTS);
            assertThat(newCard.getResourceURI(), is(nullValue()));
            assertThat(oldCard.getResourceURI().toString(), equalTo(uri1));
            assertEquals(oldCard.getId(), newCard.getId());
            // Title
            assertEquals(MockMetacard.DEFAULT_TITLE, oldCard.getTitle());
            assertEquals(MockMetacard.DEFAULT_TITLE, newCard.getTitle());
            // Location (decimal points make them not exact Strings POINT(1
            // 0) as opposed to POINT( 1.0 0.0) )
            assertEquals(MockMetacard.DEFAULT_LOCATION.substring(0, 8), oldCard.getLocation().substring(0, 8));
            assertEquals(MockMetacard.DEFAULT_LOCATION.substring(0, 8), newCard.getLocation().substring(0, 8));
            // Metadata
            assertNotNull(oldCard.getMetadata());
            assertNotNull(newCard.getMetadata());
            assertTrue(!oldCard.getMetadata().isEmpty());
            assertTrue(!newCard.getMetadata().isEmpty());
            // Created Date
            assertFalse(oldCard.getCreatedDate().after(new Date()));
            assertFalse(newCard.getCreatedDate().after(new Date()));
            assertTrue(newCard.getCreatedDate().after(oldCard.getCreatedDate()));
            // Modified Date
            assertTrue(newCard.getModifiedDate().after(oldCard.getModifiedDate()));
            // Effective Date
            assertTrue(newCard.getEffectiveDate().after(oldCard.getEffectiveDate()));
            // Expiration Date
            assertTrue(newCard.getExpirationDate().after(oldCard.getExpirationDate()));
            // Thumbnail
            assertTrue(Arrays.equals(newCard.getThumbnail(), oldCard.getThumbnail()));
        } else if (oldCard.getContentTypeName().equals("oldNitf2")) {
            assertEquals("nitf2", newCard.getContentTypeName());
            // Cardinals is unique to the document
            assertTrue(newCard.getMetadata().indexOf("Cardinals") != ALL_RESULTS);
            assertTrue("50L".equals(newCard.getResourceSize()));
            assertEquals(uri2, newCard.getResourceURI().toString());
            assertEquals(oldCard.getId(), newCard.getId());
            // Title
            assertEquals(MockMetacard.DEFAULT_TITLE, oldCard.getTitle());
            assertEquals(MockMetacard.DEFAULT_TITLE, newCard.getTitle());
            // Location (decimal points make them not exact in Strings
            assertEquals(MockMetacard.DEFAULT_LOCATION.substring(0, 8), oldCard.getLocation().substring(0, 8));
            assertEquals(MockMetacard.DEFAULT_LOCATION.substring(0, 8), newCard.getLocation().substring(0, 8));
            // Metadata
            assertNotNull(oldCard.getMetadata());
            assertNotNull(newCard.getMetadata());
            assertTrue(!oldCard.getMetadata().isEmpty());
            assertTrue(!newCard.getMetadata().isEmpty());
            // Created Date
            assertFalse(oldCard.getCreatedDate().after(new Date()));
            assertFalse(newCard.getCreatedDate().after(new Date()));
            assertTrue(newCard.getCreatedDate().after(oldCard.getCreatedDate()));
            // Modified Date
            assertTrue(newCard.getModifiedDate().after(oldCard.getModifiedDate()));
            // Effective Date
            assertTrue(newCard.getEffectiveDate().after(oldCard.getEffectiveDate()));
            // Expiration Date
            assertTrue(newCard.getExpirationDate().after(oldCard.getExpirationDate()));
            // Thumbnail
            assertTrue(Arrays.equals(newCard.getThumbnail(), oldCard.getThumbnail()));
        } else {
            Assert.fail("Expecting one or the other of the updated records.");
        }
    }
    /** READ **/
    CommonQueryBuilder builder = new CommonQueryBuilder();
    QueryImpl query = builder.queryByProperty(Metacard.RESOURCE_URI, uri2);
    QueryRequestImpl queryRequest = new QueryRequestImpl(query);
    SourceResponse sourceResponse = provider.query(queryRequest);
    assertEquals(1, sourceResponse.getResults().size());
    for (Result r : sourceResponse.getResults()) {
        assertTrue(r.getMetacard().getMetadata().indexOf("Cardinals") != ALL_RESULTS);
        assertEquals(uri2, r.getMetacard().getResourceURI().toString());
    }
    /** UPDATE with null thumbnail **/
    updatedMetacard1.setThumbnail(null);
    updateResponse = update(updatedMetacard1.getId(), updatedMetacard1);
    assertEquals("Testing Update operation: ", 1, updateResponse.getUpdatedMetacards().size());
    Metacard newCard = updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    Metacard oldCard = updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    assertNotNull(oldCard.getThumbnail());
    assertEquals(null, newCard.getThumbnail());
    /** UPDATE with null WKT **/
    // updatedMetacard1.setLocation(null);
    // updateResponse = provider.update(new
    // UpdateRequestImpl(updatedMetacard1.getId(), updatedMetacard1));
    //
    //
    //
    // assertEquals("Testing Update operation: ", 1,
    // updateResponse.getUpdatedMetacards().size());
    //
    // newCard =
    // updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    // oldCard =
    // updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    //
    // assertNotNull(oldCard.getResourceURI());
    // assertNotNull(newCard.getResourceURI());
    // assertEquals(oldCard.getResourceURI().toString(),
    // newCard.getResourceURI().toString());
    // assertEquals(provider.getId(), oldCard.getSourceId());
    // assertEquals(provider.getId(), newCard.getSourceId());
    // LOGGER.info("New Metacard location: {}", newCard.getLocation());
    // LOGGER.info("Old Metacard location: {}", oldCard.getLocation());
    // assertTrue(oldCard.getLocation().contains("POINT"));
    // assertEquals(null, newCard.getLocation());
    /** UPDATE with null expiration date **/
    updatedMetacard1.setExpirationDate(null);
    updateResponse = update(updatedMetacard1.getId(), updatedMetacard1);
    assertEquals("Testing Update operation: ", ONE_HIT, updateResponse.getUpdatedMetacards().size());
    newCard = updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    oldCard = updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    assertNotNull(oldCard.getExpirationDate());
    assertEquals(null, newCard.getExpirationDate());
    /** UPDATE with null content type **/
    updatedMetacard1.setContentTypeName(null);
    updateResponse = update(updatedMetacard1.getId(), updatedMetacard1);
    assertEquals("Testing Update operation: ", ONE_HIT, updateResponse.getUpdatedMetacards().size());
    newCard = updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    oldCard = updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    assertNotNull(oldCard.getContentTypeName());
    assertThat(newCard.getContentTypeName(), nullValue());
    /** UPDATE with empty content type **/
    updatedMetacard1.setContentTypeName("");
    updateResponse = update(updatedMetacard1.getId(), updatedMetacard1);
    assertEquals("Testing Update operation: ", ONE_HIT, updateResponse.getUpdatedMetacards().size());
    newCard = updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    oldCard = updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    assertThat(oldCard.getContentTypeName(), nullValue());
    assertThat(newCard.getContentTypeName(), is(""));
    /** UPDATE with null content type version **/
    updatedMetacard1.setContentTypeVersion(null);
    updateResponse = update(updatedMetacard1.getId(), updatedMetacard1);
    assertEquals("Testing Update operation: ", ONE_HIT, updateResponse.getUpdatedMetacards().size());
    newCard = updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    oldCard = updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    assertNotNull(oldCard.getContentTypeVersion());
    assertThat(newCard.getContentTypeVersion(), nullValue());
    /** UPDATE with empty content type version **/
    updatedMetacard1.setContentTypeVersion("");
    updateResponse = update(updatedMetacard1.getId(), updatedMetacard1);
    assertEquals("Testing Update operation: ", ONE_HIT, updateResponse.getUpdatedMetacards().size());
    newCard = updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    oldCard = updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    assertThat(oldCard.getContentTypeVersion(), nullValue());
    assertThat(newCard.getContentTypeVersion(), is(""));
    /** UPDATE with new resource uri **/
    updatedMetacard1.setResourceURI(new URI(uri1 + "Now"));
    updateResponse = update(updatedMetacard1.getId(), updatedMetacard1);
    assertEquals("Testing Update operation: ", ONE_HIT, updateResponse.getUpdatedMetacards().size());
    newCard = updateResponse.getUpdatedMetacards().get(0).getNewMetacard();
    oldCard = updateResponse.getUpdatedMetacards().get(0).getOldMetacard();
    assertThat(oldCard.getResourceURI(), is(nullValue()));
    assertEquals(uri1 + "Now", newCard.getResourceURI().toString());
    /** TEST NULL UPDATE **/
    updateResponse = provider.update(new UpdateRequest() {

        @Override
        public boolean hasProperties() {
            return false;
        }

        @Override
        public Serializable getPropertyValue(String name) {
            return null;
        }

        @Override
        public Set<String> getPropertyNames() {
            return null;
        }

        @Override
        public Map<String, Serializable> getProperties() {
            return null;
        }

        @Override
        public boolean containsPropertyName(String name) {
            return false;
        }

        @Override
        public List<Entry<Serializable, Metacard>> getUpdates() {
            return null;
        }

        @Override
        public String getAttributeName() {
            return UpdateRequest.UPDATE_BY_ID;
        }
    });
    assertTrue(updateResponse.getUpdatedMetacards().isEmpty());
}
Also used : Serializable(java.io.Serializable) SourceResponse(ddf.catalog.operation.SourceResponse) UpdateRequest(ddf.catalog.operation.UpdateRequest) CreateResponse(ddf.catalog.operation.CreateResponse) Matchers.containsString(org.hamcrest.Matchers.containsString) Update(ddf.catalog.operation.Update) URI(java.net.URI) Date(java.util.Date) Result(ddf.catalog.data.Result) UpdateResponse(ddf.catalog.operation.UpdateResponse) Metacard(ddf.catalog.data.Metacard) QueryImpl(ddf.catalog.operation.impl.QueryImpl) Entry(java.util.Map.Entry) SimpleEntry(java.util.AbstractMap.SimpleEntry) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) Test(org.junit.Test)

Example 10 with UpdateResponse

use of ddf.catalog.operation.UpdateResponse in project ddf by codice.

the class SolrProviderTest method testUpdateOperationWithNoResults.

/**
     * Testing that if no records are found to update, the provider returns an empty list.
     *
     * @throws IngestException
     * @throws UnsupportedQueryException
     */
@Test
public void testUpdateOperationWithNoResults() throws IngestException, UnsupportedQueryException {
    deleteAllIn(provider);
    MockMetacard metacard = new MockMetacard(Library.getFlagstaffRecord());
    UpdateResponse response = update("BAD_ID", metacard);
    assertEquals(0, response.getUpdatedMetacards().size());
}
Also used : UpdateResponse(ddf.catalog.operation.UpdateResponse) Test(org.junit.Test)

Aggregations

UpdateResponse (ddf.catalog.operation.UpdateResponse)57 Test (org.junit.Test)38 Metacard (ddf.catalog.data.Metacard)36 HashMap (java.util.HashMap)24 UpdateRequest (ddf.catalog.operation.UpdateRequest)22 Serializable (java.io.Serializable)22 ArrayList (java.util.ArrayList)22 Update (ddf.catalog.operation.Update)21 UpdateRequestImpl (ddf.catalog.operation.impl.UpdateRequestImpl)15 List (java.util.List)15 UpdateStorageRequest (ddf.catalog.content.operation.UpdateStorageRequest)14 CreateResponse (ddf.catalog.operation.CreateResponse)13 DeletedMetacard (ddf.catalog.core.versioning.DeletedMetacard)11 Map (java.util.Map)11 ContentItem (ddf.catalog.content.data.ContentItem)10 UpdateStorageResponse (ddf.catalog.content.operation.UpdateStorageResponse)10 Result (ddf.catalog.data.Result)10 IngestException (ddf.catalog.source.IngestException)10 DeleteResponse (ddf.catalog.operation.DeleteResponse)9 UpdateResponseImpl (ddf.catalog.operation.impl.UpdateResponseImpl)9