Modified: 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/extent/Extent.xml
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/extent/Extent.xml?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/extent/Extent.xml
 (original)
+++ 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/extent/Extent.xml
 Mon Feb 26 11:28:17 2018
@@ -18,43 +18,44 @@
   under the License.
 -->
 
-<gmd:EX_Extent
-    xmlns:gco = "http://www.isotc211.org/2005/gco";
-    xmlns:gmd = "http://www.isotc211.org/2005/gmd";
+<gex:EX_Extent
+    xmlns:gex = "http://standards.iso.org/iso/19115/-3/gex/1.0";
+    xmlns:gco = "http://standards.iso.org/iso/19115/-3/gco/1.0";
     xmlns:gml = "http://www.opengis.net/gml/3.2";
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation = "http://www.isotc211.org/2005/gmd 
http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd";>
+    xsi:schemaLocation = "http://standards.iso.org/iso/19115/-3/gex/1.0
+                          
http://standards.iso.org/iso/19115/-3/gex/1.0/gex.xsd";>
 
-  <gmd:geographicElement>
-    <gmd:EX_GeographicBoundingBox id="bbox">
-      <gmd:extentTypeCode>
+  <gex:geographicElement>
+    <gex:EX_GeographicBoundingBox id="bbox">
+      <gex:extentTypeCode>
         <gco:Boolean>true</gco:Boolean>
-      </gmd:extentTypeCode>
-      <gmd:westBoundLongitude>
+      </gex:extentTypeCode>
+      <gex:westBoundLongitude>
         <gco:Decimal>-99.0</gco:Decimal>
-      </gmd:westBoundLongitude>
-      <gmd:eastBoundLongitude>
+      </gex:westBoundLongitude>
+      <gex:eastBoundLongitude>
         <gco:Decimal>-79.0</gco:Decimal>
-      </gmd:eastBoundLongitude>
-      <gmd:southBoundLatitude>
+      </gex:eastBoundLongitude>
+      <gex:southBoundLatitude>
         <gco:Decimal>14.9844</gco:Decimal>
-      </gmd:southBoundLatitude>
-      <gmd:northBoundLatitude>
+      </gex:southBoundLatitude>
+      <gex:northBoundLatitude>
         <gco:Decimal>31.0</gco:Decimal>
-      </gmd:northBoundLatitude>
-    </gmd:EX_GeographicBoundingBox>
-  </gmd:geographicElement>
-  <gmd:temporalElement>
-    <gmd:EX_TemporalExtent>
+      </gex:northBoundLatitude>
+    </gex:EX_GeographicBoundingBox>
+  </gex:geographicElement>
+  <gex:temporalElement>
+    <gex:EX_TemporalExtent>
       <!-- TODO: This block needs the sis-temporal module.
-      <gmd:extent>
+      <gex:extent>
         <gml:TimePeriod gml:id="period">
           <gml:description>Acquisition period</gml:description>
           <gml:beginPosition>2010-01-27T08:26:10-05:00</gml:beginPosition>
           <gml:endPosition>2010-08-27T08:26:10-05:00</gml:endPosition>
         </gml:TimePeriod>
-      </gmd:extent>
+      </gex:extent>
       -->
-    </gmd:EX_TemporalExtent>
-  </gmd:temporalElement>
-</gmd:EX_Extent>
+    </gex:EX_TemporalExtent>
+  </gex:temporalElement>
+</gex:EX_Extent>

Copied: 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification
 (legacy).xml (from r1825261, 
sis/branches/JDK8/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification
 (legacy).xml)
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification%20%28legacy%29.xml?p2=sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification%20%28legacy%29.xml&p1=sis/branches/JDK8/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification%20%28legacy%29.xml&r1=1825261&r2=1825355&rev=1825355&view=diff
==============================================================================
--- 
sis/branches/JDK8/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification
 (legacy).xml (original)
+++ 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification
 (legacy).xml Mon Feb 26 11:28:17 2018
@@ -76,9 +76,6 @@
               </gco:TypeName>
             </gco:attributeType>
           </srv:name>
-          <srv:direction>
-            <srv:SV_ParameterDirection>in</srv:SV_ParameterDirection>
-          </srv:direction>
           <srv:optionality>
             <gco:CharacterString>Optional</gco:CharacterString>
           </srv:optionality>

Modified: 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification.xml
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification.xml?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification.xml
 (original)
+++ 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/identification/ServiceIdentification.xml
 Mon Feb 26 11:28:17 2018
@@ -19,82 +19,114 @@
 -->
 
 <srv:SV_ServiceIdentification
-    xmlns:srv = "http://www.isotc211.org/2005/srv";
-    xmlns:gmd = "http://www.isotc211.org/2005/gmd";
-    xmlns:gco = "http://www.isotc211.org/2005/gco";
+    xmlns:srv = "http://standards.iso.org/iso/19115/-3/srv/2.0";
+    xmlns:mri = "http://standards.iso.org/iso/19115/-3/mri/1.0";
+    xmlns:cit = "http://standards.iso.org/iso/19115/-3/cit/1.0";
+    xmlns:gco = "http://standards.iso.org/iso/19115/-3/gco/1.0";
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation = "http://www.isotc211.org/2005/srv 
http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd";>
+    xsi:schemaLocation = "http://standards.iso.org/iso/19115/-3/srv/2.0
+                          
http://standards.iso.org/iso/19115/-3/srv/2.0/srv.xsd";>
 
-  <gmd:citation gco:nilReason="missing"/>
-  <gmd:abstract>
+  <mri:citation gco:nilReason="missing"/>
+  <mri:abstract>
     <gco:CharacterString>A dummy service for testing 
purpose.</gco:CharacterString>
-  </gmd:abstract>
+  </mri:abstract>
 
   <srv:serviceType>
-    <gco:LocalName>Web Map Server</gco:LocalName>
+    <gco:ScopedName>Web Map Server</gco:ScopedName>
   </srv:serviceType>
 
   <srv:serviceTypeVersion>
     <gco:CharacterString>1.0</gco:CharacterString>
   </srv:serviceTypeVersion>
 
+  <srv:couplingType>
+    <srv:SV_CouplingType 
codeList="http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#SV_CouplingType";
 codeListValue="loose">Loose</srv:SV_CouplingType>
+  </srv:couplingType>
+
   <srv:coupledResource>
     <srv:SV_CoupledResource>
-      <srv:operationName>
-        <gco:CharacterString>Get Map</gco:CharacterString>
-      </srv:operationName>
-      <srv:identifier>
-        <gco:CharacterString>ABC-123</gco:CharacterString>
-      </srv:identifier>
-      <gco:ScopedName>mySpace:ABC-123</gco:ScopedName>
+      <srv:scopedName>
+        <gco:ScopedName>mySpace:ABC-123</gco:ScopedName>
+      </srv:scopedName>
+      <srv:resourceReference>
+        <cit:CI_Citation>
+          <cit:title>
+             <gco:CharacterString>WMS specification</gco:CharacterString>
+          </cit:title>
+       </cit:CI_Citation>
+      </srv:resourceReference>
+      <srv:operation>
+        <srv:SV_OperationMetadata>
+          <srv:operationName>
+            <gco:CharacterString>Get Map</gco:CharacterString>
+          </srv:operationName>
+          <srv:distributedComputingPlatform>
+            <srv:DCPList 
codeList="http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#DCPList";
 codeListValue="WebServices">Web services</srv:DCPList>
+          </srv:distributedComputingPlatform>
+          <srv:connectPoint gco:nilReason="missing"/>
+          <srv:parameter>
+            <srv:SV_Parameter>
+              <srv:name>
+                <gco:MemberName>
+                  <gco:aName>
+                    <gco:CharacterString>Version</gco:CharacterString>
+                  </gco:aName>
+                  <gco:attributeType>
+                    <gco:TypeName>
+                      <gco:aName>
+                        
<gco:CharacterString>CharacterString</gco:CharacterString>
+                      </gco:aName>
+                    </gco:TypeName>
+                  </gco:attributeType>
+                </gco:MemberName>
+              </srv:name>
+              <srv:optionality>
+                <gco:Boolean>true</gco:Boolean>
+              </srv:optionality>
+              <srv:repeatability>
+                <gco:Boolean>false</gco:Boolean>
+              </srv:repeatability>
+            </srv:SV_Parameter>
+          </srv:parameter>
+        </srv:SV_OperationMetadata>
+      </srv:operation>
     </srv:SV_CoupledResource>
   </srv:coupledResource>
 
-  <srv:couplingType>
-    <srv:SV_CouplingType 
codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#SV_CouplingType";
 codeListValue="loose">Loose</srv:SV_CouplingType>
-  </srv:couplingType>
-
   <srv:containsOperations>
     <srv:SV_OperationMetadata>
       <srv:operationName>
         <gco:CharacterString>Get Map</gco:CharacterString>
       </srv:operationName>
-      <srv:DCP>
-        <srv:DCPList 
codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#DCPList";
 codeListValue="WebServices">Web services</srv:DCPList>
-      </srv:DCP>
-      <srv:parameters>
+      <srv:distributedComputingPlatform>
+        <srv:DCPList 
codeList="http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#DCPList";
 codeListValue="WebServices">Web services</srv:DCPList>
