Search in sources :

Example 41 with MetacardTransformer

use of ddf.catalog.transform.MetacardTransformer in project ddf by codice.

the class AtomTransformerTest method testMetacardTransformerBytesZero.

@Test
public void testMetacardTransformerBytesZero() throws IOException, CatalogTransformerException, XpathException, SAXException {
    // given
    MetacardTransformer metacardTransformer = mock(MetacardTransformer.class);
    BinaryContent metacardTransformation = mock(BinaryContent.class);
    when(metacardTransformation.getByteArray()).thenReturn(new byte[0]);
    when(metacardTransformer.transform(isA(Metacard.class), isNull())).thenReturn(metacardTransformation);
    AtomTransformer transformer = getConfiguredAtomTransformer(metacardTransformer, true);
    SourceResponse response = getSourceResponseStub(SAMPLE_ID, null);
    // when
    BinaryContent binaryContent = transformer.transform(response, null);
    // then
    assertThat(binaryContent.getMimeType(), is(AtomTransformer.MIME_TYPE));
    byte[] bytes = binaryContent.getByteArray();
    String output = new String(bytes);
    assertFeedCompliant(output);
    assertEntryCompliant(output);
    validateAgainstAtomSchema(bytes);
    assertXpathEvaluatesTo(TEXT_TYPE, "/atom:feed/atom:entry/atom:content/@type", output);
    assertXpathEvaluatesTo(SAMPLE_ID, "/atom:feed/atom:entry/atom:content", output);
}
Also used : Metacard(ddf.catalog.data.Metacard) MetacardTransformer(ddf.catalog.transform.MetacardTransformer) SourceResponse(ddf.catalog.operation.SourceResponse) BinaryContent(ddf.catalog.data.BinaryContent) Test(org.junit.Test)

Example 42 with MetacardTransformer

use of ddf.catalog.transform.MetacardTransformer in project ddf by codice.

the class AtomTransformerTest method testTotalResultsNegative.

@Test
public void testTotalResultsNegative() throws IOException, CatalogTransformerException, XpathException, SAXException {
    // given
    AtomTransformer transformer = new AtomTransformer();
    MetacardTransformer metacardTransformer = getXmlMetacardTransformerStub();
    transformer.setMetacardTransformer(metacardTransformer);
    setDefaultSystemConfiguration();
    SourceResponse response = mock(SourceResponse.class);
    when(response.getHits()).thenReturn(new Long(-1));
    QueryImpl query = new QueryImpl(FILTER_BUILDER.attribute(Metacard.METADATA).text("you"));
    query.setPageSize(1);
    query.setStartIndex(2);
    query.setRequestsTotalResultsCount(true);
    QueryRequestImpl queryRequestImpl = new QueryRequestImpl(query);
    when(response.getRequest()).thenReturn(queryRequestImpl);
    ResultImpl result1 = new ResultImpl();
    MetacardStub metacard = new MetacardStub("");
    metacard.setId(SAMPLE_ID);
    result1.setMetacard(metacard);
    when(response.getResults()).thenReturn(Arrays.asList((Result) result1));
    // when
    BinaryContent binaryContent = transformer.transform(response, null);
    // then
    assertThat(binaryContent.getMimeType(), is(AtomTransformer.MIME_TYPE));
    byte[] bytes = binaryContent.getByteArray();
    String output = new String(bytes);
    assertFeedCompliant(output);
    assertEntryCompliant(output);
    validateAgainstAtomSchema(bytes);
    assertXpathNotExists("/atom:feed/os:totalResults", output);
}
Also used : QueryImpl(ddf.catalog.operation.impl.QueryImpl) MetacardTransformer(ddf.catalog.transform.MetacardTransformer) SourceResponse(ddf.catalog.operation.SourceResponse) QueryRequestImpl(ddf.catalog.operation.impl.QueryRequestImpl) ResultImpl(ddf.catalog.data.impl.ResultImpl) BinaryContent(ddf.catalog.data.BinaryContent) Result(ddf.catalog.data.Result) Test(org.junit.Test)

Example 43 with MetacardTransformer

use of ddf.catalog.transform.MetacardTransformer in project ddf by codice.

the class AtomTransformerTest method testMetacardIsNull.

