You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2018/02/24 16:22:51 UTC
svn commit: r1825260 [9/14] - in /sis/branches/JDK9: ./
application/sis-console/src/test/java/org/apache/sis/console/
core/sis-build-helper/src/main/resources/org/apache/sis/internal/book/
core/sis-metadata/ core/sis-metadata/src/main/java/org/apache/s...
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -24,6 +24,7 @@ import org.apache.sis.xml.XML;
import org.apache.sis.xml.Namespaces;
import org.apache.sis.xml.MarshallerPool;
import org.apache.sis.util.logging.WarningListener;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
import org.apache.sis.test.XMLTestCase;
import org.junit.Test;
@@ -36,7 +37,8 @@ import static org.apache.sis.test.TestUt
* Tests {@link DefaultLegalConstraints}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.4
* @module
*/
@@ -79,7 +81,7 @@ public final strictfp class DefaultLegal
}
/**
- * Unmarshalls the given XML fragment.
+ * Unmarshals the given XML fragment.
*/
private DefaultLegalConstraints unmarshal(final String xml) throws JAXBException {
final MarshallerPool pool = getMarshallerPool();
@@ -101,14 +103,14 @@ public final strictfp class DefaultLegal
@Test
public void testUnmarshallEmptyCodeListValue() throws JAXBException {
final DefaultLegalConstraints c = unmarshal(
- "<gmd:MD_LegalConstraints xmlns:gmd=\"" + Namespaces.GMD + "\">\n" +
- " <gmd:accessConstraints>\n" +
- " <gmd:MD_RestrictionCode codeListValue=\"intellectualPropertyRights\" codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#MD_RestrictionCode\"/>\n" +
- " </gmd:accessConstraints>\n" +
- " <gmd:useConstraints>\n" + // Below is an intentionally empty code list value (SIS-157)
- " <gmd:MD_RestrictionCode codeListValue=\"\" codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#MD_RestrictionCode\"/>\n" +
- " </gmd:useConstraints>\n" +
- "</gmd:MD_LegalConstraints>");
+ "<mco:MD_LegalConstraints xmlns:mco=\"" + Namespaces.MCO + "\">\n" +
+ " <mco:accessConstraints>\n" +
+ " <mco:MD_RestrictionCode codeListValue=\"intellectualPropertyRights\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_RestrictionCode\"/>\n" +
+ " </mco:accessConstraints>\n" +
+ " <mco:useConstraints>\n" + // Below is an intentionally empty code list value (SIS-157)
+ " <mco:MD_RestrictionCode codeListValue=\"\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_RestrictionCode\"/>\n" +
+ " </mco:useConstraints>\n" +
+ "</mco:MD_LegalConstraints>");
/*
* Verify metadata property.
*/
@@ -130,8 +132,28 @@ public final strictfp class DefaultLegal
*/
@Test
public void testLicenceCode() throws JAXBException {
- final String xml =
- "<gmd:MD_LegalConstraints xmlns:gmd=\"" + Namespaces.GMD + "\">\n" +
+ String xml =
+ "<mco:MD_LegalConstraints xmlns:mco=\"" + Namespaces.MCO + "\">\n" +
+ " <mco:useConstraints>\n" +
+ " <mco:MD_RestrictionCode"
+ + " codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_RestrictionCode\""
+ + " codeListValue=\"licence\""
+ + " codeSpace=\"eng\">Licence</mco:MD_RestrictionCode>\n" +
+ " </mco:useConstraints>\n" +
+ "</mco:MD_LegalConstraints>\n";
+
+ final DefaultLegalConstraints c = new DefaultLegalConstraints();
+ c.setUseConstraints(singleton(Restriction.LICENCE));
+ assertXmlEquals(xml, marshal(c), "xmlns:*");
+ DefaultLegalConstraints actual = unmarshal(xml);
+ assertSame(Restriction.LICENCE, getSingleton(actual.getUseConstraints()));
+ assertEquals(c, actual);
+ /*
+ * Above code tested ISO 19115-3 (un)marshalling. Code below test legacy ISO 19139:2007 (un)marshalling.
+ * This is where the spelling difference appears. At unmarshalling, verify that we got back the original
+ * LICENCE code, not a new "LICENSE" code.
+ */
+ xml = "<gmd:MD_LegalConstraints xmlns:gmd=\"" + LegacyNamespaces.GMD + "\">\n" +
" <gmd:useConstraints>\n" +
" <gmd:MD_RestrictionCode"
+ " codeList=\"http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode\""
@@ -140,13 +162,8 @@ public final strictfp class DefaultLegal
" </gmd:useConstraints>\n" +
"</gmd:MD_LegalConstraints>\n";
- final DefaultLegalConstraints c = new DefaultLegalConstraints();
- c.setUseConstraints(singleton(Restriction.LICENCE));
- assertXmlEquals(xml, marshal(c), "xmlns:*");
- /*
- * Unmarshall and ensure that we got back the original LICENCE code, not a new "LICENSE" code.
- */
- final DefaultLegalConstraints actual = unmarshal(xml);
+ assertXmlEquals(xml, marshal(c, VERSION_2007), "xmlns:*");
+ actual = unmarshal(xml);
assertSame(Restriction.LICENCE, getSingleton(actual.getUseConstraints()));
assertEquals(c, actual);
}
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/DefaultExtentTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/DefaultExtentTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/DefaultExtentTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/DefaultExtentTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -18,9 +18,9 @@ package org.apache.sis.metadata.iso.exte
import java.net.URL;
import java.util.Arrays;
-import java.io.IOException;
import javax.xml.bind.JAXBException;
import org.opengis.metadata.extent.Extent;
+import org.apache.sis.util.Version;
import org.apache.sis.util.iso.SimpleInternationalString;
import org.apache.sis.xml.IdentifierSpace;
import org.apache.sis.xml.Namespaces;
@@ -38,24 +38,22 @@ import static org.apache.sis.test.TestUt
*
* @author Cédric Briançon (Geomatys)
* @author Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.3
* @module
*/
@DependsOn(DefaultGeographicBoundingBoxTest.class)
public final strictfp class DefaultExtentTest extends XMLTestCase {
/**
- * Returns the URL to the XML file of the given name.
- * The argument shall be one of the files listed in the following directory:
+ * Returns the URL to a test file in XML.
+ * This is used for test methods outside this {@code DefaultExtentTest} file.
*
- * <ul>
- * <li>{@code "core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/extent"}</li>
- * </ul>
- *
- * @param filename the name of the XML file.
- * @return the URL to the given XML file.
+ * @param legacy {@code true} for legacy ISO 19139:2007 format, or {@code false} for ISO 19115-3 format.
+ * @return URL to a test file in XML.
*/
- public static URL getResource(final String filename) {
+ public static URL getTestFile(final boolean legacy) {
+ final String filename = legacy ? "Extent (legacy).xml" : "Extent.xml";
final URL resource = DefaultExtentTest.class.getResource(filename);
assertNotNull(filename, resource);
return resource;
@@ -102,11 +100,27 @@ public final strictfp class DefaultExten
* <p><b>XML test file:</b>
* {@code "core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/extent/Extent.xml"}</p>
*
- * @throws IOException if an error occurred while reading the XML file.
* @throws JAXBException if an error occurred during the during marshalling / unmarshalling processes.
*/
@Test
- public void testXML() throws IOException, JAXBException {
+ public void testXML() throws JAXBException {
+ roundtrip("Extent.xml", VERSION_2014);
+ }
+
+ /**
+ * Tests the (un)marshalling of a {@code <gmd:EX_Extent>} object using the legacy ISO 19139:2007 schema.
+ *
+ * @throws JAXBException if an error occurred during the during marshalling / unmarshalling processes.
+ */
+ @Test
+ public void testLegacyXML() throws JAXBException {
+ roundtrip("Extent (legacy).xml", VERSION_2007);
+ }
+
+ /**
+ * Compares the marshalling and unmarshalling of a {@link DefaultExtent} with XML in the given file.
+ */
+ private void roundtrip(final String filename, final Version version) throws JAXBException {
final DefaultGeographicBoundingBox bbox = new DefaultGeographicBoundingBox(-99, -79, 14.9844, 31);
bbox.getIdentifierMap().put(IdentifierSpace.ID, "bbox");
final DefaultTemporalExtent temporal = new DefaultTemporalExtent();
@@ -115,44 +129,34 @@ public final strictfp class DefaultExten
temporal.setBounds(date("2010-01-27 13:26:10"), date("2010-08-27 13:26:10"));
}
final DefaultExtent extent = new DefaultExtent(null, bbox, null, temporal);
- /*
- * XML marshalling, and compare with the content of "ProcessStep.xml" file.
- */
- final String xml = marshal(extent);
- assertTrue(xml.startsWith("<?xml"));
- assertXmlEquals(getResource("Extent.xml"), xml, "xmlns:*", "xsi:schemaLocation");
- /*
- * Final comparison: ensure that we didn't lost any information.
- */
- assertEquals(extent, unmarshal(DefaultExtent.class, xml));
+ assertMarshalEqualsFile(filename, extent, version, "xmlns:*", "xsi:schemaLocation");
+ assertEquals(extent, unmarshalFile(DefaultExtent.class, filename));
}
/**
* Tests XML marshalling of the {@link Extents#WORLD} constant, which is a {@code DefaultExtent} instance.
*
* @throws JAXBException if an error occurred during the during marshalling / unmarshalling processes.
- *
- * @since 0.6
*/
@Test
public void testWorldConstant() throws JAXBException {
final String xml = marshal(Extents.WORLD);
- assertXmlEquals("<gmd:EX_Extent" +
- " xmlns:gco=\"" + Namespaces.GCO + '"' +
- " xmlns:gmd=\"" + Namespaces.GMD + "\">\n" +
- " <gmd:description>\n" +
+ assertXmlEquals("<gex:EX_Extent" +
+ " xmlns:gex=\"" + Namespaces.GEX + '"' +
+ " xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
+ " <gex:description>\n" +
" <gco:CharacterString>World</gco:CharacterString>\n" +
- " </gmd:description>\n" +
- " <gmd:geographicElement>\n" +
- " <gmd:EX_GeographicBoundingBox>\n" +
- " <gmd:extentTypeCode> <gco:Boolean> true </gco:Boolean></gmd:extentTypeCode>\n" +
- " <gmd:westBoundLongitude><gco:Decimal> -180 </gco:Decimal></gmd:westBoundLongitude>\n" +
- " <gmd:eastBoundLongitude><gco:Decimal> 180 </gco:Decimal></gmd:eastBoundLongitude>\n" +
- " <gmd:southBoundLatitude><gco:Decimal> -90 </gco:Decimal></gmd:southBoundLatitude>\n" +
- " <gmd:northBoundLatitude><gco:Decimal> 90 </gco:Decimal></gmd:northBoundLatitude>\n" +
- " </gmd:EX_GeographicBoundingBox>\n" +
- " </gmd:geographicElement>\n" +
- "</gmd:EX_Extent>",
+ " </gex:description>\n" +
+ " <gex:geographicElement>\n" +
+ " <gex:EX_GeographicBoundingBox>\n" +
+ " <gex:extentTypeCode> <gco:Boolean> true </gco:Boolean></gex:extentTypeCode>\n" +
+ " <gex:westBoundLongitude><gco:Decimal> -180 </gco:Decimal></gex:westBoundLongitude>\n" +
+ " <gex:eastBoundLongitude><gco:Decimal> 180 </gco:Decimal></gex:eastBoundLongitude>\n" +
+ " <gex:southBoundLatitude><gco:Decimal> -90 </gco:Decimal></gex:southBoundLatitude>\n" +
+ " <gex:northBoundLatitude><gco:Decimal> 90 </gco:Decimal></gex:northBoundLatitude>\n" +
+ " </gex:EX_GeographicBoundingBox>\n" +
+ " </gex:geographicElement>\n" +
+ "</gex:EX_Extent>",
xml, "xmlns:*", "xsi:schemaLocation");
}
}
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -18,17 +18,19 @@ package org.apache.sis.metadata.iso.iden
import java.net.URI;
import java.io.StringReader;
-import java.io.StringWriter;
import java.util.logging.LogRecord;
+import javax.xml.bind.Marshaller;
import javax.xml.bind.JAXBException;
import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.stream.StreamResult;
+import org.opengis.metadata.identification.BrowseGraphic;
import org.apache.sis.util.logging.WarningListener;
import org.apache.sis.util.logging.Logging;
-import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.TestCase;
+import org.apache.sis.util.Version;
+import org.apache.sis.xml.MarshallerPool;
import org.apache.sis.xml.Namespaces;
import org.apache.sis.xml.XML;
+import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.DependsOnMethod;
import org.junit.Test;
import static org.apache.sis.test.Assert.*;
@@ -39,13 +41,39 @@ import static java.util.Collections.sing
* Tests {@link DefaultBrowseGraphic}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.4
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.4
* @module
*/
-public final strictfp class DefaultBrowseGraphicTest extends TestCase {
+public final strictfp class DefaultBrowseGraphicTest extends XMLTestCase {
/**
- * Tests XML marshalling of {@code <gmx:MimeFileType>} inside {@code <gmd:MD_BrowseGraphic>}.
+ * {@code false} if testing ISO 19115-3 document, or {@code true} if testing ISO 19139:2007 document.
+ */
+ private boolean legacy;
+
+ /**
+ * Verifies that marshalling the given metadata produces the expected XML document,
+ * then verifies that unmarshalling that document gives back the original metadata object.
+ * If {@link #legacy} is {@code true}, then this method will use ISO 19139:2007 schema.
+ */
+ private void roundtrip(final BrowseGraphic browse, String expected) throws JAXBException {
+ final String actual;
+ final Version version;
+ if (legacy) {
+ expected = toLegacyXML(expected);
+ version = VERSION_2007;
+ } else {
+ version = VERSION_2014;
+ }
+ actual = marshal(browse, version);
+ assertXmlEquals(expected, actual, "xmlns:*");
+ assertEquals(browse, unmarshal(BrowseGraphic.class, actual));
+ }
+
+ /**
+ * Tests XML marshalling of {@code <gcx:MimeFileType>} inside {@code <mcc:MD_BrowseGraphic>}.
+ * This method uses the XML schema defined by ISO 19115-3.
*
* @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
*/
@@ -53,124 +81,149 @@ public final strictfp class DefaultBrows
public void testMimeFileType() throws JAXBException {
final DefaultBrowseGraphic browse = new DefaultBrowseGraphic();
browse.setFileType("image/tiff");
- final String xml = XML.marshal(browse);
- assertXmlEquals(
- "<gmd:MD_BrowseGraphic xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gmx=\"" + Namespaces.GMX + "\">\n" +
- " <gmd:fileType>\n" +
- " <gmx:MimeFileType type=\"image/tiff\">image/tiff</gmx:MimeFileType>\n" +
- " </gmd:fileType>\n" +
- "</gmd:MD_BrowseGraphic>", xml, "xmlns:*");
- /*
- * Unmarshal the element back to a Java object and compare to the original.
- */
- assertEquals(browse, XML.unmarshal(xml));
+ roundtrip(browse,
+ "<mcc:MD_BrowseGraphic xmlns:mcc=\"" + Namespaces.MCC + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + "\">\n" +
+ " <mcc:fileType>\n" +
+ " <gcx:MimeFileType type=\"image/tiff\">image/tiff</gcx:MimeFileType>\n" +
+ " </mcc:fileType>\n" +
+ "</mcc:MD_BrowseGraphic>");
}
/**
- * Tests XML marshalling of {@code <gmx:FileName>} inside {@code <gmd:MD_BrowseGraphic>}.
+ * Tests XML marshalling of {@code <gmx:MimeFileType>} inside {@code <gmd:MD_BrowseGraphic>}.
+ * This method uses the XML schema defined by ISO 19139:2007.
+ *
+ * @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
+ */
+ @Test
+ @DependsOnMethod("testMimeFileType")
+ public void testMimeFileType_Legacy() throws JAXBException {
+ legacy = true;
+ testMimeFileType();
+ }
+
+ /**
+ * Tests XML marshalling of {@code <gcx:FileName>} inside {@code <mcc:MD_BrowseGraphic>}.
+ * This method uses the XML schema defined by ISO 19115-3.
*
* @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
*/
@Test
public void testFileName() throws JAXBException {
- final URI uri = URI.create("file:/catalog/image.png");
- final DefaultBrowseGraphic browse = new DefaultBrowseGraphic(uri);
- final String xml = XML.marshal(browse);
- assertXmlEquals(
- "<gmd:MD_BrowseGraphic xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gmx=\"" + Namespaces.GMX + "\">\n" +
- " <gmd:fileName>\n" +
- " <gmx:FileName src=\"file:/catalog/image.png\">image.png</gmx:FileName>\n" +
- " </gmd:fileName>\n" +
- "</gmd:MD_BrowseGraphic>", xml, "xmlns:*");
- /*
- * Unmarshal the element back to a Java object and compare to the original.
- */
- assertEquals(browse, XML.unmarshal(xml));
+ roundtrip(new DefaultBrowseGraphic(URI.create("file:/catalog/image.png")),
+ "<mcc:MD_BrowseGraphic xmlns:mcc=\"" + Namespaces.MCC + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + "\">\n" +
+ " <mcc:fileName>\n" +
+ " <gcx:FileName src=\"file:/catalog/image.png\">image.png</gcx:FileName>\n" +
+ " </mcc:fileName>\n" +
+ "</mcc:MD_BrowseGraphic>");
}
/**
- * Tests unmarshalling of {@code <gmx:FileName>} without {@code src} attribute.
+ * Tests XML marshalling of {@code <gmx:FileName>} inside {@code <gmd:MD_BrowseGraphic>}.
+ * This method uses the XML schema defined by ISO 19139:2007.
+ *
+ * @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
+ */
+ @Test
+ @DependsOnMethod("testFileName")
+ public void testFileName_Legacy() throws JAXBException {
+ legacy = true;
+ testFileName();
+ }
+
+ /**
+ * Tests unmarshalling of {@code <gcx:FileName>} without {@code src} attribute.
*
* @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
*/
@Test
@DependsOnMethod("testFileName")
public void testFileNameWithoutSrc() throws JAXBException {
- final DefaultBrowseGraphic browse = (DefaultBrowseGraphic) XML.unmarshal(
- "<gmd:MD_BrowseGraphic xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gmx=\"" + Namespaces.GMX + "\">\n" +
- " <gmd:fileName>\n" +
- " <gmx:FileName>file:/catalog/image.png</gmx:FileName>\n" +
- " </gmd:fileName>\n" +
- "</gmd:MD_BrowseGraphic>");
+ final DefaultBrowseGraphic browse = unmarshal(DefaultBrowseGraphic.class,
+ "<mcc:MD_BrowseGraphic xmlns:mcc=\"" + Namespaces.MCC + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + "\">\n" +
+ " <mcc:fileName>\n" +
+ " <gcx:FileName>file:/catalog/image.png</gcx:FileName>\n" +
+ " </mcc:fileName>\n" +
+ "</mcc:MD_BrowseGraphic>");
assertEquals(URI.create("file:/catalog/image.png"), browse.getFileName());
}
/**
- * Tests XML marshalling of {@code <gmx:FileName>} and {@code <gmx:MimeFileType>} together.
+ * Tests XML marshalling of {@code <gcx:FileName>} and {@code <gcx:MimeFileType>} together.
+ * This method uses the XML schema defined by ISO 19115-3.
*
* @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
*/
@Test
@DependsOnMethod({"testFileName", "testMimeFileType"})
public void testFileNameAndType() throws JAXBException {
- final URI uri = URI.create("file:/catalog/image.png");
- final DefaultBrowseGraphic browse = new DefaultBrowseGraphic(uri);
+ final DefaultBrowseGraphic browse = new DefaultBrowseGraphic(URI.create("file:/catalog/image.png"));
browse.setFileType("image/tiff");
- final String xml = XML.marshal(browse);
- assertXmlEquals(
- "<gmd:MD_BrowseGraphic xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gmx=\"" + Namespaces.GMX + "\">\n" +
- " <gmd:fileName>\n" +
- " <gmx:FileName src=\"file:/catalog/image.png\">image.png</gmx:FileName>\n" +
- " </gmd:fileName>\n" +
- " <gmd:fileType>\n" +
- " <gmx:MimeFileType type=\"image/tiff\">image/tiff</gmx:MimeFileType>\n" +
- " </gmd:fileType>\n" +
- "</gmd:MD_BrowseGraphic>", xml, "xmlns:*");
- /*
- * Unmarshal the element back to a Java object and compare to the original.
- */
- assertEquals(browse, XML.unmarshal(xml));
+ roundtrip(browse,
+ "<mcc:MD_BrowseGraphic xmlns:mcc=\"" + Namespaces.MCC + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + "\">\n" +
+ " <mcc:fileName>\n" +
+ " <gcx:FileName src=\"file:/catalog/image.png\">image.png</gcx:FileName>\n" +
+ " </mcc:fileName>\n" +
+ " <mcc:fileType>\n" +
+ " <gcx:MimeFileType type=\"image/tiff\">image/tiff</gcx:MimeFileType>\n" +
+ " </mcc:fileType>\n" +
+ "</mcc:MD_BrowseGraphic>");
+ }
+
+ /**
+ * Tests XML marshalling of {@code <gmx:FileName>} and {@code <gmx:MimeFileType>} together.
+ * This method uses the XML schema defined by ISO 19139:2007.
+ *
+ * @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
+ */
+ @Test
+ @DependsOnMethod({"testFileName_Legacy", "testMimeFileType_Legacy"})
+ public void testFileNameAndType_Legacy() throws JAXBException {
+ legacy = true;
+ testFileNameAndType();
}
/**
* Tests XML marshalling of filename substituted by {@code <gco:CharacterString>}
- * inside {@code <gmd:MD_BrowseGraphic>}.
+ * inside {@code <mcc:MD_BrowseGraphic>}.
*
* @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
*/
@Test
@DependsOnMethod("testFileNameAndType")
public void testStringSubstitution() throws JAXBException {
- final URI uri = URI.create("file:/catalog/image.png");
- final DefaultBrowseGraphic browse = new DefaultBrowseGraphic(uri);
+ final DefaultBrowseGraphic browse = new DefaultBrowseGraphic(URI.create("file:/catalog/image.png"));
browse.setFileType("image/tiff");
- final StringWriter buffer = new StringWriter();
- XML.marshal(browse, new StreamResult(buffer),
- singletonMap(XML.STRING_SUBSTITUTES, new String[] {"filename", "mimetype"}));
- final String xml = buffer.toString();
+
+ final MarshallerPool pool = getMarshallerPool();
+ final Marshaller marshaller = pool.acquireMarshaller();
+ marshaller.setProperty(XML.STRING_SUBSTITUTES, new String[] {"filename", "mimetype"});
+ final String xml = marshal(marshaller, browse);
+ pool.recycle(marshaller);
+
assertXmlEquals(
- "<gmd:MD_BrowseGraphic xmlns:gmd=\"" + Namespaces.GMD + '"' +
+ "<mcc:MD_BrowseGraphic xmlns:mcc=\"" + Namespaces.MCC + '"' +
" xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
- " <gmd:fileName>\n" +
+ " <mcc:fileName>\n" +
" <gco:CharacterString>file:/catalog/image.png</gco:CharacterString>\n" +
- " </gmd:fileName>\n" +
- " <gmd:fileType>\n" +
+ " </mcc:fileName>\n" +
+ " <mcc:fileType>\n" +
" <gco:CharacterString>image/tiff</gco:CharacterString>\n" +
- " </gmd:fileType>\n" +
- "</gmd:MD_BrowseGraphic>", xml, "xmlns:*");
+ " </mcc:fileType>\n" +
+ "</mcc:MD_BrowseGraphic>", xml, "xmlns:*");
/*
* Unmarshal the element back to a Java object and compare to the original.
*/
- assertEquals(browse, XML.unmarshal(xml));
+ assertEquals(browse, unmarshal(BrowseGraphic.class, xml));
}
/**
- * Tests the unmarshaller with the same URI in both {@code <gco:CharacterString>} and {@code <gmx:FileName>}.
+ * Tests the unmarshaller with the same URI in both {@code <gco:CharacterString>} and {@code <gcx:FileName>}.
* Since the URI is the same, the unmarshaller should not produce any warning since there is no ambiguity.
*
* @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
@@ -180,14 +233,14 @@ public final strictfp class DefaultBrows
public void testDuplicatedValues() throws JAXBException {
final Warning listener = new Warning();
final DefaultBrowseGraphic browse = listener.unmarshal(
- "<gmd:MD_BrowseGraphic xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gmx=\"" + Namespaces.GMX + '"' +
+ "<mcc:MD_BrowseGraphic xmlns:mcc=\"" + Namespaces.MCC + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + '"' +
" xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
- " <gmd:fileName>\n" +
- " <gmx:FileName src=\"file:/catalog/image.png\">image.png</gmx:FileName>\n" +
+ " <mcc:fileName>\n" +
+ " <gcx:FileName src=\"file:/catalog/image.png\">image.png</gcx:FileName>\n" +
" <gco:CharacterString>file:/catalog/image.png</gco:CharacterString>\n" +
- " </gmd:fileName>\n" +
- "</gmd:MD_BrowseGraphic>");
+ " </mcc:fileName>\n" +
+ "</mcc:MD_BrowseGraphic>");
assertEquals(URI.create("file:/catalog/image.png"), browse.getFileName());
assertFalse("Expected no warning.", listener.receivedWarning);
@@ -195,21 +248,21 @@ public final strictfp class DefaultBrows
/**
* Ensures that the unmarshaller produces a warning when {@code <gco:CharacterString>} and
- * {@code <gmx:FileName>} both exist inside the same {@code <gmd:MD_BrowseGraphic>}.
+ * {@code <gcx:FileName>} both exist inside the same {@code <gmd:MD_BrowseGraphic>}.
*
* @throws JAXBException if an error occurred while (un)marshalling the {@code BrowseGraphic}.
*/
@Test
@DependsOnMethod("testStringSubstitution")
public void testWarnings() throws JAXBException {
- testWarnings("<gmx:FileName src=\"file:/catalog/image.png\">image.png</gmx:FileName>",
+ testWarnings("<gcx:FileName src=\"file:/catalog/image.png\">image.png</gcx:FileName>",
"<gco:CharacterString>file:/catalog/image2.png</gco:CharacterString>");
/*
* Test again with the same element value, but in reverse order.
* We do that for ensuring that FileName still has precedence.
*/
testWarnings("<gco:CharacterString>file:/catalog/image2.png</gco:CharacterString>",
- "<gmx:FileName src=\"file:/catalog/image.png\">image.png</gmx:FileName>");
+ "<gcx:FileName src=\"file:/catalog/image.png\">image.png</gcx:FileName>");
}
/**
@@ -218,14 +271,14 @@ public final strictfp class DefaultBrows
private void testWarnings(final String first, final String second) throws JAXBException {
final Warning listener = new Warning();
final DefaultBrowseGraphic browse = listener.unmarshal(
- "<gmd:MD_BrowseGraphic xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gmx=\"" + Namespaces.GMX + '"' +
+ "<mcc:MD_BrowseGraphic xmlns:mcc=\"" + Namespaces.MCC + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + '"' +
" xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
- " <gmd:fileName>\n" +
+ " <mcc:fileName>\n" +
" " + first + "\n" +
" " + second + "\n" +
- " </gmd:fileName>\n" +
- "</gmd:MD_BrowseGraphic>");
+ " </mcc:fileName>\n" +
+ "</mcc:MD_BrowseGraphic>");
assertEquals(URI.create("file:/catalog/image.png"), browse.getFileName());
assertTrue("Expected a warning.", listener.receivedWarning);
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResourceTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResourceTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResourceTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResourceTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -37,7 +37,7 @@ import static org.junit.Assert.*;
* Tests {@link DefaultCoupledResource}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
* @since 0.5
* @module
*/
@@ -46,14 +46,13 @@ public final strictfp class DefaultCoupl
/**
* Creates the resource to use for testing purpose.
*/
- static DefaultCoupledResource create() {
+ static DefaultCoupledResource create(final NameFactory factory) {
final DefaultOperationMetadata operation = new DefaultOperationMetadata("Get Map",
DistributedComputingPlatform.WEB_SERVICES, null);
operation.setParameters(singleton((ParameterDescriptor<?>) ServiceParameterTest.create()));
operation.setConnectPoints(singleton(NilReason.MISSING.createNilObject(OnlineResource.class)));
final DefaultCoupledResource resource = new DefaultCoupledResource();
- final NameFactory factory = DefaultFactories.forBuildin(NameFactory.class);
resource.setScopedName((ScopedName) factory.createGenericName(null, "mySpace", "ABC-123"));
resource.setOperation(operation);
return resource;
@@ -64,7 +63,7 @@ public final strictfp class DefaultCoupl
*/
@Test
public void testOperationNameResolve() {
- final DefaultCoupledResource resource = DefaultCoupledResourceTest.create();
+ final DefaultCoupledResource resource = create(DefaultFactories.forBuildin(NameFactory.class));
final OperationMetadata operation = resource.getOperation();
/*
* Test OperationName replacement when the name matches.
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentificationTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentificationTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentificationTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentificationTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -43,7 +43,7 @@ import static org.apache.sis.test.Metada
* Tests {@link DefaultDataIdentification}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
* @since 0.3
* @module
*/
@@ -140,23 +140,23 @@ public final strictfp class DefaultDataI
" │ │ └─Date type………………………………… Creation\n" +
" │ └─Identifier………………………………………… SST_Global.nc\n" +
" ├─Abstract………………………………………………………… NCEP SST Global 5.0 x 2.5 degree model data\n" +
+ " ├─Spatial representation type……… Grid\n" +
+ " ├─Extent……………………………………………………………… World\n" +
+ " │ └─Geographic element\n" +
+ " │ ├─West bound longitude…… 180°W\n" +
+ " │ ├─East bound longitude…… 180°E\n" +
+ " │ ├─South bound latitude…… 90°S\n" +
+ " │ ├─North bound latitude…… 90°N\n" +
+ " │ └─Extent type code……………… true\n" +
" ├─Descriptive keywords\n" +
" │ ├─Keyword………………………………………………… EARTH SCIENCE > Oceans > Ocean Temperature > Sea Surface Temperature\n" +
" │ ├─Type………………………………………………………… Theme\n" +
" │ └─Thesaurus name……………………………… GCMD Science Keywords\n" +
" ├─Resource constraints\n" +
" │ └─Use limitation……………………………… Freely available\n" +
- " ├─Spatial representation type……… Grid\n" +
" ├─Language (1 of 2)………………………………… en_US\n" +
" ├─Language (2 of 2)………………………………… en\n" +
- " ├─Character set…………………………………………… US-ASCII\n" +
- " └─Extent……………………………………………………………… World\n" +
- " └─Geographic element\n" +
- " ├─West bound longitude…… 180°W\n" +
- " ├─East bound longitude…… 180°E\n" +
- " ├─South bound latitude…… 90°S\n" +
- " ├─North bound latitude…… 90°N\n" +
- " └─Extent type code……………… true\n",
+ " └─Character set…………………………………………… US-ASCII\n",
TestUtilities.formatNameAndValue(create().asTreeTable()));
}
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -17,10 +17,12 @@
package org.apache.sis.metadata.iso.identification;
import javax.xml.bind.JAXBException;
-import org.apache.sis.xml.XML;
+import org.opengis.metadata.identification.RepresentativeFraction;
import org.apache.sis.xml.Namespaces;
import org.apache.sis.xml.IdentifierSpace;
-import org.apache.sis.test.TestCase;
+import org.apache.sis.util.Version;
+import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.DependsOnMethod;
import org.junit.Test;
import static org.apache.sis.test.Assert.*;
@@ -30,11 +32,36 @@ import static org.apache.sis.test.Assert
* Tests {@link DefaultRepresentativeFraction}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.4
* @module
*/
-public final strictfp class DefaultRepresentativeFractionTest extends TestCase {
+public final strictfp class DefaultRepresentativeFractionTest extends XMLTestCase {
+ /**
+ * {@code false} if testing ISO 19115-3 document, or {@code true} if testing ISO 19139:2007 document.
+ */
+ private boolean legacy;
+
+ /**
+ * Verifies that marshalling the given metadata produces the expected XML document,
+ * then verifies that unmarshalling that document gives back the original metadata object.
+ * If {@link #legacy} is {@code true}, then this method will use ISO 19139:2007 schema.
+ */
+ private void roundtrip(final RepresentativeFraction browse, String expected) throws JAXBException {
+ final String actual;
+ final Version version;
+ if (legacy) {
+ expected = toLegacyXML(expected);
+ version = VERSION_2007;
+ } else {
+ version = VERSION_2014;
+ }
+ actual = marshal(browse, version);
+ assertXmlEquals(expected, actual, "xmlns:*");
+ assertEquals(browse, unmarshal(RepresentativeFraction.class, actual));
+ }
+
/**
* Test {@link DefaultRepresentativeFraction#setScale(double)}.
*/
@@ -50,27 +77,36 @@ public final strictfp class DefaultRepre
}
/**
- * Tests XML marshalling of identifiers.
+ * Tests XML marshalling using ISO 19115-3 schema.
+ * This XML fragment contains an identifier.
*
- * @throws JAXBException Should never happen.
+ * @throws JAXBException if an error occurred during marshalling.
*/
@Test
- public void testIdentifiers() throws JAXBException {
+ public void testMarshalling() throws JAXBException {
final DefaultRepresentativeFraction fraction = new DefaultRepresentativeFraction(8);
fraction.getIdentifierMap().putSpecialized(IdentifierSpace.ID, "scale");
- final String xml = XML.marshal(fraction);
- assertXmlEquals(
- "<gmd:MD_RepresentativeFraction xmlns:gmd=\"" + Namespaces.GMD + '"' +
+ roundtrip(fraction,
+ "<mri:MD_RepresentativeFraction xmlns:mri=\"" + Namespaces.MRI + '"' +
" xmlns:gco=\"" + Namespaces.GCO + '"' +
" id=\"scale\">\n" +
- " <gmd:denominator>\n" +
+ " <mri:denominator>\n" +
" <gco:Integer>8</gco:Integer>\n" +
- " </gmd:denominator>\n" +
- "</gmd:MD_RepresentativeFraction>", xml, "xmlns:*");
- /*
- * Unmarshal the element back to a Java object and compare to the original.
- */
- assertEquals(fraction, XML.unmarshal(xml));
+ " </mri:denominator>\n" +
+ "</mri:MD_RepresentativeFraction>");
+ }
+
+ /**
+ * Tests XML marshalling using ISO 19139:2007 schema.
+ * This XML fragment contains an identifier.
+ *
+ * @throws JAXBException if an error occurred during marshalling.
+ */
+ @Test
+ @DependsOnMethod("testMarshalling")
+ public void testMarshallingLegacy() throws JAXBException {
+ legacy = true;
+ testMarshalling();
}
/**
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -18,13 +18,13 @@ package org.apache.sis.metadata.iso.iden
import javax.xml.bind.JAXBException;
import org.opengis.metadata.identification.RepresentativeFraction;
-import org.apache.sis.xml.XML;
import org.apache.sis.xml.Namespaces;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
import org.apache.sis.internal.jaxb.Context;
import org.apache.sis.internal.jaxb.Schemas;
import org.apache.sis.test.LoggingWatcher;
+import org.apache.sis.test.XMLTestCase;
import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.TestCase;
import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
@@ -36,12 +36,13 @@ import static org.apache.sis.test.Assert
* Tests {@link DefaultResolution}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.3
* @module
*/
@DependsOn(DefaultRepresentativeFractionTest.class)
-public final strictfp class DefaultResolutionTest extends TestCase {
+public final strictfp class DefaultResolutionTest extends XMLTestCase {
/**
* A JUnit {@link Rule} for listening to log events. This field is public because JUnit requires us to
* do so, but should be considered as an implementation details (it should have been a private field).
@@ -107,9 +108,40 @@ public final strictfp class DefaultResol
* instance which is expected to be marshalled as below (ignoring namespace declarations):
*
* {@preformat xml
+ * <mri:MD_Resolution>
+ * <mri:distance>
+ * <gco:Distance uom="http://schemas.opengis.net/iso/19139/20070417/resources/uom/gmxUom.xml#xpointer(//*[@gml:id='m'])">1000.0</gco:Distance>
+ * </mri:distance>
+ * </mri:MD_Resolution>
+ * }
+ *
+ * @throws JAXBException if an error occurred while marshalling the element.
+ */
+ @Test
+ public void testXML() throws JAXBException {
+ final DefaultResolution resolution = new DefaultResolution();
+ resolution.setDistance(1000.0);
+ final String xml = marshal(resolution);
+ assertXmlEquals(
+ "<mri:MD_Resolution xmlns:mri=\"" + Namespaces.MRI + '"' +
+ " xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
+ " <mri:distance>\n" +
+ " <gco:Distance uom=\"" + Schemas.METADATA_ROOT_LEGACY + Schemas.UOM_PATH + "#xpointer(//*[@gml:id='m'])\">1000.0</gco:Distance>\n" +
+ " </mri:distance>\n" +
+ "</mri:MD_Resolution>", xml, "xmlns:*");
+
+ assertEquals(resolution, unmarshal(DefaultResolution.class, xml));
+ }
+
+ /**
+ * Tests XML (un)marshalling of a resolution element using legacy XML schema.
+ * This test creates a {@link DefaultResolution} instance which is expected to be marshalled as below
+ * (ignoring namespace declarations):
+ *
+ * {@preformat xml
* <gmd:MD_Resolution>
* <gmd:distance>
- * <gco:Distance uom=\"http://schemas.opengis.net/iso/19139/20070417/resources/uom/gmxUom.xml#xpointer(//*[@gml:id='m'])\">1000.0</gco:Distance>
+ * <gco:Distance uom="http://schemas.opengis.net/iso/19139/20070417/resources/uom/gmxUom.xml#xpointer(//*[@gml:id='m'])">1000.0</gco:Distance>
* </gmd:distance>
* </gmd:MD_Resolution>
* }
@@ -117,28 +149,18 @@ public final strictfp class DefaultResol
* @throws JAXBException if an error occurred while marshalling the element.
*/
@Test
- public void testXML() throws JAXBException {
+ public void testLegacyXML() throws JAXBException {
final DefaultResolution resolution = new DefaultResolution();
resolution.setDistance(1000.0);
- final String xml = XML.marshal(resolution);
- assertTrue("<gmd:distance> element is missing. If this test fails randomly, "
- + "see DefaultResolutionTest.testXML() javadoc for more information", xml.contains("distance"));
- /*
- * Following test is done as a matter of principle, but should not be a problem.
- * The real issue is the <gmd:distance> which happen to be randomly missing for
- * an unknown reason.
- */
+ final String xml = marshal(resolution, VERSION_2007);
assertXmlEquals(
- "<gmd:MD_Resolution xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
+ "<gmd:MD_Resolution xmlns:gmd=\"" + LegacyNamespaces.GMD + '"' +
+ " xmlns:gco=\"" + LegacyNamespaces.GCO + "\">\n" +
" <gmd:distance>\n" +
- " <gco:Distance uom=\"" + Schemas.METADATA_ROOT + Schemas.UOM_PATH + "#xpointer(//*[@gml:id='m'])\">1000.0</gco:Distance>\n" +
+ " <gco:Distance uom=\"" + Schemas.METADATA_ROOT_LEGACY + Schemas.UOM_PATH + "#xpointer(//*[@gml:id='m'])\">1000.0</gco:Distance>\n" +
" </gmd:distance>\n" +
"</gmd:MD_Resolution>", xml, "xmlns:*");
- /*
- * Unmarshal the element back to a Java object, as a safety.
- * Should not be a problem neither.
- */
- assertEquals(resolution, XML.unmarshal(xml));
+
+ assertEquals(resolution, unmarshal(DefaultResolution.class, xml));
}
}
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultServiceIdentificationTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -18,24 +18,32 @@ package org.apache.sis.metadata.iso.iden
import javax.xml.bind.JAXBException;
import org.opengis.util.NameFactory;
+import org.opengis.parameter.ParameterDirection;
+import org.opengis.parameter.ParameterDescriptor;
import org.opengis.metadata.citation.Citation;
import org.opengis.metadata.identification.CouplingType;
+import org.opengis.metadata.identification.CoupledResource;
+import org.opengis.metadata.identification.OperationMetadata;
+import org.opengis.metadata.identification.ServiceIdentification;
+import org.opengis.metadata.identification.DistributedComputingPlatform;
+import org.apache.sis.metadata.iso.citation.DefaultCitation;
import org.apache.sis.internal.system.DefaultFactories;
-import org.apache.sis.util.ComparisonMode;
import org.apache.sis.xml.NilReason;
import org.apache.sis.test.DependsOn;
import org.apache.sis.test.XMLTestCase;
import org.junit.Test;
-import static org.apache.sis.test.Assert.*;
import static java.util.Collections.singleton;
+import static org.apache.sis.test.MetadataAssert.*;
+import static org.apache.sis.test.TestUtilities.getSingleton;
/**
* Tests {@link DefaultServiceIdentification}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.5
* @module
*/
@@ -50,11 +58,17 @@ public final strictfp class DefaultServi
private static final String XML_FILE = "ServiceIdentification.xml";
/**
+ * Same as {@link #XML_FILE} but using legacy ISO 19139:2007 schema.
+ */
+ private static final String XML_FILE_LEGACY = "ServiceIdentification (legacy).xml";
+
+ /**
* Creates the service identification to use for testing purpose.
*/
private static DefaultServiceIdentification create() {
final NameFactory factory = DefaultFactories.forBuildin(NameFactory.class);
- final DefaultCoupledResource resource = DefaultCoupledResourceTest.create();
+ final DefaultCoupledResource resource = DefaultCoupledResourceTest.create(factory);
+ resource.setResourceReferences(singleton(new DefaultCitation("WMS specification")));
final DefaultServiceIdentification id = new DefaultServiceIdentification(
factory.createGenericName(null, "Web Map Server"), // serviceType
NilReason.MISSING.createNilObject(Citation.class), // citation
@@ -67,13 +81,31 @@ public final strictfp class DefaultServi
}
/**
- * Tests the marshalling of a service metadata.
- *
- * @throws JAXBException if an error occurred during the during marshalling process.
+ * Compare values of the given service identifications against the value expected for the
+ * instance created by {@link #create()} method.
*/
- @Test
- public void testMarshal() throws JAXBException {
- assertMarshalEqualsFile(XML_FILE, create(), "xlmns:*", "xsi:schemaLocation");
+ private static void verify(final ServiceIdentification id) {
+ assertEquals("serviceTypeVersion", "1.0", getSingleton(id.getServiceTypeVersions()));
+ assertEquals("serviceType", "Web Map Server", String.valueOf(id.getServiceType()));
+ assertEquals("abstract", "A dummy service for testing purpose.", String.valueOf(id.getAbstract()));
+ assertEquals("citation", NilReason.MISSING, NilReason.forObject(id.getCitation()));
+ assertEquals("couplingType", CouplingType.LOOSE, id.getCouplingType());
+
+ final CoupledResource resource = getSingleton(id.getCoupledResources());
+// assertEquals("scopedName", "mySpace:ABC-123", …) skipped because not present in new ISO 19115-3:2016.
+// assertEquals("resourceReference", "WMS specification", …) skipped because not present in legacy ISO 19139:2007.
+
+ final OperationMetadata op = resource.getOperation();
+ assertNotNull("operation", op);
+ assertEquals("operationName", "Get Map", op.getOperationName());
+ assertEquals("distributedComputingPlatform", DistributedComputingPlatform.WEB_SERVICES, getSingleton(op.getDistributedComputingPlatforms()));
+ assertEquals("connectPoints", NilReason.MISSING, NilReason.forObject(getSingleton(op.getConnectPoints())));
+
+ final ParameterDescriptor<?> param = getSingleton(op.getParameters());
+ assertEquals("name", "Version", String.valueOf(param.getName()));
+ assertEquals("minimumOccurs", 0, param.getMinimumOccurs());
+ assertEquals("maximumOccurs", 1, param.getMaximumOccurs());
+ assertEquals("direction", ParameterDirection.IN, param.getDirection());
}
/**
@@ -86,6 +118,42 @@ public final strictfp class DefaultServi
*/
@Test
public void testUnmarshal() throws JAXBException {
- assertTrue(create().equals(unmarshalFile(DefaultServiceIdentification.class, XML_FILE), ComparisonMode.DEBUG));
+ final ServiceIdentification id = unmarshalFile(ServiceIdentification.class, XML_FILE);
+ verify(id);
+ final CoupledResource resource = getSingleton(id.getCoupledResources());
+ assertTitleEquals("resourceReference", "WMS specification", getSingleton(resource.getResourceReferences()));
+ }
+
+ /**
+ * Tests the unmarshalling of a service metadata from legacy ISO 19139:2007 schema.
+ *
+ * @throws JAXBException if an error occurred during the during unmarshalling process.
+ */
+ @Test
+ public void testUnmarshalLegacy() throws JAXBException {
+ final ServiceIdentification id = unmarshalFile(ServiceIdentification.class, XML_FILE_LEGACY);
+ verify(id);
+ final CoupledResource resource = getSingleton(id.getCoupledResources());
+ assertEquals("scopedName", "mySpace:ABC-123", String.valueOf(resource.getScopedName()));
+ }
+
+ /**
+ * Tests the marshalling of a service metadata.
+ *
+ * @throws JAXBException if an error occurred during the during marshalling process.
+ */
+ @Test
+ public void testMarshal() throws JAXBException {
+ assertMarshalEqualsFile(XML_FILE, create(), "xmlns:*", "xsi:schemaLocation");
+ }
+
+ /**
+ * Tests the marshalling of a service metadata to legacy ISO 19139:2007 schema.
+ *
+ * @throws JAXBException if an error occurred during the during marshalling process.
+ */
+ @Test
+ public void testMarshalLegacy() throws JAXBException {
+ assertMarshalEqualsFile(XML_FILE_LEGACY, create(), VERSION_2007, "xmlns:*", "xsi:schemaLocation");
}
}
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -16,13 +16,15 @@
*/
package org.apache.sis.metadata.iso.lineage;
-import java.util.Arrays;
import javax.xml.bind.JAXBException;
+import org.opengis.metadata.lineage.Source;
+import org.apache.sis.xml.Namespaces;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
import org.apache.sis.util.iso.SimpleInternationalString;
import org.apache.sis.metadata.iso.DefaultIdentifier;
+import org.apache.sis.test.DependsOnMethod;
+import org.apache.sis.test.TestUtilities;
import org.apache.sis.test.XMLTestCase;
-import org.apache.sis.xml.Namespaces;
-import org.apache.sis.xml.XML;
import org.junit.Test;
import static org.apache.sis.test.Assert.*;
@@ -33,31 +35,74 @@ import static org.apache.sis.test.Assert
* {@code "gmi"} namespace that GeoAPI merged with the object of same name in the {@code "gmd"} namespace.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.4
+ * @version 1.0
* @since 0.3
* @module
*/
public final strictfp class DefaultLineageTest extends XMLTestCase {
/**
- * Tests the marshalling of an {@code "gmd:LI_Source"} element, which shall become
- * {@code "gmi:LE_Source"} when some ISO 19115-2 properties are defined.
+ * Create a lineage to marshal. If {@code extension} is {@code false}, then this method uses
+ * only properties defined in ISO 19115-1. If {@code extension} is {@code true}, then this
+ * method adds an ISO 19115-2 property.
+ */
+ private static DefaultLineage create(final boolean extension) {
+ final DefaultLineage lineage = new DefaultLineage();
+ final DefaultSource source = new DefaultSource();
+ source.setDescription(new SimpleInternationalString("Description of source data level."));
+ lineage.getSources().add(source);
+ if (extension) {
+ source.setProcessedLevel(new DefaultIdentifier("DummyLevel"));
+ }
+ return lineage;
+ }
+
+ /**
+ * Verifies the unmarshalling result.
+ */
+ private static void verify(final DefaultLineage lineage) {
+ final Source source = TestUtilities.getSingleton(lineage.getSources());
+ assertEquals("source.description", "Description of source data level.", String.valueOf(source.getDescription()));
+ }
+
+ /**
+ * Tests the marshalling of a {@code "mrl:LI_Source"} element.
+ * If this case, the test uses only ISO 19115-1 elements (no ISO 19115-2).
+ * Consequently the XML name shall be {@code "mrl:LI_Source"}.
*
* @throws JAXBException if an error occurred while marshalling the XML.
*/
@Test
public void testSource() throws JAXBException {
- final DefaultLineage lineage = new DefaultLineage();
- final DefaultSource source = new DefaultSource();
- source.setDescription(new SimpleInternationalString("Description of source data level."));
- lineage.setSources(Arrays.asList(source));
- /*
- * If this simpler case, only ISO 19115 elements are defined (no ISO 19115-2).
- * Consequently the XML name shall be "gmd:LI_Source".
- */
- String actual = XML.marshal(lineage);
+ String actual = marshal(create(false));
assertXmlEquals(
- "<gmd:LI_Lineage xmlns:gmd=\"" + Namespaces.GMD + '"' +
+ "<mrl:LI_Lineage xmlns:mrl=\"" + Namespaces.MRL + '"' +
" xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
+ " <mrl:source>\n" +
+ " <mrl:LI_Source>\n" +
+ " <mrl:description>\n" +
+ " <gco:CharacterString>Description of source data level.</gco:CharacterString>\n" +
+ " </mrl:description>\n" +
+ " </mrl:LI_Source>\n" +
+ " </mrl:source>\n" +
+ "</mrl:LI_Lineage>", actual, "xmlns:*");
+
+ verify(unmarshal(DefaultLineage.class, actual));
+ }
+
+ /**
+ * Tests the marshalling of a legacy {@code "gmd:LI_Source"} element.
+ * If this case, the test uses only ISO 19115-1 elements (no ISO 19115-2).
+ * Consequently the legacy XML name shall be {@code "gmd:LI_Source"}.
+ *
+ * @throws JAXBException if an error occurred while marshalling the XML.
+ */
+ @Test
+ @DependsOnMethod("testSource")
+ public void testLegacySource() throws JAXBException {
+ String actual = marshal(create(false), VERSION_2007);
+ assertXmlEquals(
+ "<gmd:LI_Lineage xmlns:gmd=\"" + LegacyNamespaces.GMD + '"' +
+ " xmlns:gco=\"" + LegacyNamespaces.GCO + "\">\n" +
" <gmd:source>\n" +
" <gmd:LI_Source>\n" +
" <gmd:description>\n" +
@@ -66,15 +111,61 @@ public final strictfp class DefaultLinea
" </gmd:LI_Source>\n" +
" </gmd:source>\n" +
"</gmd:LI_Lineage>", actual, "xmlns:*");
- /*
- * Now add a ISO 19115-2 specific property. The XML name shall become "gmi:LE_Source".
- */
- source.setProcessedLevel(new DefaultIdentifier("DummyLevel"));
- actual = XML.marshal(lineage);
+
+ verify(unmarshal(DefaultLineage.class, actual));
+ }
+
+ /**
+ * Tests the marshalling of a {@code "mrl:LE_Source"} element.
+ * This test starts with the same metadata than {@link #testSource()} and adds an
+ * ISO 19115-2 specific property. Consequently the XML name, which was originally
+ * {@code "mrl:LI_Source"}, shall become {@code "mrl:LE_Source"}.
+ *
+ * @throws JAXBException if an error occurred while marshalling the XML.
+ */
+ @Test
+ @DependsOnMethod("testSource")
+ public void testSourceImagery() throws JAXBException {
+ String actual = marshal(create(true));
assertXmlEquals(
- "<gmd:LI_Lineage xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gmi=\"" + Namespaces.GMI + '"' +
+ "<mrl:LI_Lineage xmlns:mrl=\"" + Namespaces.MRL + '"' +
+ " xmlns:mcc=\"" + Namespaces.MCC + '"' +
" xmlns:gco=\"" + Namespaces.GCO + "\">\n" +
+ " <mrl:source>\n" +
+ " <mrl:LE_Source>\n" +
+ " <mrl:description>\n" +
+ " <gco:CharacterString>Description of source data level.</gco:CharacterString>\n" +
+ " </mrl:description>\n" +
+ " <mrl:processedLevel>\n" +
+ " <mcc:MD_Identifier>\n" +
+ " <mcc:code>\n" +
+ " <gco:CharacterString>DummyLevel</gco:CharacterString>\n" +
+ " </mcc:code>\n" +
+ " </mcc:MD_Identifier>\n" +
+ " </mrl:processedLevel>\n" +
+ " </mrl:LE_Source>\n" +
+ " </mrl:source>\n" +
+ "</mrl:LI_Lineage>", actual, "xmlns:*");
+
+ verify(unmarshal(DefaultLineage.class, actual));
+ }
+
+ /**
+ * Tests the marshalling of a legacy {@code "gmi:LE_Source"} element.
+ * This test starts with the same metadata than {@link #testLegacySource()} and adds
+ * an ISO 19115-2 specific property. Consequently the XML name, which was originally
+ * {@code "gmd:LI_Source"}, shall become {@code "gmi:LE_Source"}.
+ *
+ * @throws JAXBException if an error occurred while marshalling the XML.
+ */
+ @Test
+ @DependsOnMethod("testLegacySource")
+ public void testLegacySourceImagery() throws JAXBException {
+ String actual = marshal(create(true), VERSION_2007);
+ assertXmlEquals(
+ "<gmd:LI_Lineage xmlns:gmd=\"" + LegacyNamespaces.GMD + '"' +
+ " xmlns:gmi=\"" + LegacyNamespaces.GMI + '"' +
+ " xmlns:gco=\"" + LegacyNamespaces.GCO + "\">\n" +
" <gmd:source>\n" +
" <gmi:LE_Source>\n" +
" <gmd:description>\n" +
@@ -90,5 +181,7 @@ public final strictfp class DefaultLinea
" </gmi:LE_Source>\n" +
" </gmd:source>\n" +
"</gmd:LI_Lineage>", actual, "xmlns:*");
+
+ verify(unmarshal(DefaultLineage.class, actual));
}
}
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStepTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStepTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStepTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStepTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -19,7 +19,9 @@ package org.apache.sis.metadata.iso.line
import javax.xml.bind.JAXBException;
import org.apache.sis.util.iso.SimpleInternationalString;
import org.apache.sis.internal.jaxb.gmi.LE_ProcessStep;
+import org.apache.sis.metadata.iso.DefaultIdentifier;
import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.util.Version;
import org.junit.Test;
import static org.opengis.test.Assert.*;
@@ -30,17 +32,12 @@ import static org.opengis.test.Assert.*;
*
* @author Cédric Briançon (Geomatys)
* @author Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.0
* @since 0.3
* @module
*/
public final strictfp class DefaultProcessStepTest extends XMLTestCase {
/**
- * An XML file in this package containing a process step definition.
- */
- private static final String XML_FILE = "ProcessStep.xml";
-
- /**
* Tests the (un)marshalling of a metadata mixing elements from ISO 19115 and ISO 19115-2 standards.
*
* <p><b>XML test file:</b>
@@ -50,21 +47,40 @@ public final strictfp class DefaultProce
*/
@Test
public void testXML() throws JAXBException {
+ roundtrip("ProcessStep.xml", VERSION_2014);
+ }
+
+ /**
+ * Tests the (un)marshalling of a metadata in legacy ISO 19139:2007 document.
+ * This test uses the same metadata than {@link #testXML()}.
+ *
+ * @throws JAXBException if an error occurred during the during marshalling / unmarshalling processes.
+ */
+ @Test
+ public void testLegacyXML() throws JAXBException {
+ roundtrip("ProcessStep (legacy).xml", VERSION_2007);
+ }
+
+ /**
+ * Tests (un)marshalling in the given version.
+ */
+ private void roundtrip(final String filename, final Version version) throws JAXBException {
final DefaultProcessing processing = new DefaultProcessing();
final DefaultProcessStep processStep = new DefaultProcessStep("Some process step.");
processing.setProcedureDescription(new SimpleInternationalString("Some procedure."));
+ processing.setIdentifier(new DefaultIdentifier("P4"));
processStep.setProcessingInformation(processing);
/*
* XML marshalling, and compare with the content of "ProcessStep.xml" file.
*/
- assertMarshalEqualsFile(XML_FILE, processStep, "xlmns:*", "xsi:schemaLocation");
+ assertMarshalEqualsFile(filename, processStep, version, "xmlns:*", "xsi:schemaLocation");
/*
* XML unmarshalling: ensure that we didn't lost any information.
* Note that since the XML uses the <gmi:…> namespace, we got an instance of LE_ProcessStep, which
* in SIS implementation does not carry any useful information; it is just a consequence of the way
* namespaces are managed. We will convert to the parent DefaultProcessStep type before comparison.
*/
- DefaultProcessStep step = unmarshalFile(DefaultProcessStep.class, XML_FILE);
+ DefaultProcessStep step = unmarshalFile(DefaultProcessStep.class, filename);
assertInstanceOf("The unmarshalled object is expected to be in GMI namespace.", LE_ProcessStep.class, step);
step = new DefaultProcessStep(step);
assertEquals(processStep, step);
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracyTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracyTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracyTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracyTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -18,10 +18,13 @@ package org.apache.sis.metadata.iso.qual
import java.util.Locale;
import javax.xml.bind.JAXBException;
+import org.opengis.metadata.quality.Result;
import org.opengis.util.InternationalString;
import org.apache.sis.xml.FreeTextMarshallingTest;
+import org.apache.sis.util.Version;
import org.apache.sis.test.XMLTestCase;
import org.apache.sis.test.DependsOn;
+import org.junit.Ignore;
import org.junit.Test;
import static org.opengis.test.Assert.*;
@@ -33,18 +36,14 @@ import static org.apache.sis.test.TestUt
*
* @author Cédric Briançon (Geomatys)
* @author Martin Desruisseaux (Geomatys)
- * @version 0.4
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.3
* @module
*/
@DependsOn(FreeTextMarshallingTest.class)
public final strictfp class AbstractPositionalAccuracyTest extends XMLTestCase {
/**
- * An XML file in this package containing a positional accuracy definition.
- */
- private static final String XML_FILE = "PositionalAccuracy.xml";
-
- /**
* Tests the (un)marshalling of a text group with a default {@code <gco:CharacterString>} element.
* This test is somewhat a duplicate of {@link FreeTextMarshallingTest}, but the context is more
* elaborated.
@@ -54,12 +53,34 @@ public final strictfp class AbstractPosi
*
* @throws JAXBException if an error occurred during the during marshalling / unmarshalling processes.
*
- * @see <a href="http://jira.geotoolkit.org/browse/GEOTK-107">GEOTK-107</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SIS-394">Issue SIS-394</a>
* @see FreeTextMarshallingTest
*/
@Test
+ @Ignore("Depends on SIS-394")
public void testXML() throws JAXBException {
- final AbstractElement metadata = unmarshalFile(AbstractElement.class, XML_FILE);
+ roundtrip("PositionalAccuracy.xml", VERSION_2014);
+ }
+
+ /**
+ * Tests the (un)marshalling of a text group from/to legacy ISO 19139:2007 schema.
+ *
+ * @throws JAXBException if an error occurred during the during marshalling / unmarshalling processes.
+ *
+ * @see <a href="http://jira.geotoolkit.org/browse/GEOTK-107">GEOTK-107</a>
+ * @see <a href="https://issues.apache.org/jira/browse/SIS-399">SIS-399</a>
+ */
+ @Test
+ public void testLegacyXML() throws JAXBException {
+ roundtrip("PositionalAccuracy (legacy).xml", VERSION_2007);
+ }
+
+ /**
+ * Unmarshals the given file and verify the content.
+ * Then marshals the object and verify that we get equivalent XML.
+ */
+ private void roundtrip(final String filename, final Version version) throws JAXBException {
+ final AbstractElement metadata = unmarshalFile(AbstractElement.class, filename);
final InternationalString nameOfMeasure = getSingleton(metadata.getNamesOfMeasure());
/*
* Programmatic verification of the text group.
@@ -72,11 +93,12 @@ public final strictfp class AbstractPosi
* Opportunist test. While it was not the purpose of this test, the above metadata
* needs to contain a "result" element in order to pass XML validation test.
*/
- assertInstanceOf("Wrong value for <gmd:result>", DefaultConformanceResult.class,
- getSingleton(metadata.getResults()));
+ final Result result = getSingleton(metadata.getResults());
+ assertInstanceOf("Wrong value for <gmd:result>", DefaultConformanceResult.class, result);
+ assertEquals("result.pass", Boolean.TRUE, ((DefaultConformanceResult) result).pass());
/*
* Marshalling: ensure that we didn't lost any information.
*/
- assertMarshalEqualsFile(XML_FILE, metadata, "xmlns:*", "xsi:schemaLocation", "xsi:type");
+ assertMarshalEqualsFile(filename, metadata, version, "xmlns:*", "xsi:schemaLocation", "xsi:type");
}
}
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -94,6 +94,7 @@ import org.junit.BeforeClass;
org.apache.sis.metadata.iso.DefaultMetadataTest.class,
org.apache.sis.metadata.iso.CustomMetadataTest.class,
org.apache.sis.metadata.iso.AllMetadataTest.class,
+ org.apache.sis.metadata.iso.MarshallingTest.class,
org.apache.sis.metadata.iso.APIVerifier.class,
org.apache.sis.io.wkt.ConventionTest.class,
Modified: sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java?rev=1825260&r1=1825259&r2=1825260&view=diff
==============================================================================
--- sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java [UTF-8] (original)
+++ sis/branches/JDK9/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java [UTF-8] Sat Feb 24 16:22:48 2018
@@ -22,6 +22,7 @@ import org.opengis.metadata.Identifier;
import org.opengis.metadata.acquisition.Instrument;
import org.opengis.metadata.identification.DataIdentification;
import org.opengis.metadata.identification.InitiativeType;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
import org.apache.sis.internal.metadata.SensorType;
import org.apache.sis.util.iso.Types;
import org.apache.sis.test.DependsOnMethod;
@@ -35,24 +36,26 @@ import static org.apache.sis.test.Assert
* Tests the XML marshalling of {@code Anchor} and {@code CodeList} as substitution of {@code <gco:CharacterSequence>}.
*
* @author Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @author Cullen Rombach (Image Matters)
+ * @version 1.0
* @since 0.3
* @module
*/
public final strictfp class CharSequenceSubstitutionTest extends XMLTestCase {
/**
- * Tests unmarshalling of anchor in an identifier element. The {@code xlink:href} attribute
- * is lost because the Java type of the {@code gmd:code} attribute is {@link String}.
+ * Tests unmarshalling of {@code "RS_Identifier"} element. This element was defined in legacy ISO 19139:2007
+ * but has been removed in ISO 19115-3. That element is extensively used for Coordinate Reference Systems in
+ * GML 3.2.
*
* @throws JAXBException if the unmarshalling failed.
*/
@Test
- @DependsOnMethod("testAnchor")
- public void testAnchorForString() throws JAXBException {
+ @DependsOnMethod("testAnchorForString")
+ public void testLegacy() throws JAXBException {
final String expected =
- "<gmd:RS_Identifier xmlns:gmx=\"" + Namespaces.GMX + '"' +
- " xmlns:gmd=\"" + Namespaces.GMD + '"' +
- " xmlns:gco=\"" + Namespaces.GCO + '"' +
+ "<gmd:RS_Identifier xmlns:gmd=\"" + LegacyNamespaces.GMD + '"' +
+ " xmlns:gmx=\"" + LegacyNamespaces.GMX + '"' +
+ " xmlns:gco=\"" + LegacyNamespaces.GCO + '"' +
" xmlns:xlink=\"" + Namespaces.XLINK + "\">\n" +
" <gmd:code>\n" +
" <gmx:Anchor xlink:href=\"SDN:L101:2:4326\">EPSG:4326</gmx:Anchor>\n" +
@@ -62,7 +65,34 @@ public final strictfp class CharSequence
" </gmd:codeSpace>\n" +
"</gmd:RS_Identifier>";
- final Identifier id = (Identifier) XML.unmarshal(expected);
+ final Identifier id = unmarshal(Identifier.class, expected);
+ assertEquals("codespace", "L101", id.getCodeSpace());
+ assertEquals("code", "EPSG:4326", id.getCode());
+ }
+
+ /**
+ * Tests unmarshalling of anchor in an identifier element. The {@code xlink:href} attribute
+ * is lost because the Java type of the {@code gmd:code} attribute is {@link String}.
+ *
+ * @throws JAXBException if the unmarshalling failed.
+ */
+ @Test
+ @DependsOnMethod("testAnchor")
+ public void testAnchorForString() throws JAXBException {
+ final String expected =
+ "<mdb:MD_Identifier xmlns:mdb=\"" + Namespaces.MDB + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + '"' +
+ " xmlns:gco=\"" + Namespaces.GCO + '"' +
+ " xmlns:xlink=\"" + Namespaces.XLINK + "\">\n" +
+ " <mdb:code>\n" +
+ " <gcx:Anchor xlink:href=\"SDN:L101:2:4326\">EPSG:4326</gcx:Anchor>\n" +
+ " </mdb:code>\n" +
+ " <mdb:codeSpace>\n" +
+ " <gco:CharacterString>L101</gco:CharacterString>\n" +
+ " </mdb:codeSpace>\n" +
+ "</mdb:MD_Identifier>";
+
+ final Identifier id = unmarshal(Identifier.class, expected);
assertEquals("codespace", "L101", id.getCodeSpace());
assertEquals("code", "EPSG:4326", id.getCode());
}
@@ -76,28 +106,28 @@ public final strictfp class CharSequence
@Test
public void testAnchor() throws JAXBException {
final String expected =
- "<gmd:CI_Address xmlns:gmx=\"" + Namespaces.GMX + '"' +
- " xmlns:gmd=\"" + Namespaces.GMD + '"' +
+ "<cit:CI_Address xmlns:cit=\"" + Namespaces.CIT + '"' +
+ " xmlns:gcx=\"" + Namespaces.GCX + '"' +
" xmlns:gco=\"" + Namespaces.GCO + '"' +
" xmlns:xlink=\"" + Namespaces.XLINK + "\">\n" +
- " <gmd:deliveryPoint>\n" +
+ " <cit:deliveryPoint>\n" +
" <gco:CharacterString>Centre IFREMER de Brest BP 70</gco:CharacterString>\n" +
- " </gmd:deliveryPoint>\n" +
- " <gmd:city>\n" +
+ " </cit:deliveryPoint>\n" +
+ " <cit:city>\n" +
" <gco:CharacterString>Plouzané</gco:CharacterString>\n" +
- " </gmd:city>\n" +
- " <gmd:postalCode>\n" +
+ " </cit:city>\n" +
+ " <cit:postalCode>\n" +
" <gco:CharacterString>29280</gco:CharacterString>\n" +
- " </gmd:postalCode>\n" +
- " <gmd:country>\n" +
- " <gmx:Anchor xlink:href=\"SDN:C320:2:FR\">France</gmx:Anchor>\n" +
- " </gmd:country>\n" +
- " <gmd:electronicMailAddress>\n" +
+ " </cit:postalCode>\n" +
+ " <cit:country>\n" +
+ " <gcx:Anchor xlink:href=\"SDN:C320:2:FR\">France</gcx:Anchor>\n" +
+ " </cit:country>\n" +
+ " <cit:electronicMailAddress>\n" +
" <gco:CharacterString>(hiden)@ifremer.fr</gco:CharacterString>\n" +
- " </gmd:electronicMailAddress>\n" +
- "</gmd:CI_Address>";
+ " </cit:electronicMailAddress>\n" +
+ "</cit:CI_Address>";
- final Address address = (Address) XML.unmarshal(expected);
+ final Address address = unmarshal(Address.class, expected);
assertEquals("Plouzané", address.getCity().toString());
assertEquals("France", address.getCountry().toString());
assertEquals(1, address.getElectronicMailAddresses().size());
@@ -110,7 +140,7 @@ public final strictfp class CharSequence
anchor.setType(XLink.Type.AUTO);
assertEquals(XLink.Type.LOCATOR, anchor.getType());
- final String actual = XML.marshal(address);
+ final String actual = marshal(address);
assertXmlEquals(expected, actual, "xmlns:*");
}
@@ -124,19 +154,19 @@ public final strictfp class CharSequence
@Test
public void testCodeList() throws JAXBException {
final String expected =
- "<gmd:MD_DataIdentification xmlns:gmd=\"" + Namespaces.GMD + "\">\n" +
- " <gmd:purpose>\n" +
- " <gmd:DS_InitiativeTypeCode\n" +
- " codeList=\"http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode\"\n" +
- " codeListValue=\"investigation\">Investigation</gmd:DS_InitiativeTypeCode>\n" +
- " </gmd:purpose>\n" +
- "</gmd:MD_DataIdentification>";
+ "<mri:MD_DataIdentification xmlns:mri=\"" + Namespaces.MRI + "\">\n" +
+ " <mri:purpose>\n" +
+ " <mri:DS_InitiativeTypeCode\n" +
+ " codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#DS_InitiativeTypeCode\"\n" +
+ " codeListValue=\"investigation\">Investigation</mri:DS_InitiativeTypeCode>\n" +
+ " </mri:purpose>\n" +
+ "</mri:MD_DataIdentification>";
- final DataIdentification id = (DataIdentification) XML.unmarshal(expected);
+ final DataIdentification id = unmarshal(DataIdentification.class, expected);
assertEquals("purpose", "Investigation", String.valueOf(id.getPurpose()));
assertSame("purpose", InitiativeType.INVESTIGATION, Types.forCodeTitle(id.getPurpose()));
- final String actual = XML.marshal(id);
+ final String actual = marshal(id);
assertXmlEquals(expected, actual, "xmlns:*");
}
@@ -160,7 +190,7 @@ public final strictfp class CharSequence
" </gmi:type>\n" +
"</gmi:MI_Instrument>";
- final Instrument instrument = (Instrument) XML.unmarshal(expected);
+ final Instrument instrument = unmarshal(Instrument.class, expected);
assertEquals("type", "RADIOMETER", String.valueOf(instrument.getType()));
assertInstanceOf("type", SensorType.class, Types.forCodeTitle(instrument.getType()));
}