+      </srv:distributedComputingPlatform>
+      <srv:connectPoint gco:nilReason="missing"/>
+      <srv:parameter>
         <srv:SV_Parameter>
           <srv:name>
-            <gco:aName>
-              <gco:CharacterString>Version</gco:CharacterString>
-            </gco:aName>
-            <gco:attributeType>
-              <gco:TypeName>
-                <gco:aName>
-                  <gco:CharacterString>CharacterString</gco:CharacterString>
-                </gco:aName>
-              </gco:TypeName>
-            </gco:attributeType>
+            <gco:MemberName>
+              <gco:aName>
+                <gco:CharacterString>Version</gco:CharacterString>
+              </gco:aName>
+              <gco:attributeType>
+                <gco:TypeName>
+                  <gco:aName>
+                    <gco:CharacterString>CharacterString</gco:CharacterString>
+                  </gco:aName>
+                </gco:TypeName>
+              </gco:attributeType>
+            </gco:MemberName>
           </srv:name>
           <srv:optionality>
-            <gco:CharacterString>Optional</gco:CharacterString>
+            <gco:Boolean>true</gco:Boolean>
           </srv:optionality>
           <srv:repeatability>
             <gco:Boolean>false</gco:Boolean>
           </srv:repeatability>
-
-          <!-- Deprecated element (removed from ISO 19115:2014), since it 
duplicates <gco:attributeType> above. -->
-          <srv:valueType>
-            <gco:TypeName>
-              <gco:aName>
-                <gco:CharacterString>CharacterString</gco:CharacterString>
-              </gco:aName>
-            </gco:TypeName>
-          </srv:valueType>
-
         </srv:SV_Parameter>
-      </srv:parameters>
-      <srv:connectPoint gco:nilReason="missing"/>
+      </srv:parameter>
     </srv:SV_OperationMetadata>
   </srv:containsOperations>
 </srv:SV_ServiceIdentification>

Modified: 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/lineage/ProcessStep.xml
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/lineage/ProcessStep.xml?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/lineage/ProcessStep.xml
 (original)
+++ 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/lineage/ProcessStep.xml
 Mon Feb 26 11:28:17 2018
@@ -18,25 +18,29 @@
   under the License.
 -->
 
-<gmi:LE_ProcessStep
-    xmlns:gmd = "http://www.isotc211.org/2005/gmd";
-    xmlns:gco = "http://www.isotc211.org/2005/gco";
-    xmlns:gmi = "http://www.isotc211.org/2005/gmi";
+<mrl:LE_ProcessStep
+    xmlns:mrl = "http://standards.iso.org/iso/19115/-3/mrl/1.0";
+    xmlns:mcc = "http://standards.iso.org/iso/19115/-3/mcc/1.0";
+    xmlns:gco = "http://standards.iso.org/iso/19115/-3/gco/1.0";
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation = "http://www.isotc211.org/2005/gmd 
http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd";>
+    xsi:schemaLocation = "http://standards.iso.org/iso/19115/-3/mrl/1.0
+                          
http://standards.iso.org/iso/19115/-3/mrl/1.0/mrl.xsd";>
 
-  <!--
-    As of February 2011, there is not yet any XSD schema for the "gmi" 
namespace on the
-    OGC web site. Consequently the validation of this file does not work fully 
yet.
-  -->
-  <gmd:description>
+  <mrl:description>
     <gco:CharacterString>Some process step.</gco:CharacterString>
-  </gmd:description>
-  <gmi:processingInformation>
-    <gmi:LE_Processing>
-      <gmi:procedureDescription>
+  </mrl:description>
+  <mrl:processingInformation>
+    <mrl:LE_Processing>
+      <mrl:identifier>
+        <mcc:MD_Identifier>
+          <mcc:code>
+            <gco:CharacterString>P4</gco:CharacterString>
+          </mcc:code>
+        </mcc:MD_Identifier>
+      </mrl:identifier>
+      <mrl:procedureDescription>
         <gco:CharacterString>Some procedure.</gco:CharacterString>
-      </gmi:procedureDescription>
-    </gmi:LE_Processing>
-  </gmi:processingInformation>
-</gmi:LE_ProcessStep>
+      </mrl:procedureDescription>
+    </mrl:LE_Processing>
+  </mrl:processingInformation>
+</mrl:LE_ProcessStep>

Modified: 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/quality/PositionalAccuracy.xml
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/quality/PositionalAccuracy.xml?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/quality/PositionalAccuracy.xml
 (original)
+++ 
sis/trunk/core/sis-metadata/src/test/resources/org/apache/sis/metadata/iso/quality/PositionalAccuracy.xml
 Mon Feb 26 11:28:17 2018
@@ -18,55 +18,67 @@
   under the License.
 -->
 
-<gmd:DQ_RelativeInternalPositionalAccuracy
-    xmlns:gmd = "http://www.isotc211.org/2005/gmd";
-    xmlns:gco = "http://www.isotc211.org/2005/gco";
+<mdq:DQ_RelativeInternalPositionalAccuracy
+    xmlns:mdq="http://standards.iso.org/iso/19157/-2/mdq/1.0";
+    xmlns:mcc="http://standards.iso.org/iso/19115/-3/mcc/1.0";
+    xmlns:cit="http://standards.iso.org/iso/19115/-3/cit/1.0";
+    xmlns:lan="http://standards.iso.org/iso/19115/-3/lan/1.0";
+    xmlns:gco="http://standards.iso.org/iso/19115/-3/gco/1.0";
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation = "http://www.isotc211.org/2005/gmd 
http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd";>
+    xsi:schemaLocation = "http://standards.iso.org/iso/19157/-2/mdq/1.0 
http://standards.iso.org/iso/19157/-2/mdq/1.0/mdq.xsd
+                          http://standards.iso.org/iso/19115/-3/lan/1.0 
http://standards.iso.org/iso/19115/-3/lan/1.0/lan.xsd";>
 
   <!--
-    The <nameOfMeasure> element below is the main purpose of 
MetadataMarshallingTest.testPositionalAccuracy().
-    The <result> element was added only in order to allow validation of this 
XML file, with the addition of an
-    opportunist check of xsi:type declaration.
+    The <measure> element below is the main purpose of 
MetadataMarshallingTest.testPositionalAccuracy().
+    The <result> element was added only in order to allow validation of this 
XML file, with the addition
+    of an opportunist check of xsi:type declaration.
   -->
-  <gmd:nameOfMeasure xsi:type="gmd:PT_FreeText_PropertyType">
-    <gco:CharacterString>Quantitative quality measure focusing on the 
effective class percent regarded to the total surface size</gco:CharacterString>
-    <gmd:PT_FreeText>
-      <gmd:textGroup>
-        <gmd:LocalisedCharacterString locale="#locale-fra">Mesure qualité 
quantitative de type pourcentage de représentation de la classe par rapport à 
la surface totale</gmd:LocalisedCharacterString>
-      </gmd:textGroup>
-    </gmd:PT_FreeText>
-  </gmd:nameOfMeasure>
-  <gmd:result>
+  <mdq:measure>
+   <mdq:DQ_MeasureReference>
+      <mdq:measureIdentification>
+         <mcc:MD_Identifier>
+            <mcc:code xsi:type="lan:PT_FreeText_PropertyType">
+              <gco:CharacterString>Quantitative quality measure focusing on 
the effective class percent regarded to the total surface 
size</gco:CharacterString>
+              <lan:PT_FreeText>
+                <lan:textGroup>
+                  <lan:LocalisedCharacterString locale="#locale-fra">Mesure 
qualité quantitative de type pourcentage de représentation de la classe par 
rapport à la surface totale</lan:LocalisedCharacterString>
+                </lan:textGroup>
+              </lan:PT_FreeText>
+            </mcc:code>
+         </mcc:MD_Identifier>
+      </mdq:measureIdentification>
+   </mdq:DQ_MeasureReference>
+  </mdq:measure>
+  <mdq:result>
     <!--
       The xsi:type declaration below is useless, but we put it
       in order to test that it does not break unmarshalling.
     -->
-    <gmd:DQ_ConformanceResult xsi:type="gmd:DQ_ConformanceResult_Type">
-      <gmd:specification>
-        <gmd:CI_Citation>
-          <gmd:title>
+    <mdq:DQ_ConformanceResult xsi:type="mdq:DQ_ConformanceResult_Type">
+      <mdq:specification>
+        <cit:CI_Citation>
+          <cit:title>
             <gco:CharacterString>Some documentation for a conformance 
test.</gco:CharacterString>
-          </gmd:title>
-          <gmd:date>
-            <gmd:CI_Date>
-              <gmd:date>
+          </cit:title>
+          <cit:date>
+            <cit:CI_Date>
+              <cit:date>
                 <!-- Dummy date for the purpose of this test. -->
                 <gco:DateTime>2009-08-12T19:40:17.653+02:00</gco:DateTime>
-              </gmd:date>
-              <gmd:dateType>
-                <gmd:CI_DateTypeCode 
codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode";
 codeListValue="creation">Creation</gmd:CI_DateTypeCode>