/**
 * The following rules must be followed in order to be compliant with the Atom specification as
 * defined by http://tools.ietf.org/html/rfc4287#section-4.1.2 <br>
 * "The following child elements are defined by this specification (note that the presence of some
 * of these elements is required):
 *
 * <p>
 * <li/>atom:entry elements MUST contain one or more atom:author elements, unless the atom:entry
 *     contains an atom:source element that contains an atom:author element or, in an Atom Feed
 *     Document, the atom:feed element contains an atom:author element itself.
 *
 *     <p>
 * <li/>atom:entry elements MAY contain any number of atom:category elements.
 *
 *     <p>
 * <li/>atom:entry elements MUST NOT contain more than one atom:content element.
 *
 *     <p>
 * <li/>atom:entry elements MAY contain any number of atom:contributor elements.
 *
 *     <p>
 * <li/>atom:entry elements MUST contain exactly one atom:id element.
 *
 *     <p>
 * <li/>atom:entry elements that contain no child atom:content element MUST contain at least one
 *     atom:link element with a rel attribute value of "alternate".
 *
 *     <p>
 * <li/>atom:entry elements MUST NOT contain more than one atom:link element with a rel attribute
 *     value of "alternate" that has the same combination of type and hreflang attribute values.
 *
 *     <p>
 * <li/>atom:entry elements MAY contain additional atom:link elements beyond those described
 *     above.
 *
 *     <p>
 * <li/>atom:entry elements MUST NOT contain more than one atom:published element.
 *
 *     <p>
 * <li/>atom:entry elements MUST NOT contain more than one atom:rights element.
 *
 *     <p>
 * <li/>atom:entry elements MUST NOT contain more than one atom:source element.
 *
 *     <p>
 * <li/>atom:entry elements MUST contain an atom:summary element in either of the following cases:
 *
 *     <p>
 *
 *     <ul>
 *       the atom:entry contains an atom:content that has a "src" attribute (and is thus empty).
 * </ul>
 *
 * <p>
 *
 * <ul>
 *   the atom:entry contains content that is encoded in Base64; i.e., the "type" attribute of
 *   atom:content is a MIME media type [MIMEREG], but is not an XML media type [RFC3023], does not
 *   begin with "text/", and does not end with "/xml" or "+xml".
 * </ul>
 *
 * <p>
 * <li/>atom:entry elements MUST NOT contain more than one atom:summary element.
 *
 *     <p>
 * <li/>atom:entry elements MUST contain exactly one atom:title element.
 *
 *     <p>
 * <li/>atom:entry elements MUST contain exactly one atom:updated element."
 *
 * @throws CatalogTransformerException
 * @throws IOException
 * @throws SAXException
 * @throws XpathException
 */
@Test
public void testMetacardIsNull() throws IOException, CatalogTransformerException, XpathException, SAXException {
    // given
    AtomTransformer transformer = new AtomTransformer();
    MetacardTransformer metacardTransformer = getXmlMetacardTransformerStub();
    transformer.setMetacardTransformer(metacardTransformer);
    setDefaultSystemConfiguration();
    SourceResponse response = mock(SourceResponse.class);
    when(response.getRequest()).thenReturn(getStubRequest());
    ResultImpl result1 = new ResultImpl();
    ResultImpl result2 = new ResultImpl();
    MetacardStub metacard = new MetacardStub("");
    metacard.setId(SAMPLE_ID);
    metacard.setSourceId(SAMPLE_SOURCE_ID);
    result1.setMetacard(metacard);
    result2.setMetacard(null);
    when(response.getResults()).thenReturn(Arrays.asList((Result) result1, result2));
    // when
    BinaryContent binaryContent = transformer.transform(response, null);
    // then
    byte[] bytes = binaryContent.getByteArray();
    /* used to visualize */
    IOUtils.write(bytes, new FileOutputStream(new File(TARGET_FOLDER + getMethodName() + ATOM_EXTENSION)));
    String output = new String(bytes);
    assertFeedCompliant(output);
    assertEntryCompliant(output);
    validateAgainstAtomSchema(bytes);
    assertXpathEvaluatesTo(SAMPLE_SOURCE_ID, "/atom:feed/atom:entry/fs:resultSource/@fs:sourceId", output);
    assertXpathEvaluatesTo("", "/atom:feed/atom:entry/fs:resultSource", output);
    assertXpathEvaluatesTo(AtomTransformer.URN_CATALOG_ID + SAMPLE_ID, "/atom:feed/atom:entry/atom:id", output);
    assertXpathEvaluatesTo(MetacardStub.DEFAULT_TITLE, "/atom:feed/atom:entry/atom:title", output);
    assertXpathExists("/atom:feed/atom:entry/atom:updated", output);
    assertXpathExists("/atom:feed/atom:entry/atom:content", output);
}
Also used : MetacardTransformer(ddf.catalog.transform.MetacardTransformer) SourceResponse(ddf.catalog.operation.SourceResponse) FileOutputStream(java.io.FileOutputStream) ResultImpl(ddf.catalog.data.impl.ResultImpl) BinaryContent(ddf.catalog.data.BinaryContent) File(java.io.File) Result(ddf.catalog.data.Result) Test(org.junit.Test)

