Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataScope.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataScope.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataScope.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataScope.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -56,7 +56,7 @@ import static org.opengis.annotation.Spe
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.5
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -22,6 +22,7 @@ import javax.xml.bind.annotation.XmlElem
 import javax.xml.bind.annotation.XmlRootElement;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.PortrayalCatalogueReference;
+import org.apache.sis.xml.Namespaces;
 
 
 /**
@@ -45,13 +46,13 @@ import org.opengis.metadata.PortrayalCat
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */
 @SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
-@XmlType(name = "MD_PortrayalCatalogueReference_Type")
-@XmlRootElement(name = "MD_PortrayalCatalogueReference")
+@XmlType(name = "MD_PortrayalCatalogueReference_Type", namespace = 
Namespaces.MPC)
+@XmlRootElement(name = "MD_PortrayalCatalogueReference", namespace = 
Namespaces.MPC)
 public class DefaultPortrayalCatalogueReference extends ISOMetadata implements 
PortrayalCatalogueReference {
     /**
      * Serial number for compatibility with different versions.

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -37,6 +37,7 @@ import org.apache.sis.io.wkt.Formattable
 import org.apache.sis.io.wkt.Formatter;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.io.wkt.ElementKind;
+import org.apache.sis.xml.Namespaces;
 
 import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
 import static org.apache.sis.util.CharSequences.trimWhitespaces;
@@ -129,13 +130,13 @@ import static org.apache.sis.util.collec
  * @module
  */
 @TitleProperty(name = "code")
-@XmlType(name = "RS_Identifier_Type", propOrder = {
+@XmlType(name = "RS_Identifier_Type", namespace = Namespaces.GMD, propOrder = {
     "authority",
     "code",
     "codeSpace",
     "version"
 })
-@XmlRootElement(name = "RS_Identifier")
+@XmlRootElement(name = "RS_Identifier", namespace = Namespaces.GMD)
 public class ImmutableIdentifier extends FormattableObject implements 
ReferenceIdentifier, Serializable {
     /**
      * For cross-version compatibility.
@@ -624,6 +625,7 @@ public class ImmutableIdentifier extends
     /**
      * Empty constructor for JAXB.
      */
+    @SuppressWarnings("unused")
     private ImmutableIdentifier() {
         code        = null;
         codeSpace   = null;

Added: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/OnlineResourceAdapter.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/OnlineResourceAdapter.java?rev=1825355&view=auto
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/OnlineResourceAdapter.java
 (added)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/OnlineResourceAdapter.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import org.opengis.metadata.citation.OnlineResource;
+import org.apache.sis.internal.jaxb.metadata.CI_OnlineResource;
+import org.apache.sis.metadata.iso.citation.DefaultOnlineResource;
+
+
+/**
+ * Converts an URI to a {@code <cit:OnlineResource>} element for ISO 
19115-3:2016 compliance.
+ * We need this additional adapter because some property type changed from 
{@code URI} to
+ * {@code OnlineResource} in the upgrade from ISO 19115:2003 to ISO 
19115-1:2014.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @version 1.0
+ * @since   1.0
+ */
+final class OnlineResourceAdapter extends XmlAdapter<CI_OnlineResource, URI> {
+    /**
+     * The adapter performing the actual work.
+     */
+    private static final CI_OnlineResource ADAPTER = new 
CI_OnlineResource.Since2014();
+
+    /**
+     * Wraps the given URI in a {@code <cit:OnlineResource>} element.
+     */
+    @Override
+    public CI_OnlineResource marshal(final URI value) {
+        if (value != null) {
+            return ADAPTER.marshal(new DefaultOnlineResource(value));
+        }
+        return null;
+    }
+
+    /**
+     * Returns a URI from the given {@code <cit:OnlineResource>} element.
+     */
+    @Override
+    public URI unmarshal(final CI_OnlineResource value) throws 
URISyntaxException {
+        if (value != null) {
+            final OnlineResource res = ADAPTER.unmarshal(value);
+            if (res != null) {
+                return res.getLinkage();
+            }
+        }
+        return null;
+    }
+}

Propchange: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/OnlineResourceAdapter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/OnlineResourceAdapter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/URIStringAdapter.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/URIStringAdapter.java?rev=1825355&view=auto
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/URIStringAdapter.java
 (added)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/URIStringAdapter.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import org.apache.sis.internal.jaxb.Context;
+import org.apache.sis.internal.jaxb.gco.CharSequenceAdapter;
+import org.apache.sis.internal.jaxb.gco.GO_CharacterString;
+
+
+/**
+ * Converts an URI to a {@code <gco:CharacterSequence>} element for ISO 
19115-3:2016 compliance.
+ * We need this additional adapter because some property type changed from 
{@code URI}
+ * to {@code CharacterSequence} in the upgrade from ISO 19115:2003 to ISO 
19115-1:2014.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @version 1.0
+ * @since   1.0
+ */
+final class URIStringAdapter extends XmlAdapter<GO_CharacterString, URI> {
+    /**
+     * The adapter performing the actual work.
+     */
+    private static final CharSequenceAdapter ADAPTER = new 
CharSequenceAdapter.Since2014();
+
+    /**
+     * Wraps the given URI in a {@code <cit:OnlineResource>} element.
+     */
+    @Override
+    public GO_CharacterString marshal(final URI value) {
+        if (value != null) {
+            return ADAPTER.marshal(value.toString());
+        }
+        return null;
+    }
+
+    /**
+     * Returns a URI from the given {@code <cit:OnlineResource>} element.
+     */
+    @Override
+    public URI unmarshal(final GO_CharacterString value) throws 
URISyntaxException {
+        if (value != null) {
+            final CharSequence uri = ADAPTER.unmarshal(value);
+            if (uri != null) {
+                final Context context = Context.current();
+                return Context.converter(context).toURI(context, 
uri.toString());
+            }
+        }
+        return null;
+    }
+}

Propchange: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/URIStringAdapter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/URIStringAdapter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -46,7 +46,7 @@ import org.apache.sis.metadata.iso.ISOMe
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -48,7 +48,7 @@ import static org.apache.sis.internal.me
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -216,7 +216,7 @@ public class DefaultEnvironmentalRecord
      * @return meteorological conditions in the photo flight area, or {@code 
null}.
      */
     @Override
-    @XmlElement(name = "meteorologicalConditions", required = true)
+    @XmlElement(name = "meterologicalConditions", required = true)      // 
Really spelled that way in XSD file.
     public InternationalString getMeteorologicalConditions() {
         return meteorologicalConditions;
     }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -59,7 +59,7 @@ import static org.apache.sis.internal.me
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -49,7 +49,7 @@ import org.apache.sis.internal.jaxb.NonM
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -59,7 +59,7 @@ import org.apache.sis.internal.jaxb.NonM
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -181,7 +181,7 @@ public class DefaultObjective extends IS
      *
      * <div class="note"><b>XML note:</b>
      * The {@code <gmd:identifier>} element marshalled to XML will exclude all 
the above cited identifiers,
-     * for ISO 19139 compliance. Those identifiers will appear in other XML 
elements or attributes.</div>
+     * for compliance with ISO 19115 model. Those identifiers will appear in 
other XML elements or attributes.</div>
      *
      * @return identification of the objective.
      */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -55,7 +55,7 @@ import org.apache.sis.internal.jaxb.NonM
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -237,7 +237,7 @@ public class DefaultOperation extends IS
      * @return unique identification of the operation, or {@code null}.
      */
     @Override
-    @XmlElement(name = "identifier", required = true)
+    @XmlElement(name = "identifier")
     public Identifier getIdentifier() {
         return NonMarshalledAuthority.getMarshallable(identifiers);
     }
@@ -341,7 +341,7 @@ public class DefaultOperation extends IS
      * @return heritage of the operation, or {@code null}.
      */
     @Override
-    @XmlElement(name = "parentOperation", required = true)
+    @XmlElement(name = "parentOperation")
     public Operation getParentOperation() {
         return parentOperation;
     }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -50,7 +50,7 @@ import org.apache.sis.metadata.iso.ISOMe
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -53,7 +53,7 @@ import org.apache.sis.internal.jaxb.NonM
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -47,7 +47,7 @@ import org.apache.sis.internal.jaxb.NonM
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -46,7 +46,7 @@ import static org.apache.sis.internal.me
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -65,7 +65,7 @@ import static org.apache.sis.internal.me
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -350,7 +350,7 @@ public class DefaultRequirement extends
      * @return plan that identifies solution to satisfy the requirement.
      */
     @Override
-    @XmlElement(name = "satisfiedPlan")
+    @XmlElement(name = "satisifiedPlan")                // Really spelled that 
way in XSD file.
     public Collection<Plan> getSatisfiedPlans() {
         return satisfiedPlans = nonNullCollection(satisfiedPlans, Plan.class);
     }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/package-info.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -86,21 +86,24 @@
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
-@XmlSchema(location=Schemas.METADATA_XSD, 
elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.GMI, xmlns = {
-    @XmlNs(prefix = "gmi", namespaceURI = Namespaces.GMI),
-    @XmlNs(prefix = "gmd", namespaceURI = Namespaces.GMD),
-    @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO),
-    @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI)
+@XmlSchema(location="http://standards.iso.org/iso/19115/-3/mac/1.0/mac.xsd";,
+           elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.MAC,
+           xmlns = {
+                @XmlNs(prefix = "mac", namespaceURI = Namespaces.MAC),      // 
Metadata for Acquisition
+                @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC)       // 
Metadata Common Classes
 })
 @XmlAccessorType(XmlAccessType.NONE)
 @XmlJavaTypeAdapters({
     @XmlJavaTypeAdapter(CI_Citation.class),
     @XmlJavaTypeAdapter(CI_ResponsibleParty.class),
     @XmlJavaTypeAdapter(EX_Extent.class),
+    @XmlJavaTypeAdapter(GO_DateTime.class),
+    @XmlJavaTypeAdapter(GO_Real.class),
     @XmlJavaTypeAdapter(GM_Object.class),
     @XmlJavaTypeAdapter(MD_Identifier.class),
     @XmlJavaTypeAdapter(MD_ProgressCode.class),
@@ -123,8 +126,6 @@
     @XmlJavaTypeAdapter(MI_TriggerCode.class),
 
     // Java types, primitive types and basic OGC types handling
-    @XmlJavaTypeAdapter(GO_DateTime.class),
-    @XmlJavaTypeAdapter(StringAdapter.class),
     @XmlJavaTypeAdapter(InternationalStringAdapter.class)
 })
 package org.apache.sis.metadata.iso.acquisition;
@@ -137,7 +138,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.Schemas;
 import org.apache.sis.internal.jaxb.gco.*;
 import org.apache.sis.internal.jaxb.code.*;
 import org.apache.sis.internal.jaxb.metadata.*;

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -61,7 +61,7 @@ import static org.opengis.annotation.Spe
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.5
  * @module
  */
@@ -71,7 +71,7 @@ import static org.opengis.annotation.Spe
     "name",
     "contactInfo"
 })
-@XmlRootElement(name = "CI_Party")
+@XmlRootElement(name = "AbstractCI_Party")
 @XmlSeeAlso({
     DefaultIndividual.class,
     DefaultOrganisation.class

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -40,7 +40,7 @@ import org.apache.sis.metadata.iso.ISOMe
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -21,7 +21,6 @@ import java.util.Collection;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
-import org.opengis.annotation.UML;
 import org.opengis.metadata.Identifier;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.citation.CitationDate;
@@ -32,12 +31,16 @@ import org.opengis.metadata.citation.Ser
 import org.opengis.metadata.identification.BrowseGraphic;
 import org.opengis.util.InternationalString;
 import org.apache.sis.util.iso.Types;
+import org.apache.sis.internal.jaxb.FilterByVersion;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
 import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 import org.apache.sis.metadata.TitleProperty;
 import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.xml.IdentifierSpace;
 import org.apache.sis.xml.IdentifierMap;
 
+// Branch-specific imports
+import org.opengis.annotation.UML;
 import static org.opengis.annotation.Obligation.OPTIONAL;
 import static org.opengis.annotation.Specification.ISO_19115;
 import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
@@ -57,7 +60,7 @@ import static org.apache.sis.internal.me
  * The ISO 19115 model provides specific attributes for the {@linkplain 
#getISBN() ISBN} and
  * {@linkplain #getISSN() ISSN} codes. However the SIS library handles those 
codes like any
  * other identifiers. Consequently the ISBN and ISSN codes are included in the 
collection
- * returned by {@link #getIdentifiers()}, except at XML marshalling time (for 
ISO 19139 compliance).
+ * returned by {@link #getIdentifiers()}, except at XML marshalling time (for 
ISO 19115-3 compliance).
  *
  * <div class="section">Limitations</div>
  * <ul>
@@ -71,7 +74,8 @@ import static org.apache.sis.internal.me
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Cédric Briançon (Geomatys)
  * @author  Rémi Maréchal (Geomatys)
- * @version 0.7
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -90,7 +94,9 @@ import static org.apache.sis.internal.me
     "otherCitationDetails",
     "collectiveTitle",
     "ISBN",
-    "ISSN"
+    "ISSN",
+    "onlineResource",           // New in ISO 19115:2014
+    "graphic"                   // Ibid.
 })
 @XmlRootElement(name = "CI_Citation")
 public class DefaultCitation extends ISOMetadata implements Citation {
@@ -297,7 +303,7 @@ public class DefaultCitation extends ISO
      * @return the reference date.
      */
     @Override
-    @XmlElement(name = "date", required = true)
+    @XmlElement(name = "date")
     public Collection<CitationDate> getDates() {
         return dates = nonNullCollection(dates, CitationDate.class);
     }
@@ -366,7 +372,7 @@ public class DefaultCitation extends ISO
      *
      * <div class="note"><b>XML note:</b>
      * The {@code <gmd:identifier>} element marshalled to XML will exclude all 
the above cited identifiers,
-     * for ISO 19139 compliance. Those identifiers will appear in other XML 
elements or attributes.</div>
+     * for ISO 19115-3 compliance. Those identifiers will appear in other XML 
elements or attributes.</div>
      *
      * @return the identifiers, or an empty collection if none.
      *
@@ -511,9 +517,9 @@ public class DefaultCitation extends ISO
      */
     @Override
     @Deprecated
-    @XmlElement(name = "collectiveTitle")
+    @XmlElement(name = "collectiveTitle", namespace = LegacyNamespaces.GMD)
     public InternationalString getCollectiveTitle() {
-        return collectiveTitle;
+        return FilterByVersion.LEGACY_METADATA.accept() ? collectiveTitle : 
null;
     }
 
     /**
@@ -615,7 +621,7 @@ public class DefaultCitation extends ISO
      *
      * @since 0.5
      */
-/// @XmlElement(name = "onlineResource")
+    // @XmlElement at the end of this class.
     @UML(identifier="onlineResource", obligation=OPTIONAL, 
specification=ISO_19115)
     public Collection<OnlineResource> getOnlineResources() {
         return onlineResources = nonNullCollection(onlineResources, 
OnlineResource.class);
@@ -639,7 +645,7 @@ public class DefaultCitation extends ISO
      *
      * @since 0.5
      */
-/// @XmlElement(name = "graphic")
+    // @XmlElement at the end of this class.
     @UML(identifier="graphic", obligation=OPTIONAL, specification=ISO_19115)
     public Collection<BrowseGraphic> getGraphics() {
         return graphics = nonNullCollection(graphics, BrowseGraphic.class);
@@ -655,4 +661,33 @@ public class DefaultCitation extends ISO
     public void setGraphics(final Collection<? extends BrowseGraphic> 
newValues) {
         graphics = writeCollection(newValues, graphics, BrowseGraphic.class);
     }
+
+
+
+
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+    ////////                                                                   
               ////////
+    ////////                               XML support with JAXB               
               ////////
+    ////////                                                                   
               ////////
+    ////////        The following methods are invoked by JAXB using reflection 
(even if       ////////
+    ////////        they are private) or are helpers for other methods invoked 
by JAXB.       ////////
+    ////////        Those methods can be safely removed if Geographic Markup 
Language         ////////
+    ////////        (GML) support is not needed.                               
               ////////
+    ////////                                                                   
               ////////
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Invoked by JAXB at both marshalling and unmarshalling time.
+     * This attribute has been added by ISO 19115:2014 standard.
+     * If (and only if) marshalling an older standard version, we omit this 
attribute.
+     */
+    @XmlElement(name = "onlineResource")
+    private Collection<OnlineResource> getOnlineResource() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? 
getOnlineResources() : null;
+    }
+
+    @XmlElement(name = "graphic")
+    private Collection<BrowseGraphic> getGraphic() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? getGraphics() : 
null;
+    }
 }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -48,7 +48,7 @@ import static org.apache.sis.internal.me
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultContact.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultContact.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultContact.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultContact.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -22,8 +22,7 @@ import java.util.Collection;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
-import org.opengis.annotation.UML;
-import org.opengis.util.CodeList;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.util.InternationalString;
 import org.opengis.metadata.citation.Address;
 import org.opengis.metadata.citation.Contact;
@@ -32,10 +31,16 @@ import org.opengis.metadata.citation.Onl
 import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.util.resources.Messages;
 import org.apache.sis.internal.jaxb.Context;
+import org.apache.sis.internal.jaxb.FilterByVersion;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
+import org.apache.sis.internal.jaxb.gco.InternationalStringAdapter;
 import org.apache.sis.internal.metadata.Dependencies;
 import org.apache.sis.internal.metadata.LegacyPropertyAdapter;
 import org.apache.sis.internal.geoapi.evolution.UnsupportedCodeList;
 
+// Branch-specific imports
+import org.opengis.util.CodeList;
+import org.opengis.annotation.UML;
 import static org.opengis.annotation.Obligation.OPTIONAL;
 import static org.opengis.annotation.Specification.ISO_19115;
 
@@ -56,17 +61,22 @@ import static org.opengis.annotation.Spe
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
  * @author  Rémi Maréchal (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
 @SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
 @XmlType(name = "CI_Contact_Type", propOrder = {
     "phone",
+    "phoneList",
     "address",
+    "addressList",
     "onlineResource",
+    "onlineResourceList",
     "hoursOfService",
-    "contactInstructions"
+    "contactInstructions",
+    "contactType"
 })
 @XmlRootElement(name = "CI_Contact")
 public class DefaultContact extends ISOMetadata implements Contact {
@@ -181,6 +191,7 @@ public class DefaultContact extends ISOM
      *
      * @since 0.5
      */
+    // @XmlElement at the end of this class.
     @UML(identifier="phone", obligation=OPTIONAL, specification=ISO_19115)
     public Collection<Telephone> getPhones() {
         return phones = nonNullCollection(phones, Telephone.class);
@@ -197,9 +208,9 @@ public class DefaultContact extends ISOM
         phones = writeCollection(newValues, phones, Telephone.class);
         /*
          * Code below this point will be deleted after we removed the 
deprecated methods in DefaultTelephone.
-         * This code notifies all DefaultTelephone instances about the the 
list of phones in order to allow
-         * the deprecated Telephone.getVoices() and Telephone.getFacsimiles() 
methods to fetches information
-         * from the phones list.
+         * This code notifies all DefaultTelephone instances about the list of 
phones in order to allow the
+         * deprecated Telephone.getVoices() and Telephone.getFacsimiles() 
methods to fetches information from
+         * the phones list.
          */
         if (phones != null) {
             boolean modified = false;
@@ -229,29 +240,31 @@ public class DefaultContact extends ISOM
      */
     @Override
     @Deprecated
-    @XmlElement(name = "phone")
     @Dependencies("getPhones")
+    @XmlElement(name = "phone", namespace = LegacyNamespaces.GMD)
     public Telephone getPhone() {
         Telephone phone = null;
-        final Collection<Telephone> phones = getPhones();
-        if (phones != null) { // May be null on marshalling.
-            CodeList<?> ignored = null;
-            for (final Telephone c : phones) {
-                if (c instanceof DefaultTelephone) {
-                    String name;
-                    final CodeList<?> type = ((DefaultTelephone) c).numberType;
-                    if (type != null && ("VOICE".equals(name = type.name()) || 
"FACSIMILE".equals(name))) {
-                        if (phone == null) {
-                            phone = c;
+        if (FilterByVersion.LEGACY_METADATA.accept()) {
+            final Collection<Telephone> phones = getPhones();
+            if (phones != null) { // May be null on marshalling.
+                CodeList<?> ignored = null;
+                for (final Telephone c : phones) {
+                    if (c instanceof DefaultTelephone) {
+                        String name;
+                        final CodeList<?> type = ((DefaultTelephone) 
c).numberType;
+                        if (type != null && ("VOICE".equals(name = 
type.name()) || "FACSIMILE".equals(name))) {
+                            if (phone == null) {
+                                phone = c;
+                            }
+                        } else if (ignored == null) {
+                            ignored = type;
                         }
-                    } else if (ignored == null) {
-                        ignored = type;
                     }
                 }
-            }
-            if (ignored != null) {
-                Context.warningOccured(Context.current(), 
DefaultContact.class, "getPhone",
-                        Messages.class, 
Messages.Keys.IgnoredPropertyAssociatedTo_1, ignored);
+                if (ignored != null) {
+                    Context.warningOccured(Context.current(), 
DefaultContact.class, "getPhone",
+                            Messages.class, 
Messages.Keys.IgnoredPropertyAssociatedTo_1, ignored);
+                }
             }
         }
         return phone;
@@ -291,6 +304,7 @@ public class DefaultContact extends ISOM
      *
      * @since 0.5
      */
+    // @XmlElement at the end of this class.
     @UML(identifier="address", obligation=OPTIONAL, specification=ISO_19115)
     public Collection<Address> getAddresses() {
         return addresses = nonNullCollection(addresses, Address.class);
@@ -317,10 +331,13 @@ public class DefaultContact extends ISOM
      */
     @Override
     @Deprecated
-    @XmlElement(name = "address")
     @Dependencies("getAddresses")
+    @XmlElement(name = "address", namespace = LegacyNamespaces.GMD)
     public Address getAddress() {
-        return LegacyPropertyAdapter.getSingleton(getAddresses(), 
Address.class, null, DefaultContact.class, "getAddress");
+        if (FilterByVersion.LEGACY_METADATA.accept()) {
+            return LegacyPropertyAdapter.getSingleton(getAddresses(), 
Address.class, null, DefaultContact.class, "getAddress");
+        }
+        return null;                // Marshalling newer ISO 19115-3
     }
 
     /**
@@ -343,6 +360,7 @@ public class DefaultContact extends ISOM
      *
      * @since 0.5
      */
+    // @XmlElement at the end of this class.
     @UML(identifier="onlineResource", obligation=OPTIONAL, 
specification=ISO_19115)
     public Collection<OnlineResource> getOnlineResources() {
         return onlineResources = nonNullCollection(onlineResources, 
OnlineResource.class);
@@ -369,10 +387,13 @@ public class DefaultContact extends ISOM
      */
     @Override
     @Deprecated
-    @XmlElement(name = "onlineResource")
     @Dependencies("getOnlineResources")
+    @XmlElement(name = "onlineResource", namespace = LegacyNamespaces.GMD)
     public OnlineResource getOnlineResource() {
-        return LegacyPropertyAdapter.getSingleton(getOnlineResources(), 
OnlineResource.class, null, DefaultContact.class, "getOnlineResource");
+        if (FilterByVersion.LEGACY_METADATA.accept()) {
+            return LegacyPropertyAdapter.getSingleton(getOnlineResources(), 
OnlineResource.class, null, DefaultContact.class, "getOnlineResource");
+        }
+        return null;                // Marshalling newer ISO 19115-3
     }
 
     /**
@@ -448,7 +469,8 @@ public class DefaultContact extends ISOM
      *
      * @since 0.5
      */
-/// @XmlElement(name = "contactType")
+    @XmlElement(name = "contactType")
+    @XmlJavaTypeAdapter(InternationalStringAdapter.Since2014.class)
     @UML(identifier="contactType", obligation=OPTIONAL, 
specification=ISO_19115)
     public InternationalString getContactType() {
         return contactType;
@@ -465,4 +487,38 @@ public class DefaultContact extends ISOM
         checkWritePermission();
         contactType = newValue;
     }
+
+
+
+
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+    ////////                                                                   
               ////////
+    ////////                               XML support with JAXB               
               ////////
+    ////////                                                                   
               ////////
+    ////////        The following methods are invoked by JAXB using reflection 
(even if       ////////
+    ////////        they are private) or are helpers for other methods invoked 
by JAXB.       ////////
+    ////////        Those methods can be safely removed if Geographic Markup 
Language         ////////
+    ////////        (GML) support is not needed.                               
               ////////
+    ////////                                                                   
               ////////
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Invoked by JAXB at both marshalling and unmarshalling time.
+     * This attribute has been added by ISO 19115:2014 standard.
+     * If (and only if) marshalling an older standard version, we omit this 
attribute.
+     */
+    @XmlElement(name = "phone")
+    private Collection<Telephone> getPhoneList() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? getPhones() : null;
+    }
+
+    @XmlElement(name = "address")
+    private Collection<Address> getAddressList() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? getAddresses() : 
null;
+    }
+
+    @XmlElement(name = "onlineResource")
+    private Collection<OnlineResource> getOnlineResourceList() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? 
getOnlineResources() : null;
+    }
 }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultIndividual.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultIndividual.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultIndividual.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultIndividual.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -51,7 +51,7 @@ import static org.opengis.annotation.Spe
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.5
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOnlineResource.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -20,12 +20,16 @@ import java.net.URI;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
-import org.opengis.annotation.UML;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.util.InternationalString;
 import org.opengis.metadata.citation.OnLineFunction;
 import org.opengis.metadata.citation.OnlineResource;
+import org.apache.sis.internal.jaxb.gco.StringAdapter;
+import org.apache.sis.internal.jaxb.gco.URIAdapter;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
+// Branch-specific imports
+import org.opengis.annotation.UML;
 import static org.opengis.annotation.Obligation.OPTIONAL;
 import static org.opengis.annotation.Specification.ISO_19115;
 
@@ -50,7 +54,8 @@ import static org.opengis.annotation.Spe
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -61,7 +66,8 @@ import static org.opengis.annotation.Spe
     "applicationProfile",
     "name",
     "description",
-    "function"
+    "function",
+    "protocolRequest"
 })
 @XmlRootElement(name = "CI_OnlineResource")
 public class DefaultOnlineResource extends ISOMetadata implements 
OnlineResource {
@@ -273,6 +279,7 @@ public class DefaultOnlineResource exten
      */
     @Override
     @XmlElement(name = "linkage", required = true)
+    @XmlJavaTypeAdapter(URIAdapter.AsURL.class)
     public URI getLinkage() {
         return linkage;
     }
@@ -331,6 +338,8 @@ public class DefaultOnlineResource exten
      *
      * @since 0.5
      */
+    @XmlElement(name = "protocolRequest")
+    @XmlJavaTypeAdapter(StringAdapter.Since2014.class)
     @UML(identifier="protocolRequest", obligation=OPTIONAL, 
specification=ISO_19115)
     public String getProtocolRequest() {
         return protocolRequest;

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOrganisation.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOrganisation.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOrganisation.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultOrganisation.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -52,7 +52,7 @@ import static org.opengis.annotation.Spe
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.5
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibility.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibility.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibility.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibility.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -21,10 +21,13 @@ import javax.xml.bind.annotation.XmlType
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.metadata.citation.Role;
 import org.opengis.metadata.extent.Extent;
 import org.opengis.metadata.citation.ResponsibleParty;
 import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.jaxb.FilterByVersion;
+import org.apache.sis.internal.jaxb.code.CI_RoleCode;
 
 // Branch-specific imports
 import org.opengis.annotation.UML;
@@ -62,15 +65,16 @@ import static org.opengis.annotation.Spe
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.5
  * @module
  */
-@SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
+@SuppressWarnings({"CloneableClassWithoutClone", "deprecation"})    // 
ModifiableMetadata needs shallow clones.
 @XmlType(name = "CI_Responsibility_Type", propOrder = {
-/// "role",
-/// "extents",
-/// "parties"
+    "role",
+    "extent",
+    "party"
 })
 @XmlRootElement(name = "CI_Responsibility")
 @XmlSeeAlso({
@@ -153,7 +157,8 @@ public class DefaultResponsibility exten
      *
      * @return function performed by the responsible party.
      */
-/// @XmlElement(name = "role", required = true)
+    @XmlElement(name = "role", required = true)
+    @XmlJavaTypeAdapter(CI_RoleCode.Since2014.class)
     @UML(identifier="role", obligation=MANDATORY, specification=ISO_19115)
     public Role getRole() {
         return role;
@@ -174,7 +179,7 @@ public class DefaultResponsibility exten
      *
      * @return the spatial or temporal extents of the role.
      */
-/// @XmlElement(name = "extent")
+    // @XmlElement at the end of this class.
     @UML(identifier="extent", obligation=OPTIONAL, specification=ISO_19115)
     public Collection<Extent> getExtents() {
         return extents = nonNullCollection(extents, Extent.class);
@@ -199,7 +204,7 @@ public class DefaultResponsibility exten
      *
      * @return information about the parties.
      */
-/// @XmlElement(name = "party", required = true)
+    // @XmlElement at the end of this class.
     @UML(identifier="party", obligation=MANDATORY, specification=ISO_19115)
     public Collection<AbstractParty> getParties() {
         return parties = nonNullCollection(parties, AbstractParty.class);
@@ -218,4 +223,33 @@ public class DefaultResponsibility exten
     public void setParties(final Collection<? extends AbstractParty> 
newValues) {
         parties = writeCollection(newValues, parties, AbstractParty.class);
     }
+
+
+
+
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+    ////////                                                                   
               ////////
+    ////////                               XML support with JAXB               
               ////////
+    ////////                                                                   
               ////////
+    ////////        The following methods are invoked by JAXB using reflection 
(even if       ////////
+    ////////        they are private) or are helpers for other methods invoked 
by JAXB.       ////////
+    ////////        Those methods can be safely removed if Geographic Markup 
Language         ////////
+    ////////        (GML) support is not needed.                               
               ////////
+    ////////                                                                   
               ////////
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Invoked by JAXB at both marshalling and unmarshalling time.
+     * This attribute has been added by ISO 19115:2014 standard.
+     * If (and only if) marshalling an older standard version, we omit this 
attribute.
+     */
+    @XmlElement(name = "extent")
+    private Collection<Extent> getExtent() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? getExtents() : null;
+    }
+
+    @XmlElement(name = "party", required = true)
+    private Collection<AbstractParty> getParty() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? getParties() : null;
+    }
 }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -27,6 +27,7 @@ import org.opengis.metadata.citation.Res
 import org.opengis.metadata.citation.Role;
 import org.opengis.util.InternationalString;
 import org.apache.sis.util.iso.Types;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
 import org.apache.sis.internal.metadata.Dependencies;
 import org.apache.sis.internal.metadata.LegacyPropertyAdapter;
 
@@ -51,19 +52,19 @@ import org.apache.sis.internal.metadata.
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.3
  * @module
  */
 @SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
-@XmlType(name = "CI_ResponsibleParty_Type", propOrder = {
+@XmlType(name = "CI_ResponsibleParty_Type", namespace = LegacyNamespaces.GMD, 
propOrder = {
     "individualName",
     "organisationName",
     "positionName",
     "contactInfo",
     "role"
 })
-@XmlRootElement(name = "CI_ResponsibleParty")
+@XmlRootElement(name = "CI_ResponsibleParty", namespace = LegacyNamespaces.GMD)
 public class DefaultResponsibleParty extends DefaultResponsibility implements 
ResponsibleParty {
     /**
      * Serial number for inter-operability with different versions.
@@ -235,8 +236,8 @@ public class DefaultResponsibleParty ext
      */
     @Override
     @Deprecated
-    @XmlElement(name = "individualName")
     @Dependencies("getParties")
+    @XmlElement(name = "individualName")
     public String getIndividualName() {
         final InternationalString name = getIndividual(false);
         return (name != null) ? name.toString() : null;
@@ -356,12 +357,12 @@ public class DefaultResponsibleParty ext
     @Dependencies("getParties")
     public Contact getContactInfo() {
         final Collection<AbstractParty> parties = getParties();
-        if (parties != null) { // May be null on marshalling.
+        if (parties != null) {                                          // May 
be null on marshalling.
             for (final AbstractParty party : parties) {
                 final Collection<? extends Contact> contacts = 
party.getContactInfo();
-                if (contacts != null) { // May be null on marshalling.
+                if (contacts != null) {                                 // May 
be null on marshalling.
                     for (final Contact contact : contacts) {
-                        if (contact != null) { // Paranoiac check.
+                        if (contact != null) {                          // 
Paranoiac check.
                             return contact;
                         }
                     }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultSeries.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultSeries.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultSeries.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultSeries.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -39,7 +39,7 @@ import org.apache.sis.util.iso.Types;
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -22,11 +22,14 @@ import java.util.Collections;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
-import org.opengis.util.CodeList;
-import org.opengis.annotation.UML;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.metadata.citation.Telephone;
-import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.metadata.iso.ISOMetadata;
+import org.apache.sis.internal.util.CollectionsExt;
+import org.apache.sis.internal.jaxb.FilterByVersion;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
+import org.apache.sis.internal.jaxb.gco.StringAdapter;
+import org.apache.sis.internal.jaxb.code.CI_TelephoneTypeCode;
 import org.apache.sis.internal.metadata.Dependencies;
 
 import static org.opengis.annotation.Obligation.OPTIONAL;
@@ -34,6 +37,8 @@ import static org.opengis.annotation.Obl
 import static org.opengis.annotation.Specification.ISO_19115;
 
 // Branch-specific imports
+import org.opengis.util.CodeList;
+import org.opengis.annotation.UML;
 import org.apache.sis.internal.geoapi.evolution.InterimType;
 import org.apache.sis.internal.geoapi.evolution.UnsupportedCodeList;
 
@@ -70,7 +75,8 @@ import org.apache.sis.internal.geoapi.ev
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Cédric Briançon (Geomatys)
  * @author  Rémi Maréchal (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  *
  * @see DefaultContact#getPhones()
  *
@@ -79,8 +85,10 @@ import org.apache.sis.internal.geoapi.ev
  */
 @SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
 @XmlType(name = "CI_Telephone_Type", propOrder = {
-    "voices",
-    "facsimiles"
+    "number",           // New in ISO 19115:2014
+    "numberType",       // Ibid.
+    "voices",           // Legacy ISO 19115:2003
+    "facsimiles"        // Ibid.
 })
 @XmlRootElement(name = "CI_Telephone")
 public class DefaultTelephone extends ISOMetadata implements Telephone {
@@ -172,7 +180,8 @@ public class DefaultTelephone extends IS
      *
      * @since 0.5
      */
-/// @XmlElement(name = "number", required = true)
+    @XmlElement(name = "number", required = true)
+    @XmlJavaTypeAdapter(StringAdapter.Since2014.class)
     @UML(identifier="number", obligation=MANDATORY, specification=ISO_19115)
     public String getNumber() {
         return number;
@@ -203,9 +212,10 @@ public class DefaultTelephone extends IS
      *
      * @since 0.5
      */
-/// @XmlElement(name = "numberType")
-    @UML(identifier="numberType", obligation=OPTIONAL, specification=ISO_19115)
     @InterimType(UnsupportedCodeList.class)
+    @XmlElement(name = "numberType")
+    @XmlJavaTypeAdapter(CI_TelephoneTypeCode.Since2014.class)
+    @UML(identifier="numberType", obligation=OPTIONAL, specification=ISO_19115)
     public CodeList<?> getNumberType() {
         return numberType;
     }
@@ -319,10 +329,13 @@ public class DefaultTelephone extends IS
      */
     @Override
     @Deprecated
-    @XmlElement(name = "voice")
     @Dependencies({"getNumber", "getNumberType"})
+    @XmlElement(name = "voice", namespace = LegacyNamespaces.GMD)
     public final Collection<String> getVoices() {
-        return new LegacyTelephones(getOwner(), UnsupportedCodeList.VOICE);
+        if (FilterByVersion.LEGACY_METADATA.accept()) {
+            return new LegacyTelephones(getOwner(), UnsupportedCodeList.VOICE);
+        }
+        return null;
     }
 
     /**
@@ -352,10 +365,13 @@ public class DefaultTelephone extends IS
      */
     @Override
     @Deprecated
-    @XmlElement(name = "facsimile")
     @Dependencies({"getNumber", "getNumberType"})
+    @XmlElement(name = "facsimile", namespace = LegacyNamespaces.GMD)
     public final Collection<String> getFacsimiles() {
-        return new LegacyTelephones(getOwner(), UnsupportedCodeList.FACSIMILE);
+        if (FilterByVersion.LEGACY_METADATA.accept()) {
+            return new LegacyTelephones(getOwner(), 
UnsupportedCodeList.FACSIMILE);
+        }
+        return null;                    // Marshalling newer ISO 19115-3 
document.
     }
 
     /**

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -66,7 +66,7 @@
  * Apache SIS provides a unified view of all metadata identifiers. This view 
includes the citation
  * {@linkplain org.apache.sis.metadata.iso.citation.DefaultCitation#getISBN() 
ISBN} and
  * {@linkplain org.apache.sis.metadata.iso.citation.DefaultCitation#getISSN() 
ISSN} codes,
- * except at XML marshalling time (for ISO 19139 compliance).
+ * except at XML marshalling time (for ISO 19115-3 compliance).
  * See {@link org.apache.sis.xml.IdentifierMap} for more information.
  *
  * <div class="section">Null values, nil objects and collections</div>
@@ -86,14 +86,17 @@
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.7
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
-@XmlSchema(location=Schemas.METADATA_XSD, 
elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.GMD, xmlns = {
-    @XmlNs(prefix = "gmd", namespaceURI = Namespaces.GMD),
-    @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO),
-    @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI)
+@XmlSchema(location="http://standards.iso.org/iso/19115/-3/cit/1.0/cit.xsd";,
+           elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.CIT,
+           xmlns = {
+                @XmlNs(prefix = "cit", namespaceURI = Namespaces.CIT),      // 
Citation and responsible party information
+                @XmlNs(prefix = "mcc", namespaceURI = Namespaces.MCC),      // 
Metadata Common Classes
+                @XmlNs(prefix = "gmd", namespaceURI = LegacyNamespaces.GMD)
 })
 @XmlAccessorType(XmlAccessType.NONE)
 @XmlJavaTypeAdapters({
@@ -110,11 +113,11 @@
     @XmlJavaTypeAdapter(CI_Series.class),
     @XmlJavaTypeAdapter(CI_Telephone.class),
     @XmlJavaTypeAdapter(EX_Extent.class),
+    @XmlJavaTypeAdapter(GO_DateTime.class),
+    @XmlJavaTypeAdapter(MD_BrowseGraphic.class),
     @XmlJavaTypeAdapter(MD_Identifier.class),
 
     // Java types, primitive types and basic OGC types handling
-    @XmlJavaTypeAdapter(GO_URL.class),
-    @XmlJavaTypeAdapter(GO_DateTime.class),
     @XmlJavaTypeAdapter(StringAdapter.class),
     @XmlJavaTypeAdapter(InternationalStringAdapter.class)
 })
@@ -128,8 +131,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.Schemas;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
 import org.apache.sis.internal.jaxb.gco.*;
-import org.apache.sis.internal.jaxb.gmd.*;
 import org.apache.sis.internal.jaxb.code.*;
 import org.apache.sis.internal.jaxb.metadata.*;

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -21,7 +21,7 @@ import javax.xml.bind.annotation.XmlType
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
-import org.opengis.annotation.UML;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.util.InternationalString;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.identification.BrowseGraphic;
@@ -30,9 +30,14 @@ import org.opengis.metadata.constraint.L
 import org.opengis.metadata.constraint.SecurityConstraints;
 import org.opengis.metadata.quality.Scope;
 import org.apache.sis.metadata.iso.citation.DefaultResponsibility;
+import org.apache.sis.internal.jaxb.FilterByVersion;
+import org.apache.sis.internal.jaxb.metadata.MD_Releasability;
+import org.apache.sis.internal.jaxb.metadata.MD_Scope;
 import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.util.iso.Types;
 
+// Branch-specific imports
+import org.opengis.annotation.UML;
 import static org.opengis.annotation.Obligation.OPTIONAL;
 import static org.opengis.annotation.Specification.ISO_19115;
 
@@ -53,19 +58,20 @@ import static org.opengis.annotation.Spe
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
  * @author  Rémi Maréchal (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
 @SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
-@XmlType(name = "MD_Constraints_Type" /*, propOrder = {
-    "useLimitation",
+@XmlType(name = "MD_Constraints_Type", propOrder = {
+    "useLimitations",
     "constraintApplicationScope",
-    "graphic",
-    "reference",
-    "releasability",
-    "responsibleParty"
-} */)
+    "graphic",                      // New in ISO 19115:2014
+    "reference",                    // Ibid.
+    "releasability",                // Ibid.
+    "responsibleParty"              // Ibid.
+})
 @XmlRootElement(name = "MD_Constraints")
 @XmlSeeAlso({
     DefaultLegalConstraints.class,
@@ -214,7 +220,8 @@ public class DefaultConstraints extends
      *
      * @since 0.5
      */
-/// @XmlElement(name = "constraintApplicationScope")
+    @XmlElement(name = "constraintApplicationScope")
+    @XmlJavaTypeAdapter(MD_Scope.Since2014.class)
     @UML(identifier="constraintApplicationScope", obligation=OPTIONAL, 
specification=ISO_19115)
     public Scope getConstraintApplicationScope() {
         return constraintApplicationScope;
@@ -239,7 +246,7 @@ public class DefaultConstraints extends
      *
      * @since 0.5
      */
-/// @XmlElement(name = "graphic")
+    // @XmlElement at the end of this class.
     @UML(identifier="graphic", obligation=OPTIONAL, specification=ISO_19115)
     public Collection<BrowseGraphic> getGraphics() {
         return graphics = nonNullCollection(graphics, BrowseGraphic.class);
@@ -264,7 +271,7 @@ public class DefaultConstraints extends
      *
      * @since 0.5
      */
-/// @XmlElement(name = "reference")
+    // @XmlElement at the end of this class.
     @UML(identifier="reference", obligation=OPTIONAL, specification=ISO_19115)
     public Collection<Citation> getReferences() {
         return references = nonNullCollection(references, Citation.class);
@@ -293,7 +300,8 @@ public class DefaultConstraints extends
      *
      * @since 0.5
      */
-/// @XmlElement(name = "releasability")
+    @XmlElement(name = "releasability")
+    @XmlJavaTypeAdapter(MD_Releasability.Since2014.class)
     @UML(identifier="releasability", obligation=OPTIONAL, 
specification=ISO_19115)
     public DefaultReleasability getReleasability() {
         return releasability;
@@ -328,7 +336,7 @@ public class DefaultConstraints extends
      *
      * @since 0.5
      */
-/// @XmlElement(name = "responsibleParty")
+    // @XmlElement at the end of this class.
     @UML(identifier="responsibleParty", obligation=OPTIONAL, 
specification=ISO_19115)
     public Collection<DefaultResponsibility> getResponsibleParties() {
         return responsibleParties = nonNullCollection(responsibleParties, 
DefaultResponsibility.class);
@@ -349,4 +357,38 @@ public class DefaultConstraints extends
     public void setResponsibleParties(final Collection<? extends 
DefaultResponsibility> newValues) {
         responsibleParties = writeCollection(newValues, responsibleParties, 
DefaultResponsibility.class);
     }
+
+
+
+
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+    ////////                                                                   
               ////////
+    ////////                               XML support with JAXB               
               ////////
+    ////////                                                                   
               ////////
+    ////////        The following methods are invoked by JAXB using reflection 
(even if       ////////
+    ////////        they are private) or are helpers for other methods invoked 
by JAXB.       ////////
+    ////////        Those methods can be safely removed if Geographic Markup 
Language         ////////
+    ////////        (GML) support is not needed.                               
               ////////
+    ////////                                                                   
               ////////
+    
//////////////////////////////////////////////////////////////////////////////////////////////////
+
+    /**
+     * Invoked by JAXB at both marshalling and unmarshalling time.
+     * This attribute has been added by ISO 19115:2014 standard.
+     * If (and only if) marshalling an older standard version, we omit this 
attribute.
+     */
+    @XmlElement(name = "graphic")
+    private Collection<BrowseGraphic> getGraphic() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? getGraphics() : 
null;
+    }
+
+    @XmlElement(name = "reference")
+    private Collection<Citation> getReference() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? getReferences() : 
null;
+    }
+
+    @XmlElement(name = "responsibleParty")
+    private Collection<DefaultResponsibility> getResponsibleParty() {
+        return FilterByVersion.CURRENT_METADATA.accept() ? 
getResponsibleParties() : null;
+    }
 }

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -51,7 +51,7 @@ import org.opengis.metadata.constraint.L
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultReleasability.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultReleasability.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultReleasability.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultReleasability.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -52,7 +52,7 @@ import static org.opengis.annotation.Spe
  * </ul>
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @version 1.0
  * @since   0.5
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultSecurityConstraints.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultSecurityConstraints.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultSecurityConstraints.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultSecurityConstraints.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -43,7 +43,7 @@ import org.opengis.metadata.constraint.S
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/package-info.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -63,17 +63,22 @@
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
-@XmlSchema(location=Schemas.METADATA_XSD, 
elementFormDefault=XmlNsForm.QUALIFIED, namespace=Namespaces.GMD, xmlns = {
-    @XmlNs(prefix = "gmd", namespaceURI = Namespaces.GMD),
-    @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO),
-    @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI)
+@XmlSchema(location="http://standards.iso.org/iso/19115/-3/mco/1.0/mco.xsd";,
+           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
 })
 @XmlAccessorType(XmlAccessType.NONE)
 @XmlJavaTypeAdapters({
+    @XmlJavaTypeAdapter(CI_Citation.class),
+    @XmlJavaTypeAdapter(CI_Responsibility.class),
+    @XmlJavaTypeAdapter(MD_BrowseGraphic.class),
     @XmlJavaTypeAdapter(MD_ClassificationCode.class),
     @XmlJavaTypeAdapter(MD_RestrictionCode.class),
     @XmlJavaTypeAdapter(InternationalStringAdapter.class)
@@ -88,6 +93,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.Schemas;
 import org.apache.sis.internal.jaxb.gco.*;
 import org.apache.sis.internal.jaxb.code.*;
+import org.apache.sis.internal.jaxb.metadata.*;

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/AbstractContentInformation.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/AbstractContentInformation.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/AbstractContentInformation.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/AbstractContentInformation.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -40,13 +40,13 @@ import org.apache.sis.metadata.iso.ISOMe
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */
 @SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
 @XmlType(name = "AbstractMD_ContentInformation_Type")
-@XmlRootElement(name = "MD_ContentInformation")
+@XmlRootElement(name = "AbstractMD_ContentInformation")
 @XmlSeeAlso({
     DefaultCoverageDescription.class,
     DefaultFeatureCatalogueDescription.class

Modified: 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultAttributeGroup.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultAttributeGroup.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultAttributeGroup.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultAttributeGroup.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -58,14 +58,15 @@ import static org.opengis.annotation.Spe
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.5
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.5
  * @module
  */
 @SuppressWarnings("CloneableClassWithoutClone")                 // 
ModifiableMetadata needs shallow clones.
 @XmlType(name = "MD_AttributeGroup_Type", propOrder = {
-    "contentType",
-    "attribute"
+    "contentTypes",
+    "attributes"
 })
 @XmlRootElement(name = "MD_AttributeGroup")
 @UML(identifier="MD_AttributeGroup", specification=ISO_19115)


Reply via email to