-              </gmd:dateType>
-            </gmd:CI_Date>
-          </gmd:date>
-        </gmd:CI_Citation>
-      </gmd:specification>
-      <gmd:explanation>
+              </cit:date>
+              <cit:dateType>
+                <cit:CI_DateTypeCode 
codeList="http://schemas.opengis.net/iso/19139/20070417/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode";
 codeListValue="creation">Creation</cit:CI_DateTypeCode>
+              </cit:dateType>
+            </cit:CI_Date>
+          </cit:date>
+        </cit:CI_Citation>
+      </mdq:specification>
+      <mdq:explanation>
         <gco:CharacterString>We should explain here what a test conformance 
means.</gco:CharacterString>
-      </gmd:explanation>
-      <gmd:pass>
+      </mdq:explanation>
+      <mdq:pass>
         <gco:Boolean>true</gco:Boolean>
-      </gmd:pass>
-    </gmd:DQ_ConformanceResult>
-  </gmd:result>
-</gmd:DQ_RelativeInternalPositionalAccuracy>
+      </mdq:pass>
+    </mdq:DQ_ConformanceResult>
+  </mdq:result>
+</mdq:DQ_RelativeInternalPositionalAccuracy>

Modified: 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -22,11 +22,11 @@ import org.opengis.metadata.Identifier;
 
 
 /**
- * JAXB adapter mapping the GeoAPI {@link ReferenceIdentifier} to an 
implementation class that can
- * be marshalled. See the package documentation for more information about 
JAXB and interfaces.
+ * JAXB adapter mapping the GeoAPI {@link Identifier} to an implementation 
class that can be marshalled.
+ * See the package documentation for more information about JAXB and 
interfaces.
  *
  * <p>Note that a class of the same name is defined in the {@link 
org.apache.sis.internal.jaxb.metadata}
- * package, which serve the same purpose (wrapping exactly the same interface) 
but using the ISO 19139
+ * package, which serve the same purpose (wrapping exactly the same interface) 
but using the ISO 19139:2007
  * syntax instead. The ISO 19139 syntax represents the code and codespace as 
XML elements, while in this
  * GML representation the code is a XML value and the codespace is a XML 
attribute.</p>
  *

Modified: 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_VerticalCRS.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_VerticalCRS.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_VerticalCRS.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/SC_VerticalCRS.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -26,7 +26,7 @@ import org.apache.sis.referencing.crs.De
 /**
  * JAXB adapter for {@link VerticalCRS}, in order to integrate the value in an 
element
  * complying with OGC/ISO standard. Note that the CRS is formatted using the 
GML schema,
- * not the ISO 19139 one.
+ * not the ISO 19139:2007 one.
  *
  * @author  Guilhem Legal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)

Modified: 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -42,6 +42,7 @@ import org.opengis.referencing.ObjectFac
 import org.opengis.referencing.AuthorityFactory;
 import org.opengis.referencing.IdentifiedObject;
 import org.apache.sis.internal.jaxb.Context;
+import org.apache.sis.internal.jaxb.UseLegacyMetadata;
 import org.apache.sis.internal.jaxb.referencing.Code;
 import org.apache.sis.internal.util.Numerics;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
@@ -121,7 +122,7 @@ import org.apache.sis.metadata.iso.Immut
  * objects and passed between threads without synchronization.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
- * @version 0.7
+ * @version 1.0
  * @since   0.4
  * @module
  */
@@ -138,6 +139,7 @@ import org.apache.sis.metadata.iso.Immut
     org.apache.sis.referencing.datum.DefaultPrimeMeridian.class,
     org.apache.sis.referencing.cs.AbstractCS.class
 })
+@UseLegacyMetadata
 public class AbstractIdentifiedObject extends FormattableObject implements 
IdentifiedObject,
         LenientComparable, Deprecable, Serializable
 {

Modified: 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/AbstractIdentifiedObjectTest.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/AbstractIdentifiedObjectTest.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/AbstractIdentifiedObjectTest.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/AbstractIdentifiedObjectTest.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -213,7 +213,7 @@ public final strictfp class AbstractIden
         final AbstractIdentifiedObject o2 = new 
AbstractIdentifiedObject(properties);
         final AbstractIdentifiedObject o3 = new 
AbstractIdentifiedObject(properties);
         final AbstractIdentifiedObject o4 = new 
AbstractIdentifiedObject(properties);
-        final Context context = new Context(0, null, null, null, null, null, 
null, null);
+        final Context context = new Context(0, null, null, null, null, null, 
null, null, null);
         try {
             final String c1, c2, c3, c4;
             assertEquals("o1", "epsg-7019", c1 = o1.getID());

Modified: 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -486,7 +486,7 @@ public final strictfp class DefaultProje
          * Test marshalling and compare with the original file. The comparison 
ignores the <gml:name> nodes because the
          * marshalled CRS contains many operation method and parameter aliases 
which were not in the original XML file.
          */
-        assertMarshalEqualsFile(XML_FILE, crs, STRICT, new String[] 
{"gml:name"},
+        assertMarshalEqualsFile(XML_FILE, crs, null, STRICT, new String[] 
{"gml:name"},
                 new String[] {"xmlns:*", "xsi:schemaLocation", "gml:id"});
     }
 

Modified: 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -232,7 +232,7 @@ public final strictfp class DefaultEllip
         /*
          * Marshall and compare to the original file.
          */
-        assertMarshalEqualsFile(ELLIPSOID_FILE, ellipsoid, "xlmns:*", 
"xsi:schemaLocation");
+        assertMarshalEqualsFile(ELLIPSOID_FILE, ellipsoid, "xmlns:*", 
"xsi:schemaLocation");
     }
 
     /**
@@ -258,6 +258,6 @@ public final strictfp class DefaultEllip
         /*
          * Marshall and compare to the original file.
          */
-        assertMarshalEqualsFile(SPHERE_FILE, ellipsoid, "xlmns:*", 
"xsi:schemaLocation");
+        assertMarshalEqualsFile(SPHERE_FILE, ellipsoid, "xmlns:*", 
"xsi:schemaLocation");
     }
 }