Example 44 with MetacardTransformer

use of ddf.catalog.transform.MetacardTransformer in project ddf by codice.

the class AtomTransformerTest method getXmlMetacardTransformerStub.

private MetacardTransformer getXmlMetacardTransformerStub() throws IOException, CatalogTransformerException {
    MetacardTransformer metacardTransformer = mock(MetacardTransformer.class);
    BinaryContent metacardTransformation = mock(BinaryContent.class);
    when(metacardTransformation.getByteArray()).thenReturn("<sample:note xmlns:sample=\"http://www.lockheedmartin.com/schema/sample\"><to>me</to><from>you</from></sample:note>".getBytes());
    when(metacardTransformer.transform(isA(Metacard.class), isA(Map.class))).thenReturn(metacardTransformation);
    return metacardTransformer;
}
Also used : Metacard(ddf.catalog.data.Metacard) MetacardTransformer(ddf.catalog.transform.MetacardTransformer) BinaryContent(ddf.catalog.data.BinaryContent) Map(java.util.Map) HashMap(java.util.HashMap)

Example 45 with MetacardTransformer

use of ddf.catalog.transform.MetacardTransformer in project ddf by codice.

the class AtomTransformerTest method testMetacardTransformerThrowsIoException.

@Test
public void testMetacardTransformerThrowsIoException() throws IOException, CatalogTransformerException, XpathException, SAXException {
    // given
    MetacardTransformer metacardTransformer = mock(MetacardTransformer.class);
    BinaryContent metacardTransformation = mock(BinaryContent.class);
    when(metacardTransformation.getByteArray()).thenThrow(IOException.class);
    when(metacardTransformer.transform(isA(Metacard.class), isNull())).thenReturn(metacardTransformation);
    AtomTransformer transformer = getConfiguredAtomTransformer(metacardTransformer, true);
    SourceResponse response = getSourceResponseStub(SAMPLE_ID, null);
    // when
    BinaryContent binaryContent = transformer.transform(response, null);
    // then
    assertThat(binaryContent.getMimeType(), is(AtomTransformer.MIME_TYPE));
    byte[] bytes = binaryContent.getByteArray();
    String output = new String(bytes);
    assertFeedCompliant(output);
    assertEntryCompliant(output);
    validateAgainstAtomSchema(bytes);
    assertXpathEvaluatesTo(TEXT_TYPE, "/atom:feed/atom:entry/atom:content/@type", output);
    assertXpathEvaluatesTo(SAMPLE_ID, "/atom:feed/atom:entry/atom:content", output);
}
Also used : Metacard(ddf.catalog.data.Metacard) MetacardTransformer(ddf.catalog.transform.MetacardTransformer) SourceResponse(ddf.catalog.operation.SourceResponse) BinaryContent(ddf.catalog.data.BinaryContent) Test(org.junit.Test)

Aggregations

MetacardTransformer (ddf.catalog.transform.MetacardTransformer)54 BinaryContent (ddf.catalog.data.BinaryContent)48 Test (org.junit.Test)40 SourceResponse (ddf.catalog.operation.SourceResponse)38 Metacard (ddf.catalog.data.Metacard)28 Result (ddf.catalog.data.Result)25 ResultImpl (ddf.catalog.data.impl.ResultImpl)20 FileOutputStream (java.io.FileOutputStream)18 File (java.io.File)17 HashMap (java.util.HashMap)15 Map (java.util.Map)10 CatalogTransformerException (ddf.catalog.transform.CatalogTransformerException)7 MetacardImpl (ddf.catalog.data.impl.MetacardImpl)5 Action (ddf.action.Action)4 ActionProvider (ddf.action.ActionProvider)4 BinaryContentImpl (ddf.catalog.data.impl.BinaryContentImpl)4 QueryImpl (ddf.catalog.operation.impl.QueryImpl)4 QueryRequestImpl (ddf.catalog.operation.impl.QueryRequestImpl)4 Serializable (java.io.Serializable)4 URL (java.net.URL)4