Author: desruisseaux Date: Sat Feb 3 14:10:21 2018 New Revision: 1823027 URL: http://svn.apache.org/viewvc?rev=1823027&view=rev Log: Fixed some @XmlNs annotations and first draft of value type verification. Note that JUnit tests still don't pass; this will be fixed before merge.
Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/code/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gmi/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ReferenceSystemMetadata.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/package-info.java sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/code/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/code/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/code/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/code/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -41,7 +41,6 @@ * @module */ @XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED, xmlns = { - @XmlNs(prefix = "mdb", namespaceURI = Namespaces.MDB), // Metadata Base @XmlNs(prefix = "mri", namespaceURI = Namespaces.MRI), // Metadata for Resource Identification @XmlNs(prefix = "mrc", namespaceURI = Namespaces.MRC), // Metadata for Resource Content @XmlNs(prefix = "mrd", namespaceURI = Namespaces.MRD), // Metadata for Resource Distribution Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gmi/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gmi/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gmi/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gmi/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -37,8 +37,7 @@ * @module */ @XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED, namespace = Namespaces.GMI, xmlns = { - @XmlNs(prefix = "gmi", namespaceURI = Namespaces.GMI), - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO) + @XmlNs(prefix = "gmi", namespaceURI = Namespaces.GMI) }) @XmlAccessorType(XmlAccessType.NONE) package org.apache.sis.internal.jaxb.gmi; Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ReferenceSystemMetadata.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ReferenceSystemMetadata.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ReferenceSystemMetadata.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ReferenceSystemMetadata.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -18,6 +18,7 @@ package org.apache.sis.internal.jaxb.met import java.util.Objects; import javax.xml.bind.Marshaller; +import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @@ -29,6 +30,7 @@ import org.apache.sis.internal.simple.Si import org.apache.sis.internal.jaxb.FilterByVersion; import org.apache.sis.internal.jaxb.LegacyNamespaces; import org.apache.sis.util.ComparisonMode; +import org.apache.sis.xml.Namespaces; /** @@ -51,7 +53,8 @@ import org.apache.sis.util.ComparisonMod * @since 0.3 * @module */ -@XmlRootElement(name = "MD_ReferenceSystem") +@XmlType(name = "MD_ReferenceSystem_Type", namespace = Namespaces.MRS) +@XmlRootElement(name = "MD_ReferenceSystem", namespace = Namespaces.MRS) public class ReferenceSystemMetadata extends SimpleIdentifiedObject implements ReferenceSystem { /** * For cross-version compatibility. Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -236,7 +236,7 @@ public final class ServiceParameter exte * Note that there is not setter method, since we expect the same information * to be provided in the {@link #name} attribute type. */ - @XmlElement(name = "valueType") + @XmlElement(name = "valueType", namespace = LegacyNamespaces.SRV) final TypeName getValueType() { if (memberName != null && FilterByVersion.LEGACY_METADATA.accept()) { return memberName.getAttributeType(); Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -34,12 +34,12 @@ * @since 0.5 * @module */ -@XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED, namespace = Namespaces.MRS, xmlns = { - @XmlNs(prefix = "mrs", namespaceURI = Namespaces.MRS), - @XmlNs(prefix = "mdb", namespaceURI = Namespaces.MDB), - @XmlNs(prefix = "srv", namespaceURI = Namespaces.SRV), - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI) +@XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED, xmlns = { + @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes + @XmlNs(prefix = "mrs", namespaceURI = Namespaces.MRS), // Metadata for Reference System + @XmlNs(prefix = "srv", namespaceURI = Namespaces.SRV), // Metadata for Services 2.0 + @XmlNs(prefix = "srv1", namespaceURI = LegacyNamespaces.SRV), // Metadata for Services 1.0 + @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) // Metadata ISO 19139:2007 }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ @@ -62,6 +62,7 @@ import javax.xml.bind.annotation.XmlAcce import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; +import org.apache.sis.internal.jaxb.LegacyNamespaces; import org.apache.sis.internal.jaxb.metadata.RS_Identifier; import org.apache.sis.internal.jaxb.code.SV_ParameterDirection; import org.apache.sis.internal.jaxb.gco.*; Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -93,10 +93,7 @@ */ @XmlSchema(location=Schemas.METADATA_XSD_ACQUISITION, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MAC, xmlns = { @XmlNs(prefix = "mac", namespaceURI = Namespaces.MAC), // Metadata for Acquisition - @XmlNs(prefix = "gmw", namespaceURI = Namespaces.GMW), // Geographic Markup Wrappers - @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI) // XML schema instance + @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC) // Metadata Common Classes }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -93,10 +93,7 @@ */ @XmlSchema(location=Schemas.METADATA_XSD_CITATION, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.CIT, xmlns = { @XmlNs(prefix = "cit", namespaceURI = Namespaces.CIT), // Citation and responsible party information - @XmlNs(prefix = "mrd", namespaceURI = Namespaces.MRD), // Metadata for Resource Distribution @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) }) @XmlAccessorType(XmlAccessType.NONE) Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -70,10 +70,7 @@ */ @XmlSchema(location=Schemas.METADATA_XSD_CONSTRAINT, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MCO, xmlns = { @XmlNs(prefix = "mco", namespaceURI = Namespaces.MCO), // Metadata for Constraints - @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance - @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) + @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC) // Metadata Common Classes }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ @@ -94,7 +91,6 @@ import javax.xml.bind.annotation.XmlAcce import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; import org.apache.sis.xml.Namespaces; -import org.apache.sis.internal.jaxb.LegacyNamespaces; import org.apache.sis.internal.jaxb.Schemas; import org.apache.sis.internal.jaxb.gco.*; import org.apache.sis.internal.jaxb.code.*; Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -88,12 +88,8 @@ @XmlSchema(location=Schemas.METADATA_XSD_CONTENT, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MRC, xmlns = { @XmlNs(prefix = "mrc", namespaceURI = Namespaces.MRC), // Metadata for Resource Content @XmlNs(prefix = "lan", namespaceURI = Namespaces.LAN), // Language localization - @XmlNs(prefix = "fcc", namespaceURI = Namespaces.FCC), // Feature Catalog Common @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance - @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD), - @XmlNs(prefix = "gmi", namespaceURI = LegacyNamespaces.GMI) + @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -78,10 +78,7 @@ @XmlNs(prefix = "mrd", namespaceURI = Namespaces.MRD), // Metadata for Resource Distribution @XmlNs(prefix = "mdt", namespaceURI = Namespaces.MDT), // Metadata for Data Transfer @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gmw", namespaceURI = Namespaces.GMW), // Geographic Markup Wrappers - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "gcx", namespaceURI = Namespaces.GCX), // Geospatial Common eXtension - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance + @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ @@ -113,6 +110,7 @@ import javax.xml.bind.annotation.XmlAcce import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; import org.apache.sis.xml.Namespaces; +import org.apache.sis.internal.jaxb.LegacyNamespaces; import org.apache.sis.internal.jaxb.Schemas; import org.apache.sis.internal.jaxb.gco.*; import org.apache.sis.internal.jaxb.code.*; Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -142,11 +142,7 @@ */ @XmlSchema(location=Schemas.METADATA_XSD_EXTENT, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.GEX, xmlns = { @XmlNs(prefix = "gex", namespaceURI = Namespaces.GEX), // Geospatial Extent - @XmlNs(prefix = "rce", namespaceURI = Namespaces.RCE), // Referencing By Coordinates Common - @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gmw", namespaceURI = Namespaces.GMW), // Geographic Markup Wrappers - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance + @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC) // Metadata Common Classes }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -101,15 +101,12 @@ * @module */ @XmlSchema(location=Schemas.METADATA_XSD_IDENTIFICATION, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MRI, xmlns = { - @XmlNs(prefix = "mri", namespaceURI = Namespaces.MRI), // Metadata for Resource Identification - @XmlNs(prefix = "srv", namespaceURI = Namespaces.SRV), // Metadata for Services - @XmlNs(prefix = "cit", namespaceURI = Namespaces.CIT), // Citation and responsible party information - @XmlNs(prefix = "lan", namespaceURI = Namespaces.LAN), // Language localization - @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "gmw", namespaceURI = Namespaces.GMW), // Geographic Markup Wrappers - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance - @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) + @XmlNs(prefix = "mri", namespaceURI = Namespaces.MRI), // Metadata for Resource Identification + @XmlNs(prefix = "srv", namespaceURI = Namespaces.SRV), // Metadata for Services 2.0 + @XmlNs(prefix = "lan", namespaceURI = Namespaces.LAN), // Language localization + @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes + @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD), // Metadata ISO 19139:2007 + @XmlNs(prefix = "srv1", namespaceURI = LegacyNamespaces.SRV) // Metadata for Services 1.0 }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -73,10 +73,8 @@ @XmlSchema(location=Schemas.METADATA_XSD_LINEAGE, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MRL, xmlns = { @XmlNs(prefix = "mrl", namespaceURI = Namespaces.MRL), // Metadata for Resource Lineage @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gmw", namespaceURI = Namespaces.GMW), // Geographic Markup Wrappers - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "gcx", namespaceURI = Namespaces.GCX), // Geospatial Common eXtension - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance + @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD), + @XmlNs(prefix = "gmi", namespaceURI = LegacyNamespaces.GMI) }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ @@ -107,6 +105,7 @@ import javax.xml.bind.annotation.adapter import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; import org.apache.sis.xml.Namespaces; +import org.apache.sis.internal.jaxb.LegacyNamespaces; import org.apache.sis.internal.jaxb.Schemas; import org.apache.sis.internal.jaxb.gco.*; import org.apache.sis.internal.jaxb.metadata.*; Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -70,9 +70,7 @@ @XmlSchema(location=Schemas.METADATA_XSD_MAINTENANCE, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MMI, xmlns = { @XmlNs(prefix = "mmi", namespaceURI = Namespaces.MMI), // Metadata for Maintenance Information @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gmw", namespaceURI = Namespaces.GMW), // Geographic Markup Wrappers - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance + @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ @@ -103,6 +101,7 @@ import javax.xml.bind.annotation.adapter import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters; import org.apache.sis.xml.Namespaces; +import org.apache.sis.internal.jaxb.LegacyNamespaces; import org.apache.sis.internal.jaxb.Schemas; import org.apache.sis.internal.jaxb.gco.*; import org.apache.sis.internal.jaxb.code.*; Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -91,11 +91,9 @@ @XmlNs(prefix = "mpc", namespaceURI = Namespaces.MPC), // Metadata for Portrayal Catalog @XmlNs(prefix = "mas", namespaceURI = Namespaces.MAS), // Metadata for Application Schema @XmlNs(prefix = "mex", namespaceURI = Namespaces.MEX), // Metadata with Schema Extensions - @XmlNs(prefix = "cit", namespaceURI = Namespaces.CIT), // Citation and responsible party information @XmlNs(prefix = "lan", namespaceURI = Namespaces.LAN), // Language localization @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance + @XmlNs(prefix = "dqc", namespaceURI = Namespaces.DQC), // Data Quality Common Classes @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD) }) @XmlAccessorType(XmlAccessType.NONE) Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -116,11 +116,9 @@ */ @XmlSchema(location=Schemas.METADATA_XSD_QUALITY, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MDQ, xmlns = { @XmlNs(prefix = "mdq", namespaceURI = Namespaces.MDQ), // Metadata for Data Quality - @XmlNs(prefix = "mrc", namespaceURI = Namespaces.MRC), // Metadata for Resource Content @XmlNs(prefix = "mrd", namespaceURI = Namespaces.MRD), // Metadata for Resource Distribution - @XmlNs(prefix = "cit", namespaceURI = Namespaces.CIT), // Citation and responsible party information - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance + @XmlNs(prefix = "dqc", namespaceURI = Namespaces.DQC), // Data Quality Common Classes + @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD), @XmlNs(prefix = "gmi", namespaceURI = LegacyNamespaces.GMI) }) Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/package-info.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/package-info.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/package-info.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/package-info.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -91,10 +91,7 @@ @XmlSchema(location=Schemas.METADATA_XSD_SPATIAL, elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MSR, xmlns = { @XmlNs(prefix = "msr", namespaceURI = Namespaces.MSR), // Metadata for Spatial Representation @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC), // Metadata Common Classes - @XmlNs(prefix = "dqc", namespaceURI = Namespaces.DQC), // Data Quality Common Classes - @XmlNs(prefix = "gmw", namespaceURI = Namespaces.GMW), // Geographic Markup Wrappers - @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO), // Geographic Common - @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI), // XML schema instance + @XmlNs(prefix = "dqc", namespaceURI = Namespaces.DQC) // Data Quality Common Classes }) @XmlAccessorType(XmlAccessType.NONE) @XmlJavaTypeAdapters({ Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -21,6 +21,7 @@ import java.util.Map; import java.util.HashMap; import java.lang.reflect.Method; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -32,6 +33,8 @@ import javax.xml.bind.annotation.XmlRoot import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; import org.apache.sis.internal.jaxb.LegacyNamespaces; +import org.apache.sis.util.Classes; +import org.opengis.annotation.UML; /** @@ -51,6 +54,20 @@ final strictfp class PackageVerifier { Arrays.asList(LegacyNamespaces.GMD, LegacyNamespaces.GMI, LegacyNamespaces.SRV))); /** + * Types declared in JAXB annotations to be considered as equivalent to types in XML schemas. + */ + private static final Map<String,String> TYPE_EQUIVALENCES; + static { + final Map<String,String> m = new HashMap<>(); + m.put("PT_FreeText", "CharacterString"); + m.put("Abstract_Citation", "CI_Citation"); + m.put("AbstractCI_Party", "CI_Party"); + m.put("Abstract_Responsibility", "CI_Responsibility"); + m.put("Abstract_Extent", "EX_Extent"); + TYPE_EQUIVALENCES = Collections.unmodifiableMap(m); + } + + /** * The schemas to compare with the JAXB annotations. * Additional schemas will be loaded as needed. */ @@ -98,10 +115,10 @@ final strictfp class PackageVerifier { final String ns = xmlns.namespaceURI(); final String cr = schemas.allXmlNS.put(pr, ns); if (cr != null && !cr.equals(ns)) { - throw new SchemaException("Prefix \"" + pr + "\" associated to two different namespaces:\n" + cr + '\n' + ns); + throw new SchemaException(String.format("Prefix \"%s\" associated to two different namespaces:%n%s%n%s", pr, cr, ns)); } if (namespaceIsUsed.put(ns, Boolean.FALSE) != null) { - throw new SchemaException("Duplicated namespace in package " + name + ":\n" + ns); + throw new SchemaException(String.format("Duplicated namespace in package %s:%n%s", name, ns)); } } } @@ -185,7 +202,7 @@ final strictfp class PackageVerifier { } final String expectedNS = properties.get(null).namespace; if (!namespace.equals(expectedNS)) { - throw new SchemaException(className + " shall be associated to namespace " + expectedNS); + throw new SchemaException(String.format("%s shall be associated to namespace %s", className, expectedNS)); } for (final Method method : type.getDeclaredMethods()) { final XmlElement element = method.getDeclaredAnnotation(XmlElement.class); @@ -197,32 +214,77 @@ final strictfp class PackageVerifier { if (ns.equals(AnnotationConsistencyCheck.DEFAULT)) { ns = namespace; } + if (namespaceIsUsed.put(ns, Boolean.TRUE) == null) { + throw new SchemaException(String.format("Missing @XmlNs in %s package for namespace:%n%s", packageName, ns)); + } /* * We do not verify fully the properties in legacy namespaces because we didn't loaded their schemas. * However we verify at least that those properties are not declared as required. */ if (LEGACY_NAMESPACES.contains(ns)) { if (element.required()) { - throw new SchemaException("Legacy property " + className + '.' + name + " should not be required."); + throw new SchemaException(String.format("Legacy property %s.%s should not be required.", className, name)); } continue; // Property in a legacy namespace - skip it. } /* - * Property in non-legacy namespaces should not be deprecated. Verify also their namespace. + * Property in non-legacy namespaces should not be deprecated. Verify also their namespace + * and whether the property is required or optional, and whether it should be a collection. */ if (method.isAnnotationPresent(Deprecated.class)) { - throw new SchemaException("Unexpected deprecation status of " + className + '.' + name); + throw new SchemaException(String.format("Unexpected deprecation status of %s.%s", className, name)); } final SchemaCompliance.Info info = properties.get(name); if (info == null) { - throw new SchemaException("Unexpected XML element " + className + '.' + name); + throw new SchemaException(String.format("Unexpected XML element %s.%s", className, name)); } if (info.namespace != null && !ns.equals(info.namespace)) { - throw new SchemaException(className + '.' + name + " is associated to namespace " + ns - + " while " + info.namespace + " was expected."); + throw new SchemaException(String.format("%s.%s is associated to namespace %s while %s was expected.", + className, name, ns, info.namespace)); } if (element.required() != info.isRequired) { - throw new SchemaException("Wrong requirement flag for " + className + '.' + name); + throw new SchemaException(String.format("Wrong requirement flag for %s.%s", className, name)); + } + /* + * Following is a continuation of our check for cardinality, but also the beginning of the check + * for return value type. The return type should be an interface with a UML annotation; we check + * that this annotation contains the name of the expected type. + */ + Class<?> valueType = method.getReturnType(); + if (Collection.class.isAssignableFrom(valueType)) { + valueType = Classes.boundOfParameterizedProperty(method); + if (!info.isCollection) { + if (false) // Temporarily disabled because require GeoAPI modifications. + throw new SchemaException(String.format("%s.%s should be a singleton.", className, name)); + } + } else if (info.isCollection) { + if (false) // Temporarily disabled because require GeoAPI modifications. + throw new SchemaException(String.format("%s.%s should be a collection.", className, name)); + } + if (valueType != null) { + final UML valueUML = valueType.getAnnotation(UML.class); + if (valueUML != null) { + String expected = info.typeName; + String actual = valueUML.identifier(); + expected = TYPE_EQUIVALENCES.getOrDefault(expected, expected); + actual = TYPE_EQUIVALENCES.getOrDefault(actual, actual); + if (!expected.equals(actual)) { + if (false) // Temporarily disabled because require GeoAPI modifications. + throw new SchemaException(String.format("Type of %s.%s should be %s, but found %s.", + className, name, expected, actual)); + } + } + } + /* + * Verify if we have a @XmlNs for the type of the value. This is probably not required, but we + * do that as a safety. A common namespace added by this check is Metadata Common Classes (MCC). + */ + final Map<String, SchemaCompliance.Info> valueInfo = schemas.typeDefinition(info.typeName); + if (valueInfo != null) { + final String valueNS = valueInfo.get(null).namespace; + if (namespaceIsUsed.put(valueNS, Boolean.TRUE) == null) { + throw new SchemaException(String.format("Missing @XmlNs in %s package for namespace:%n%s", packageName, valueNS)); + } } } } @@ -233,8 +295,7 @@ final strictfp class PackageVerifier { final void reportUnused() throws SchemaException { for (final Map.Entry<String,Boolean> entry : namespaceIsUsed.entrySet()) { if (!entry.getValue()) { -// TODO: to be enabled after we processed properties. -// throw new SchemaException("Unused namespace in package " + packageName + ":\n" + entry.getKey()); + throw new SchemaException(String.format("Unused namespace in package %s:%n%s", packageName, entry.getKey())); } } } Modified: sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java URL: http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java?rev=1823027&r1=1823026&r2=1823027&view=diff ============================================================================== --- sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java [UTF-8] (original) +++ sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java [UTF-8] Sat Feb 3 14:10:21 2018 @@ -256,7 +256,7 @@ public final strictfp class SchemaCompli * The given directory must be a sub-directory of the root directory given at construction time. * This method will invoke itself for scanning sub-directories. * - * @param directory the directory to scan for classes. + * @param directory the directory to scan for classes, relative to class root directory. * @throws IOException if an error occurred while reading files or schemas. * @throws ClassNotFoundException if an error occurred while loading a {@code "*.class"} file. * @throws ParserConfigurationException if {@link javax.xml.parsers.DocumentBuilder} can not be created. @@ -268,7 +268,7 @@ public final strictfp class SchemaCompli throws IOException, ClassNotFoundException, ParserConfigurationException, SAXException, SchemaException { PackageVerifier verifier = null; - try (DirectoryStream<Path> stream = Files.newDirectoryStream(directory)) { + try (DirectoryStream<Path> stream = Files.newDirectoryStream(classRootDirectory.resolve(directory))) { for (Path path : stream) { final String filename = path.getFileName().toString(); if (!filename.startsWith(".")) { @@ -358,7 +358,7 @@ public final strictfp class SchemaCompli properties.put(null, info); // Remember namespace of the code list. properties.put(name, info); // Pseudo-property used in our CodeList adapters. if (typeDefinitions.put(name, properties) != null) { - throw new SchemaException("Code list " + name + " defined twice."); + throw new SchemaException(String.format("Code list \"%s\" is defined twice.", name)); } } else { verifyNamingConvention(schemaLocations.getLast(), name, type, TYPE_SUFFIX); @@ -477,9 +477,10 @@ public final strictfp class SchemaCompli * Verifies that the relationship between the name of the given entity and its type are consistent with * OGC/ISO conventions. This method ignore the prefix (e.g. {@code "mdb:"} in {@code "mdb:MD_Metadata"}). * - * @param name the class or property name. Example: {@code "MD_Metadata"}, {@code "citation"}. - * @param type the type of the above named object. Example: {@code "MD_Metadata_Type"}, {@code "CI_Citation_PropertyType"}. - * @param suffix the expected suffix at the end of {@code type}. + * @param enclosing schema or other container where the error happened. + * @param name the class or property name. Example: {@code "MD_Metadata"}, {@code "citation"}. + * @param type the type of the above named object. Example: {@code "MD_Metadata_Type"}, {@code "CI_Citation_PropertyType"}. + * @param suffix the expected suffix at the end of {@code type}. * @throws SchemaException if the given {@code name} and {@code type} are not compliant with expected convention. */ static void verifyNamingConvention(final String enclosing, @@ -498,9 +499,9 @@ public final strictfp class SchemaCompli return; } } - throw new SchemaException("Error in " + enclosing + ":\n" - + "The type name should be the name with \"" + suffix + "\" suffix, " - + "but found name=\"" + name + "\" and type=\"" + type + "\">."); + throw new SchemaException(String.format("Error in %s:%n" + + "The type name should be the name with \"%s\" suffix, but found name=\"%s\" and type=\"%s\">.", + enclosing, suffix, name, type)); } /** @@ -511,9 +512,9 @@ public final strictfp class SchemaCompli final Info info = new Info(type, targetNamespace, isRequired, isCollection); final Info old = currentProperties.put(name, info); if (old != null && !old.equal(info)) { - throw new SchemaException("Error while parsing " + schemaLocations.getLast() + ":\n" - + "Property \"" + name + "\" is associated to type \"" + type + "\", but that " - + "property was already associated to \"" + old + "\"."); + throw new SchemaException(String.format("Error while parsing %s:%n" + + "Property \"%s\" is associated to type \"%s\", but that property was already associated to \"%s\".", + schemaLocations.getLast(), name, type, old)); } } @@ -532,7 +533,7 @@ public final strictfp class SchemaCompli if (name.endsWith(suffix)) { return name.substring(name.indexOf(PREFIX_SEPARATOR) + 1, name.length() - suffix.length()); } - throw new SchemaException("Expected a name ending with \"" + suffix + "\" but got \"" + name + "\"."); + throw new SchemaException(String.format("Expected a name ending with \"%s\" but got \"%s\".", suffix, name)); } /** @@ -550,7 +551,7 @@ public final strictfp class SchemaCompli } } } - throw new SchemaException("Node " + node.getNodeName() + " should have a '" + name + "' attribute."); + throw new SchemaException(String.format("Node \"%s\" should have a '%s' attribute.", node.getNodeName(), name)); } /**