Modified: 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -100,7 +100,7 @@ public final strictfp class DefaultTempo
     @Test
     public void testMarshalling() throws JAXBException {
         final DefaultTemporalDatum datum = create();
-        assertMarshalEqualsFile(XML_FILE, datum, "xlmns:*", 
"xsi:schemaLocation");
+        assertMarshalEqualsFile(XML_FILE, datum, "xmlns:*", 
"xsi:schemaLocation");
     }
 
     /**

Modified: 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -60,6 +60,7 @@ import org.apache.sis.referencing.cs.Def
 import org.apache.sis.referencing.cs.DefaultVerticalCS;
 import org.apache.sis.referencing.crs.DefaultVerticalCRS;
 import org.apache.sis.internal.jaxb.metadata.replace.ReferenceSystemMetadata;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
 import org.apache.sis.internal.jaxb.gmx.Anchor;
 import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.referencing.NamedIdentifier;
@@ -70,6 +71,7 @@ import org.apache.sis.xml.MarshallerPool
 import org.apache.sis.xml.IdentifierSpace;
 import org.apache.sis.xml.NilObject;
 import org.apache.sis.xml.NilReason;
+import org.apache.sis.xml.XML;
 
 import static java.util.Collections.singleton;
 import static java.util.Collections.singletonMap;
@@ -86,6 +88,7 @@ import org.junit.Test;
 
 import static org.apache.sis.test.Assert.*;
 import static org.apache.sis.test.TestUtilities.getSingleton;
+import static org.apache.sis.metadata.iso.DefaultMetadataTest.REGRESSION;
 
 import org.apache.sis.internal.geoapi.evolution.UnsupportedCodeList;
 
@@ -95,7 +98,7 @@ import org.apache.sis.internal.geoapi.ev
  *
  * @author  Guilhem Legal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.0
  *
  * @see org.apache.sis.metadata.iso.DefaultMetadataTest
  *
@@ -305,6 +308,13 @@ public strictfp class MetadataTest exten
                         new DefaultVerticalExtent(Double.NaN, Double.NaN, 
vcrs),
                         temporal)));
             }
+            /*
+             * Data identification / Environmental description and 
Supplemental information.
+             */
+            {
+                identification.setEnvironmentDescription (new 
SimpleInternationalString("Possibly cloudy."));
+                identification.setSupplementalInformation(new 
SimpleInternationalString("This metadata has been modified with dummy 
values."));
+            }
             metadata.setIdentificationInfo(singleton(identification));
         }
         /*
@@ -399,6 +409,7 @@ public strictfp class MetadataTest exten
         final MarshallerPool pool   = getMarshallerPool();
         final Marshaller     ms     = pool.acquireMarshaller();
         final StringWriter   writer = new StringWriter(25000);
+        ms.setProperty(XML.METADATA_VERSION, VERSION_2007);
         ms.marshal(createHardCoded(), writer);
         pool.recycle(ms);
         /*
@@ -408,9 +419,9 @@ public strictfp class MetadataTest exten
          * by the anchor version so we can compare the XML with the 
"Metadata.xml" file content.
          */
         final StringBuffer xml = writer.getBuffer();
-        replace(xml, "<gco:CharacterString>Common Data Index 
record</gco:CharacterString>",
+        replace(xml, "<gcol:CharacterString>Common Data Index 
record</gcol:CharacterString>",
                      "<gmx:Anchor xlink:href=\"SDN:L231:3:CDI\">Common Data 
Index record</gmx:Anchor>");
-        replace(xml, "<gco:CharacterString>EPSG:4326</gco:CharacterString>",
+        replace(xml, "<gcol:CharacterString>EPSG:4326</gcol:CharacterString>",
                      "<gmx:Anchor 
xlink:href=\"SDN:L101:2:4326\">EPSG:4326</gmx:Anchor>");
         replace(xml, "License", "Licence");
         /*
@@ -420,7 +431,7 @@ public strictfp class MetadataTest exten
          * and those values may change in future SIS version.
          */
         final XMLComparator comparator = new XMLComparator(getResource(), 
xml.toString());
-        comparator.ignoredNodes.add(Namespaces.GMD + ":temporalElement");
+        comparator.ignoredNodes.add(LegacyNamespaces.GMD + ":temporalElement");
         comparator.ignoredAttributes.add("http://www.w3.org/2000/xmlns:*";);
         comparator.ignoredAttributes.add(Namespaces.XSI + ":schemaLocation");
         comparator.ignoredAttributes.add(Namespaces.GML + ":id");
@@ -456,6 +467,10 @@ public strictfp class MetadataTest exten
         final Unmarshaller unmarshaller = pool.acquireUnmarshaller();
         final DefaultMetadata metadata = (DefaultMetadata) 
unmarshaller.unmarshal(getResource());
         pool.recycle(unmarshaller);
+        if (REGRESSION) {
+            assertTrue("Maybe SIS-402 has been fixed and this anti-regression 
hack can be removed?",
+                       
metadata.getCharacterSets().add(StandardCharsets.UTF_8));
+        }
         final DefaultMetadata expected = createHardCoded();
         assertTrue(metadata.equals(expected, ComparisonMode.DEBUG));
         loggings.skipNextLogIfContains("sis-temporal");
@@ -469,6 +484,9 @@ public strictfp class MetadataTest exten
     @Test
     public void testMetadataWithVerticalCRS() throws JAXBException {
         final Metadata metadata = unmarshalFile(Metadata.class, 
VERTICAL_CRS_XML);
+        if (REGRESSION) {
+            ((DefaultMetadata) metadata).setCharacterSet(CharacterSet.UTF_8);
+        }
         assertEquals("fileIdentifier", "20090901",                     
metadata.getFileIdentifier());
         assertEquals("language",       Locale.ENGLISH,                 
metadata.getLanguage());
         assertEquals("characterSet",   CharacterSet.UTF_8,             
metadata.getCharacterSet());
@@ -562,7 +580,7 @@ public strictfp class MetadataTest exten
          *
          * Now marshal the object and compare with the original file.
          */
-        assertMarshalEqualsFile(VERTICAL_CRS_XML, metadata, "xmlns:*", 
"xsi:schemaLocation");
+        assertMarshalEqualsFile(VERTICAL_CRS_XML, metadata, VERSION_2007, 
"xmlns:*", "xsi:schemaLocation");
     }
 
     /**

Modified: 
sis/trunk/core/sis-referencing/src/test/resources/org/apache/sis/test/integration/Metadata.xml
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-referencing/src/test/resources/org/apache/sis/test/integration/Metadata.xml?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-referencing/src/test/resources/org/apache/sis/test/integration/Metadata.xml
 (original)
+++ 
sis/trunk/core/sis-referencing/src/test/resources/org/apache/sis/test/integration/Metadata.xml
 Mon Feb 26 11:28:17 2018
@@ -353,6 +353,9 @@
       <gmd:topicCategory>
         <gmd:MD_TopicCategoryCode>oceans</gmd:MD_TopicCategoryCode>
       </gmd:topicCategory>
+      <gmd:environmentDescription>
+        <gco:CharacterString>Possibly cloudy.</gco:CharacterString>
+      </gmd:environmentDescription>
       <gmd:extent>
         <gmd:EX_Extent>
           <gmd:geographicElement>
@@ -412,6 +415,9 @@
           </gmd:verticalElement>
         </gmd:EX_Extent>
       </gmd:extent>
+      <gmd:supplementalInformation>
+        <gco:CharacterString>This metadata has been modified with dummy 
values.</gco:CharacterString>
+      </gmd:supplementalInformation>
     </gmd:MD_DataIdentification>
   </gmd:identificationInfo>
   <gmd:contentInfo>

Modified: sis/trunk/core/sis-utility/pom.xml
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/pom.xml?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- sis/trunk/core/sis-utility/pom.xml (original)
+++ sis/trunk/core/sis-utility/pom.xml Mon Feb 26 11:28:17 2018
@@ -87,6 +87,15 @@ Miscellaneous utilities.
       </roles>
     </contributor>
     <contributor>
+      <name>Cullen Rombach</name>
+      <organization>Image Matters</organization>
+      <organizationUrl>http://www.imagemattersllc.com</organizationUrl>
+      <timezone>-5</timezone>
+      <roles>
+        <role>developer</role>
+      </roles>
+    </contributor>
+    <contributor>
       <name>Guilhem Legal</name>
       <email>[email protected]</email>
       <organization>Geomatys</organization>

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeList.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeList.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeList.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeList.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -26,16 +26,18 @@ import static org.opengis.annotation.Spe
 
 /**
  * Placeholder for code list not yet available in GeoAPI.
- * Currently only for {@code org.opengis.metadata.citation.TelephoneType}, but 
we use the
- * {@code UnsupportedCodeList} class name for making clear that this class 
will disappear
- * in a future Apache SIS version.
+ * Currently defines constants mostly for {@code 
org.opengis.metadata.citation.TelephoneType},
+ * but constants for other code list can be constructed like below:
+ *
+ * {@preformat java
+ *   
operation.getDistributedComputingPlatforms().add(UnsupportedCodeList.valueOf("SOAP"));
+ * }
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.8
+ * @version 1.0
  * @since   0.5
  * @module
  */
-@UML(identifier="CI_TelephoneTypeCode", specification=ISO_19115)
 public final class UnsupportedCodeList extends CodeList<UnsupportedCodeList> {
     /**
      * For cross-version compatibility.
@@ -60,6 +62,12 @@ public final class UnsupportedCodeList e
     public static final CodeList<?> FACSIMILE = new 
UnsupportedCodeList("FACSIMILE");
 
     /**
+     * A frequently used code list element.
+     */
+    @UML(identifier="WebServices", obligation=CONDITIONAL, 
specification=ISO_19115)
+    public static final CodeList<?> WEB_SERVICES = new 
UnsupportedCodeList("WEB_SERVICES");
+
+    /**
      * Constructor for new code list element.
      *
      * @param name The code list name.

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeListAdapter.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeListAdapter.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeListAdapter.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/evolution/UnsupportedCodeListAdapter.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -52,7 +52,7 @@ public abstract class UnsupportedCodeLis
     /**
      * Creates a wrapper for a {@link CodeList}, in order to handle the format 
specified in ISO-19139.
      *
-     * @param value The value of the {@link CodeList} to be marshalled.
+     * @param  value  the value of the {@link CodeList} to be marshalled.
      */
     protected UnsupportedCodeListAdapter(final CodeListUID value) {
         identifier = value;
@@ -66,15 +66,15 @@ public abstract class UnsupportedCodeLis
      *     return new ValueType(value);
      * }
      *
-     * @param value The value of {@link CodeList} to be marshalled.
-     * @return The wrapper for the code list value.
+     * @param  value  the value of {@link CodeList} to be marshalled.
+     * @return the wrapper for the code list value.
      */
     protected abstract ValueType wrap(CodeListUID value);
 
     /**
      * Returns the name of the code list class.
      *
-     * @return The code list class name.
+     * @return the code list class name.
      */
     protected abstract String getCodeListName();
 
@@ -82,8 +82,8 @@ public abstract class UnsupportedCodeLis
      * Substitutes the adapter value read from an XML stream by the object 
which will
      * contains the value. JAXB calls automatically this method at 
unmarshalling time.
      *
-     * @param  adapter The adapter for this metadata value.
-     * @return A code list which represents the metadata value.
+     * @param  adapter  the adapter for this metadata value.
+     * @return a code list which represents the metadata value.
      */
     @Override
     public final CodeList<?> unmarshal(final ValueType adapter) {
@@ -97,8 +97,8 @@ public abstract class UnsupportedCodeLis
      * Substitutes the code list by the adapter to be marshalled into an XML 
file or stream.
      * JAXB calls automatically this method at marshalling time.
      *
-     * @param  value The code list value.
-     * @return The adapter for the given code list.
+     * @param  value  the code list value.
+     * @return the adapter for the given code list.
      */
     @Override
     public final ValueType marshal(final CodeList<?> value) {

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Instant.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Instant.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Instant.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Instant.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -21,7 +21,7 @@ import org.opengis.temporal.TemporalPrim
 
 
 /**
- * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.0.
+ * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Period.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Period.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Period.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Period.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -20,7 +20,7 @@ import org.opengis.temporal.TemporalPrim
 
 
 /**
- * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.0.
+ * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/PeriodDuration.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/PeriodDuration.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/PeriodDuration.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/PeriodDuration.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -20,7 +20,7 @@ import org.opengis.util.InternationalStr
 
 
 /**
- * Placeholder for a GeoAPI interfaces which is still incomplete in GeoAPI 
3.0.0.
+ * Placeholder for a GeoAPI interfaces which is still incomplete in GeoAPI 3.0.
  * We reproduce here the GeoAPI 3.1-pending API. Note that at the time of 
writing,
  * this is a bad API (values shall not be instances of {@link 
InternationalString}).
  * This will be fixed in a future GeoAPI version.

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Position.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Position.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Position.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/Position.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -20,7 +20,7 @@ import java.util.Date;
 
 
 /**
- * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.0.
+ * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/TemporalFactory.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/TemporalFactory.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/TemporalFactory.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/TemporalFactory.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -21,7 +21,7 @@ import org.opengis.util.InternationalStr
 
 
 /**
- * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.0.
+ * Placeholder for a GeoAPI interfaces not present in GeoAPI 3.0.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/package-info.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/package-info.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/package-info.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/geoapi/temporal/package-info.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -16,7 +16,7 @@
  */
 
 /**
- * Placeholder for GeoAPI interfaces not present in GeoAPI 3.0.0.
+ * Placeholder for GeoAPI interfaces not present in GeoAPI 3.0.
  *
  * <STRONG>Do not use!</STRONG>
  *

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Context.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -50,7 +50,8 @@ import org.apache.sis.xml.ReferenceResol
  * if no (un)marshalling is in progress.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -59,40 +60,46 @@ public final class Context extends Marsh
      * The bit flag telling if a marshalling process is under progress.
      * This flag is unset for unmarshalling processes.
      */
-    public static final int MARSHALLING = 1;
+    public static final int MARSHALLING = 0x1;
 
     /**
      * The bit flag for enabling substitution of language codes by character 
strings.
      *
      * @see org.apache.sis.xml.XML#STRING_SUBSTITUTES
      */
-    public static final int SUBSTITUTE_LANGUAGE = 2;
+    public static final int SUBSTITUTE_LANGUAGE = 0x2;
 
     /**
      * The bit flag for enabling substitution of country codes by character 
strings.
      *
      * @see org.apache.sis.xml.XML#STRING_SUBSTITUTES
      */
-    public static final int SUBSTITUTE_COUNTRY = 4;
+    public static final int SUBSTITUTE_COUNTRY = 0x4;
 
     /**
      * The bit flag for enabling substitution of filenames by character 
strings.
      *
      * @see org.apache.sis.xml.XML#STRING_SUBSTITUTES
      */
-    public static final int SUBSTITUTE_FILENAME = 8;
+    public static final int SUBSTITUTE_FILENAME = 0x8;
 
     /**
      * The bit flag for enabling substitution of mime types by character 
strings.
      *
      * @see org.apache.sis.xml.XML#STRING_SUBSTITUTES
      */
-    public static final int SUBSTITUTE_MIMETYPE = 16;
+    public static final int SUBSTITUTE_MIMETYPE = 0x10;
+
+    /**
+     * Whether we are (un)marshalling legacy metadata as defined in 2003 model 
(ISO 19139:2007).
+     * If this flag is not set, then we assume latest metadata as defined in 
2014 model (ISO 19115-3).
+     */
+    public static final int LEGACY_METADATA = 0x20;
 
     /**
      * Bit where to store whether {@link #finish()} shall invoke {@code 
Semaphores.clear(Semaphores.NULL_COLLECTION)}.
      */
-    private static final int CLEAR_SEMAPHORE = 32;
+    private static final int CLEAR_SEMAPHORE = 0x40;
 
     /**
      * The thread-local context. Elements are created in the constructor, and 
removed in a
@@ -109,7 +116,7 @@ public final class Context extends Marsh
     /**
      * Various boolean attributes determines by the above static constants.
      */
-    private int bitMasks;
+    final int bitMasks;
 
     /**
      * The locale to use for marshalling, or an empty queue if no locale were 
explicitly specified.
@@ -123,7 +130,7 @@ public final class Context extends Marsh
     private final TimeZone timezone;
 
     /**
-     * The base URL of ISO 19139 (or other standards) schemas. The valid values
+     * The base URL of ISO 19115-3 (or other standards) schemas. The valid 
values
      * are documented in the {@link org.apache.sis.xml.XML#SCHEMAS} property.
      */
     private final Map<String,String> schemas;
@@ -203,18 +210,25 @@ public final class Context extends Marsh
      * @param  timezone         the timezone, or {@code null} if unspecified.
      * @param  schemas          the schemas root URL, or {@code null} if none.
      * @param  versionGML       the GML version, or {@code null}.
+     * @param  versionMetadata  the metadata version, or {@code null}.
      * @param  resolver         the resolver in use.
      * @param  converter        the converter in use.
      * @param  warningListener  the object to inform about warnings.
      */
     @SuppressWarnings("ThisEscapedInObjectConstruction")
-    public Context(final int                bitMasks,
-                   final Locale             locale,   final TimeZone       
timezone,
-                   final Map<String,String> schemas,  final Version        
versionGML,
-                   final ReferenceResolver  resolver, final ValueConverter 
converter,
+    public Context(int                      bitMasks,
+                   final Locale             locale,
+                   final TimeZone           timezone,
+                   final Map<String,String> schemas,
+                   final Version            versionGML,
+                   final Version            versionMetadata,
+                   final ReferenceResolver  resolver,
+                   final ValueConverter     converter,
                    final WarningListener<?> warningListener)
     {
-        this.bitMasks          = bitMasks;
+        if (versionMetadata != null && 
versionMetadata.compareTo(LegacyNamespaces.VERSION_2014) < 0) {
+            bitMasks |= LEGACY_METADATA;
+        }
         this.locales           = new LinkedList<>();
         this.timezone          = timezone;
         this.schemas           = schemas;               // No clone, because 
this class is internal.
@@ -224,15 +238,21 @@ public final class Context extends Marsh
         this.warningListener   = warningListener;
         this.identifiers       = new HashMap<>();
         this.identifiedObjects = new IdentityHashMap<>();
-        if ((bitMasks & MARSHALLING) != 0) {
-            if (!Semaphores.queryAndSet(Semaphores.NULL_COLLECTION)) {
-                this.bitMasks |= CLEAR_SEMAPHORE;
-            }
-        }
         if (locale != null) {
             locales.add(locale);
         }
         previous = CURRENT.get();
+        if ((bitMasks & MARSHALLING) != 0) {
+            /*
+             * Set global semaphore last after our best effort to ensure that 
construction
+             * will not fail with an OutOfMemoryError. This is preferable for 
allowing the
+             * caller to invoke finish() in a finally block.
+             */
+            if (!Semaphores.queryAndSet(Semaphores.NULL_COLLECTION)) {
+                bitMasks |= CLEAR_SEMAPHORE;
+            }
+        }
+        this.bitMasks = bitMasks;
         CURRENT.set(this);
     }
 
@@ -264,10 +284,14 @@ public final class Context extends Marsh
      */
     @Override
     public final Version getVersion(final String prefix) {
-        if (prefix.equals("gml")) {
-            return versionGML;
+        switch (prefix) {
+            case "gml": return versionGML;
+            case "gmd": {
+                if ((bitMasks & MARSHALLING) == 0) break;   // If 
unmarshalling, we don't know the version.
+                return (bitMasks & LEGACY_METADATA) == 0 ? 
LegacyNamespaces.VERSION_2016 : LegacyNamespaces.VERSION_2007;
+            }
+            // Future SIS versions may add more cases here.
         }
-        // Future SIS versions may add more cases here.
         return null;
     }
 
@@ -347,7 +371,7 @@ public final class Context extends Marsh
 
     /**
      * Returns {@code true} if the GML version is equals or newer than the 
specified version.
-     * If no GML version were specified, then this method returns {@code 
true}, i.e. newest
+     * If no GML version was specified, then this method returns {@code true}, 
i.e. newest
      * version is assumed.
      *
      * <div class="note"><b>API note:</b>
@@ -370,7 +394,7 @@ public final class Context extends Marsh
     }
 
     /**
-     * Returns the base URL of ISO 19139 (or other standards) schemas.
+     * Returns the base URL of ISO 19115-3 (or other standards) schemas.
      * The valid values are documented in the {@link 
org.apache.sis.xml.XML#SCHEMAS} property.
      * If the returned value is not empty, then this method guarantees it ends 
with {@code '/'}.
      *

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/LegacyNamespaces.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/LegacyNamespaces.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/LegacyNamespaces.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/LegacyNamespaces.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -22,8 +22,9 @@ import org.apache.sis.util.Version;
 /**
  * Legacy XML namespaces, and {@link Version} constants for identifying when 
those namespaces were used.
  *
- * @author  Guilhem Legal (Geomatys)
- * @version 0.4
+ * @author  Guilhem Legal  (Geomatys)
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  *
  * @see org.apache.sis.xml.Namespaces
  *
@@ -32,7 +33,14 @@ import org.apache.sis.util.Version;
  */
 public final class LegacyNamespaces {
     /**
-     * Miscellaneous version constants.
+     * Miscellaneous version constants used for ISO standards.
+     */
+    public static final Version VERSION_2007 = new Version("2007"),
+                                VERSION_2014 = new Version("2014"),
+                                VERSION_2016 = new Version("2016");
+
+    /**
+     * Miscellaneous version constants used for GML versions.
      */
     public static final Version VERSION_3_0 = new Version("3.0"),
                                 VERSION_3_2 = new Version("3.2");
@@ -52,24 +60,49 @@ public final class LegacyNamespaces {
     public static final String GML = "http://www.opengis.net/gml";;
 
     /**
-     * A non-public (un)marshaller property for controlling usage of {@code 
org.apache.sis.xml.FilteredNamespaces}.
-     * Values can be:
-     *
-     * <ul>
-     *   <li>{@link Boolean#FALSE} for disabling namespace replacements. XML 
(un)marshalling will use the namespaces URI
-     *       supported natively by SIS as declared in JAXB annotations. This 
is sometime useful for debugging purpose.</li>
-     *   <li>{@link Boolean#TRUE} for forcing namespace replacements at 
unmarshalling time. This is useful for reading a
-     *       XML document of unknown GML version.</li>
-     *   <li>{@code null} or missing for the default behavior, which is apply 
namespace replacements only if the
-     *       {@link org.apache.sis.xml.XML#GML_VERSION} property is set to an 
older value than the one supported
-     *       natively by SIS.</li>
-     * </ul>
-     *
-     * This property can be given to {@link org.apache.sis.xml.MarshallerPool} 
constructor, or set directly on
-     * a {@code Marshaller} or {@code Unmarshaller} instance created by {@code 
MarshallerPool} by invoking its
-     * {@code setProperty(String, Object)} method.
+     * The <code>{@value}</code> URL, used in ISO 19139:2007.
+     * The usual prefix for this namespace is {@code "gmd"}.
+     */
+    public static final String GMD = "http://www.isotc211.org/2005/gmd";;
+
+    /**
+     * The <code>{@value}</code> URL.
+     * The usual prefix for this namespace is {@code "gmi"}.
+     */
+    public static final String GMI = 
"http://standards.iso.org/iso/19115/-2/gmi/1.0";;
+
+    /**
+     * The <code>{@value}</code> URL, used in ISO 19139:2007.
+     * The usual prefix for this namespace is {@code "gmx"}.
+     */
+    public static final String GMX = "http://www.isotc211.org/2005/gmx";;
+
+    /**
+     * The <code>{@value}</code> URL, used in ISO 19139:2007.
+     * The usual prefix for this namespace is {@code "gco"}.
+     * Replaced by {@link org.apache.sis.xml.Namespaces#GCO}.
+     */
+    public static final String GCO = "http://www.isotc211.org/2005/gco";;
+
+    /**
+     * The <code>{@value}</code> URL, used in ISO 19139:2007.
+     * The usual prefix for this namespace is {@code "srv"}.
+     * Replaced by {@link org.apache.sis.xml.Namespaces#SRV}.
+     */
+    public static final String SRV = "http://www.isotc211.org/2005/srv";;
+
+    /**
+     * The <code>{@value}</code> URL, used in ISO 19110.
+     * The usual prefix for this namespace is {@code "gfc"}.
+     * Replaced by {@link org.apache.sis.xml.Namespaces#GFC}.
+     */
+    public static final String GFC = "http://www.isotc211.org/2005/gfc";;
+
+    /**
+     * The <code>{@value}</code> URL, used in ISO 19139:2007.
+     * The usual prefix for this namespace is {@code "gts"}.
      */
-    public static final String APPLY_NAMESPACE_REPLACEMENTS = 
"org.apache.sis.xml.applyNamespaceReplacements";
+    public static final String GTS = "http://www.isotc211.org/2005/gts";;
 
     /**
      * Do not allow instantiation of this class.

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -41,7 +41,7 @@ import org.apache.sis.xml.IdentifierSpac
  * <p>There is two kinds of non-marshalled identifiers:</p>
  *
  * <ul>
- *   <li>The XML attributes declared by ISO 19139 specification in the {@code 
gco:PropertyType}
+ *   <li>The XML attributes declared by ISO 19115-3 specification in the 
{@code gco:PropertyType}
  *       element: {@code gml:id}, {@code gco:uuid} and {@code xlink:href}. 
Those attributes are
  *       not part of the ISO 19115 specification. Those authorities are 
declared in the
  *       {@link IdentifierSpace} interfaces.</li>
@@ -109,7 +109,7 @@ public final class NonMarshalledAuthorit
 
     /**
      * Returns the first marshallable identifier from the given collection. 
This method omits
-     * "special" identifiers (ISO 19139 attributes, ISBN codes...), which are 
recognized by
+     * "special" identifiers (ISO 19115-3 attributes, ISBN codes...), which 
are recognized by
      * the implementation class of their authority.
      *
      * <p>This method is used for implementation of {@code getIdentifier()} 
methods (singular form)
@@ -132,9 +132,8 @@ public final class NonMarshalledAuthorit
 
     /**
      * Sets the given identifier in the given collection. This method removes 
all identifiers
-     * that are not ISO 19139 identifiers before to adds the given one in the 
collection. This
-     * method is used when the given collection is expected to contains only 
one ISO 19115
-     * identifier.
+     * that are not ISO 19115-3 identifiers before to adds the given one in 
the collection.
+     * This method is used when the given collection is expected to contains 
only one ISO 19115-1 identifier.
      *
      * <p>This method is used for implementation of {@code 
setIdentifier(Identifier)} methods
      * in public metadata objects.</p>

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Schemas.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Schemas.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Schemas.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/Schemas.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -41,35 +41,37 @@ package org.apache.sis.internal.jaxb;
  * </ul>
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  * @since   0.4
  * @module
  */
 public final class Schemas {
     /**
-     * The XSD definition for Geographic Markup Language (GML) objects.
-     */
-    public static final String GML_XSD = 
"http://schemas.opengis.net/gml/3.2.1/gml.xsd";;
-
-    /**
-     * The XSD definition for metadata objects.
+     * The root directory of ISO 19115 metadata schemas.
+     * This is the schema used by default in Apache SIS.
      */
-    public static final String METADATA_XSD = 
"http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd";;
+    public static final String METADATA_ROOT = 
"http://standards.iso.org/iso/19115/";;
 
     /**
      * The root directory of OGC metadata schemas.
      * This is the schema used by default in Apache SIS.
+     * Some alternatives to this URL are:
+     *
+     * <ul>
+     *   
<li>http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/</li>
+     *   <li>http://www.isotc211.org/2005/</li>
+     * </ul>
      */
-    public static final String METADATA_ROOT = 
"http://schemas.opengis.net/iso/19139/20070417/";;
+    public static final String METADATA_ROOT_LEGACY = 
"http://schemas.opengis.net/iso/19139/20070417/";;
 
     /**
-     * The root directory of ISO metadata schemas.
-     * This is sometime used as an alternative to {@link #METADATA_ROOT}.
+     * The string to append to {@link #METADATA_ROOT} for obtaining the path 
to the definitions of code lists.
      */
-    public static final String ISO_19139_ROOT = 
"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/";;
+    public static final String CODELISTS_PATH = 
"resources/Codelist/cat/codelists.xml";
 
     /**
-     * The string to append to {@link #METADATA_ROOT} or {@link 
#ISO_19139_ROOT} for obtaining the path
+     * The string to append to {@link #METADATA_ROOT_LEGACY} or one of its 
alternative for obtaining the path
      * to the definitions of code lists.
      *
      * <p>A localized version of this file exists also with the {@code 
"ML_gmxCodelists.xml"} filename
@@ -77,10 +79,10 @@ public final class Schemas {
      *
      * @see <a href="https://issues.apache.org/jira/browse/SIS-154";>SIS-154</a>
      */
-    public static final String CODELISTS_PATH = 
"resources/Codelist/gmxCodelists.xml";
+    public static final String CODELISTS_PATH_LEGACY = 
"resources/Codelist/gmxCodelists.xml";
 
     /**
-     * The string to append to {@link #METADATA_ROOT} or {@link 
#ISO_19139_ROOT} for obtaining the path
+     * The string to append to {@link #METADATA_ROOT} or one of its 
alternative for obtaining the path
      * to the definitions of units of measurement.
      *
      * <p>A localized version of this file exists also with the {@code 
"ML_gmxUom.xml"} filename

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/CharSequenceAdapter.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/CharSequenceAdapter.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/CharSequenceAdapter.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/CharSequenceAdapter.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -22,13 +22,14 @@ import org.apache.sis.util.CharSequences
 import org.apache.sis.xml.XLink;
 import org.apache.sis.xml.ReferenceResolver;
 import org.apache.sis.internal.jaxb.Context;
+import org.apache.sis.internal.jaxb.FilterByVersion;
 import org.apache.sis.internal.jaxb.gmx.Anchor;
 import org.apache.sis.internal.jaxb.gmd.PT_FreeText;
 
 
 /**
- * JAXB adapter in order to wrap the string value with a {@code 
<gco:CharacterString>} element,
- * for ISO-19139 compliance. A {@link CharSequenceAdapter} can handle the 
following types:
+ * JAXB adapter wrapping the string value in a {@code <gco:CharacterString>} 
element, for ISO 19115-3 compliance.
+ * A {@link CharSequenceAdapter} can handle the following types:
  *
  * <ul>
  *   <li>{@link InternationalString}, which may be mapped to {@link 
PT_FreeText} elements.</li>
@@ -40,7 +41,7 @@ import org.apache.sis.internal.jaxb.gmd.
  * @author  Cédric Briançon (Geomatys)
  * @author  Guilhem Legal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.6
+ * @version 1.0
  *
  * @see StringAdapter
  * @see InternationalStringAdapter
@@ -48,11 +49,11 @@ import org.apache.sis.internal.jaxb.gmd.
  * @since 0.3
  * @module
  */
-public final class CharSequenceAdapter extends XmlAdapter<GO_CharacterString, 
CharSequence> {
+public class CharSequenceAdapter extends XmlAdapter<GO_CharacterString, 
CharSequence> {
     /**
      * Constructor for JAXB only.
      */
-    private CharSequenceAdapter() {
+    public CharSequenceAdapter() {
     }
 
     /**
@@ -63,7 +64,7 @@ public final class CharSequenceAdapter e
      * @return a {@link CharSequence} which represents the metadata value.
      */
     @Override
-    public CharSequence unmarshal(final GO_CharacterString value) {
+    public final CharSequence unmarshal(final GO_CharacterString value) {
         return (value != null) ? value.toCharSequence() : null;
     }
 
@@ -91,12 +92,12 @@ public final class CharSequenceAdapter e
             return wrap(Context.current(), value, (String) value);  // 
Slightly more efficient variant of this method.
         }
         /*
-         * <gmd:someElement xsi:type="gmd:PT_FreeText_PropertyType">
+         * <mdb:someElement xsi:type="lan:PT_FreeText_PropertyType">
          *   <gco:CharacterString>...</gco:CharacterString>
-         *   <gmd:PT_FreeText>
+         *   <lan:PT_FreeText>
          *     ... see PT_FreeText ...
-         *   </gmd:PT_FreeText>
-         * </gmd:someElement>
+         *   </lan:PT_FreeText>
+         * </mdb:someElement>
          */
         if (value instanceof InternationalString) {
             final PT_FreeText ft = PT_FreeText.create((InternationalString) 
value);
@@ -135,9 +136,9 @@ public final class CharSequenceAdapter e
          * have been replaced by an Anchor. The output will be one of the 
following:
          *
          * 
┌──────────────────────────────────────────────────┬────────────────────────────────┐
-         * │ <gmd:someElement>                                │ 
<gmd:someElement>              │
+         * │ <mdb:someElement>                                │ 
<mdb:someElement>              │
          * │   <gco:CharacterString>...</gco:CharacterString> │   
<gmx:Anchor>...</gmx:Anchor> │
-         * │ </gmd:someElement>                               │ 
</gmd:someElement>             │
+         * │ </mdb:someElement>                               │ 
</mdb:someElement>             │
          * 
└──────────────────────────────────────────────────┴────────────────────────────────┘
          */
         return new GO_CharacterString(value);
@@ -182,4 +183,23 @@ public final class CharSequenceAdapter e
         }
         return string;
     }
+
+    /**
+     * Wraps the value only if marshalling ISO 19115-3 element.
+     * Otherwise (i.e. if marshalling a legacy ISO 19139:2007 document), omit 
the element.
+     */
+    public static final class Since2014 extends CharSequenceAdapter {
+        /** Empty constructor used only by JAXB. */
+        public Since2014() {
+        }
+
+        /**
+         * Wraps the given value in an ISO 19115-3 element, unless we are 
marshalling an older document.
+         *
+         * @return a non-null value only if marshalling ISO 19115-3 or newer.
+         */
+        @Override public GO_CharacterString marshal(final CharSequence value) {
+            return FilterByVersion.CURRENT_METADATA.accept() ? 
super.marshal(value) : null;
+        }
+    }
 }

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Boolean.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Boolean.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Boolean.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Boolean.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -23,9 +23,9 @@ import javax.xml.bind.annotation.XmlType
 
 /**
  * Surrounds boolean value by {@code <gco:Boolean>}.
- * The ISO-19139 standard requires most types to be surrounded by an element 
representing the value type.
+ * The ISO 19115-3 standard requires most types to be wrapped by an element 
representing the value type.
  * The JAXB default behavior is to marshal primitive Java types directly, 
without such wrapper element.
- * The role of this class is to add the {@code <gco:…>} wrapper element 
required by ISO 19139.
+ * The role of this class is to add the {@code <gco:…>} wrapper element 
required by ISO 19115-3.
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
@@ -63,7 +63,7 @@ public final class GO_Boolean extends Pr
 
     /**
      * Allows JAXB to change the result of the marshalling process, according 
to the
-     * ISO-19139 standard and its requirements about primitive types.
+     * ISO 19115-3 standard and its requirements about primitive types.
      *
      * @param  value  the boolean value we want to surround by an element 
representing its type.
      * @return an adaptation of the boolean value, that is to say a boolean 
value surrounded

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlType
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import org.w3c.dom.Element;
 import org.opengis.util.CodeList;
@@ -32,16 +33,18 @@ import org.apache.sis.internal.jaxb.gmx.
 import org.apache.sis.internal.jaxb.gmx.FileName;
 import org.apache.sis.internal.jaxb.gmx.MimeFileType;
 import org.apache.sis.internal.jaxb.gmd.CodeListUID;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
 import org.apache.sis.util.CharSequences;
 import org.apache.sis.util.Workaround;
 import org.apache.sis.util.iso.Types;
-import org.apache.sis.util.resources.Errors;
+import org.apache.sis.util.resources.IndexedResourceBundle;
 import org.apache.sis.util.resources.Messages;
+import org.apache.sis.util.resources.Errors;
 
 
 /**
- * JAXB wrapper for string value in a {@code <gco:CharacterString>}, {@code 
<gmx:Anchor>},
- * {@code <gmx:FileName>} or {@code <gmx:MimeFileType>} element, for ISO-19139 
compliance.
+ * JAXB wrapper for string value in a {@code <gco:CharacterString>}, {@code 
<gcx:Anchor>},
+ * {@code <gcx:FileName>} or {@code <gcx:MimeFileType>} element, for ISO 
19115-3 compliance.
  *
  * <p>{@code FileName} and {@code MimeFileType} are possible substitutions for 
{@code CharacterString}.
  * They make sense only in {@link 
org.apache.sis.metadata.iso.identification.DefaultBrowseGraphic} or
@@ -54,7 +57,8 @@ import org.apache.sis.util.resources.Mes
  *
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @author  Cullen Rombach (Image Matters)
+ * @version 1.0
  *
  * @see org.apache.sis.internal.jaxb.gmd.PT_FreeText
  *
@@ -67,6 +71,7 @@ import org.apache.sis.util.resources.Mes
     org.apache.sis.internal.jaxb.gmd.LanguageCode.class,
     org.apache.sis.internal.jaxb.gmd.Country.class
 })
+@XmlRootElement(name = "CharacterString")
 public class GO_CharacterString {
     /*
      * Numerical values below are ordered: if two or more values are defined 
(thoerically not legal,
@@ -74,27 +79,33 @@ public class GO_CharacterString {
      */
     /**
      * Value assigned to {@link #type} if the character string
-     * shall be marshalled as a {@code <gmx:MimeFileType>} element.
+     * shall be marshalled as a {@code <gcx:MimeFileType>} element.
      */
     public static final byte MIME_TYPE = 1;
 
     /**
      * Value assigned to {@link #type} if the character string
-     * shall be marshalled as a {@code <gmx:FileName>} element.
+     * shall be marshalled as a {@code <gcx:FileName>} element.
      */
-    public static final byte FILENAME = 2;
+    public static final byte FILENAME = 3;      // Precedence over legacy 
<gmd:UML>
+
+    /**
+     * Value assigned to {@link #type} if the character string
+     * shall be marshalled as a legacy {@code <gmd:URL>} element.
+     */
+    public static final byte URL = 2;
 
     /**
      * Value assigned to {@link #type} if the current {@link #text}
-     * has been found in a {@code <gmx:Anchor>} element.
+     * has been found in a {@code <gcx:Anchor>} element.
      */
-    private static final byte ANCHOR = 3;
+    private static final byte ANCHOR = 4;
 
     /**
      * Value assigned to {@link #type} if the current {@link #text}
      * has been found in an enumeration or code list element.
      */
-    private static final byte ENUM = 4;
+    private static final byte ENUM = 5;
 
     /**
      * The XML element names for each possible {@link #type} values.
@@ -107,6 +118,7 @@ public class GO_CharacterString {
             case FILENAME:  return "FileName";
             case ANCHOR:    return "Anchor";
             case ENUM:      return "ControlledVocabulary";
+            case URL:       return "URL";                       // In legacy 
XML only.
             default:        throw new AssertionError(type);
         }
     }
@@ -156,7 +168,7 @@ public class GO_CharacterString {
      * If the given value overwrites a previous one, a warning is emitted.
      *
      * @param  value     the value to set.
-     * @param  property  0 or one of the {@link #MIME_TYPE}, {@link #FILENAME} 
or {@link #ANCHOR} constants.
+     * @param  property  0 or one of the {@link #MIME_TYPE}, {@link 
#FILENAME}, {@link #URL} or {@link #ANCHOR} constants.
      */
     private void setText(CharSequence value, byte property) {
         value = CharSequences.trimWhitespaces(value);
@@ -185,7 +197,7 @@ public class GO_CharacterString {
     }
 
     /**
-     * Returns the text in a {@code <gco:CharacterString>}, {@code 
<gmx:FileName>} or {@code <gmx:MimeFileType>}
+     * Returns the text in a {@code <gco:CharacterString>}, {@code 
<gcx:FileName>} or {@code <gcx:MimeFileType>}
      * element, or {@code null} if none. This method does not return anything 
for {@code Enum} or {@code CodeList}
      * instances, as the later are handled by {@link #getCodeList()}.
      *
@@ -193,13 +205,15 @@ public class GO_CharacterString {
      */
     @XmlElements({
         @XmlElement(type = String.class,       name = "CharacterString"),
-        @XmlElement(type = Anchor.class,       name = "Anchor",       
namespace = Namespaces.GMX),
-        @XmlElement(type = FileName.class,     name = "FileName",     
namespace = Namespaces.GMX),
-        @XmlElement(type = MimeFileType.class, name = "MimeFileType", 
namespace = Namespaces.GMX)
+        @XmlElement(type = Anchor.class,       name = "Anchor",       
namespace = Namespaces.GCX),
+        @XmlElement(type = FileName.class,     name = "FileName",     
namespace = Namespaces.GCX),
+        @XmlElement(type = MimeFileType.class, name = "MimeFileType", 
namespace = Namespaces.GCX),
+        @XmlElement(type = GO_URL.class,       name = "URL",          
namespace = LegacyNamespaces.GMD)
     })
     private Object getValue() {
         switch (type) {
             case 0:         return StringAdapter.toString(text);
+            case URL:       return new GO_URL(text.toString());
             case FILENAME:  return new FileName(text.toString());
             case MIME_TYPE: return new MimeFileType(text.toString());
             case ANCHOR:    return text;                                // 
Shall be an instance of Anchor.
@@ -208,10 +222,11 @@ public class GO_CharacterString {
     }
 
     /**
-     * Sets the {@code <gco:CharacterString>}, {@code <gmx:FileName>} or 
{@code <gmx:MimeFileType>} value.
+     * Sets the {@code <gco:CharacterString>}, {@code <gcx:FileName>} or 
{@code <gcx:MimeFileType>} value.
      *
      * <p>This method is invoked by JAXB at unmarshalling time and should not 
need to be invoked directly.</p>
      */
+    @SuppressWarnings("unused")
     private void setValue(final Object value) {
         if (value instanceof Anchor) {
             setText((Anchor) value, ANCHOR);
@@ -219,6 +234,8 @@ public class GO_CharacterString {
             setText(value.toString(), FILENAME);
         } else if (value instanceof MimeFileType) {
             setText(value.toString(), MIME_TYPE);
+        } else if (value instanceof GO_URL) {           // Legacy ISO 
19139:2007
+            setText(value.toString(), URL);
         } else {
             setText((CharSequence) value, (byte) 0);
         }
@@ -230,7 +247,7 @@ public class GO_CharacterString {
      *
      * <div class="note"><b>Note:</b>
      * we have to rely on a somewhat complicated mechanism because the code 
lists implementations in GeoAPI
-     * do not hae JAXB annotations. If those annotations are added in a future 
GeoAPI implementation, then
+     * do not have JAXB annotations. If those annotations are added in a 
future GeoAPI implementation, then
      * we could replace this mechanism by a simple property annotated with 
{@code XmlElementRef}.</div>
      *
      * @since 0.7
@@ -243,23 +260,15 @@ public class GO_CharacterString {
         }
         final CodeList<?> code = Types.forCodeTitle(text);
         final String name = Types.getListName(code);
-        final String namespace;
         /*
-         * The namespace is usually GMD, but we also have some other 
namespaces link GMI.
+         * The namespace has have various value like CIT, SRV, MDQ, MRI, MSR, 
LAN, etc.
          * The real namespace is declared in the @XmlElement annotation of the 
getElement
          * method in the JAXB adapter. We could use reflection, but we do not 
in order to
          * avoid potential class loading issue and also because not all 
CodeList are in the
          * same package.
          */
-        if (name.startsWith("MD_") || name.startsWith("CI_") || 
name.startsWith("DS_")) {
-            namespace = Namespaces.GMD;
-        } else if (name.startsWith("MI_")) {
-            namespace = Namespaces.GMI;
-        } else if (name.startsWith("SV_") || name.equals("DCPList")) {
-            namespace = Namespaces.SRV;
-        } else if (name.startsWith("CS_") || name.startsWith("CD_") || 
name.startsWith("SC_")) {
-            namespace = Namespaces.GML;
-        } else {
+        String namespace = Namespaces.guessForType(name);
+        if (namespace == null) {
             namespace = XMLConstants.NULL_NS_URI;
         }
         return new JAXBElement<>(new QName(namespace, name), CodeListUID.class,
@@ -267,25 +276,37 @@ public class GO_CharacterString {
     }
 
     /**
-     * Invoked by JAXB for any XML element which is not a {@code 
<gco:CharacterString>}, {@code <gmx:FileName>}
-     * or {@code <gmx:MimeFileType>}. This method presumes that the element 
name is the CodeList standard name.
+     * Invoked by JAXB for any XML element which is not a {@code 
<gco:CharacterString>}, {@code <gcx:FileName>}
+     * or {@code <gcx:MimeFileType>}. This method presumes that the element 
name is the CodeList standard name.
      * If not, the element will be ignored.
      */
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings({"unchecked", "unused"})
     private void setCodeList(final Object value) {
         final Element e = (Element) value;
         if (e.getNodeType() == Element.ELEMENT_NODE) {
             final Class<?> ct = Types.forStandardName(e.getLocalName());
+            final Class<? extends IndexedResourceBundle> resources;
+            final short errorKey;
+            final Object[] args;
             if (ct != null && CodeList.class.isAssignableFrom(ct)) {
-                final String attribute = e.getAttribute("codeListValue");
+                final String attribute = 
e.getAttribute("codeListValue").trim();
                 if (!attribute.isEmpty()) {
                     text = Types.getCodeTitle(Types.forCodeName((Class) ct, 
attribute, true));
                     type = ENUM;
                     return;
+                } else {
+                    resources = Errors.class;
+                    errorKey  = Errors.Keys.MissingOrEmptyAttribute_2;
+                    args      = new Object[2];
+                    args[1]   = "codeListValue";
                 }
+            } else {
+                resources = Messages.class;
+                errorKey  = Messages.Keys.UnknownCodeList_1;
+                args      = new Object[1];
             }
-            Context.warningOccured(Context.current(), 
GO_CharacterString.class, "setCodeList",
-                    Errors.class, Errors.Keys.UnknownType_1, e.getNodeName());
+            args[0] = e.getNodeName();
+            Context.warningOccured(Context.current(), 
GO_CharacterString.class, "setCodeList", resources, errorKey, args);
         }
     }
 

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_DateTime.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_DateTime.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_DateTime.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_DateTime.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -29,7 +29,7 @@ import org.apache.sis.internal.jaxb.XmlU
 
 /**
  * JAXB adapter wrapping the date value in a {@code <gco:Date>} or {@code 
<gco:DateTime>} element,
- * for ISO-19139 compliance. Only one of {@code Date} or {@code DateTime} 
field shall be non-null.
+ * for ISO 19115-3 compliance. Only one of {@code Date} or {@code DateTime} 
field shall be non-null.
  * At marshalling time, the choice is performed depending on whatever the 
given date contains
  * hour, minute or seconds information different than zero.
  *

Modified: 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Decimal.java
URL: 
http://svn.apache.org/viewvc/sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Decimal.java?rev=1825355&r1=1825354&r2=1825355&view=diff
==============================================================================
--- 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Decimal.java
 [UTF-8] (original)
+++ 
sis/trunk/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gco/GO_Decimal.java
 [UTF-8] Mon Feb 26 11:28:17 2018
@@ -23,9 +23,9 @@ import javax.xml.bind.annotation.XmlType
 
 /**
  * Surrounds double values by {@code <gco:Decimal>}.
- * The ISO-19139 standard requires most types to be surrounded by an element 
representing the value type.
+ * The ISO 19115-3 standard requires most types to be wrapped by an element 
representing the value type.
  * The JAXB default behavior is to marshal primitive Java types directly, 
without such wrapper element.
- * The role of this class is to add the {@code <gco:…>} wrapper element 
required by ISO 19139.
+ * The role of this class is to add the {@code <gco:…>} wrapper element 
required by ISO 19115-3.
  *
  * <div class="section">Relationship with {@code GO_Real}</div>
  * This adapter is identical to {@link GO_Real} except for the element name, 
which is {@code "Decimal"} instead
@@ -38,7 +38,6 @@ import javax.xml.bind.annotation.XmlType
  * @version 0.3
  *
  * @see GO_Real
- * @see GO_Decimal32
  *
  * @since 0.3
  * @module
@@ -72,7 +71,7 @@ public final class GO_Decimal extends Pr
 
     /**
      * Allows JAXB to change the result of the marshalling process, according 
to the
-     * ISO-19139 standard and its requirements about primitive types.
+     * ISO 19115-3 standard and its requirements about primitive types.
      *
      * @param  value  the double value we want to surround by an element 
representing its type.
      * @return an adaptation of the double value, that is to say a double 
value surrounded


Reply via email to