sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1550842 [2/4] - in /sis/branches/JDK6: ./ application/sis-console/src/test/java/org/apache/sis/console/ core/sis-build-helper/src/main/java/org/apache/sis/internal/taglet/ core/sis-build-helper/src/site/apt/ core/sis-metadata/src/main/java...
Date Fri, 13 Dec 2013 22:12:48 GMT
Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_PortrayalCatalogueReference.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_PortrayalCatalogueReference.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_PortrayalCatalogueReference.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_PortrayalCatalogueReference.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MD_PortrayalCatalogue
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code PortrayalCatalogueReference.class}
      */
     @Override
     protected Class<PortrayalCatalogueReference> getBoundType() {
@@ -79,7 +81,7 @@ public final class MD_PortrayalCatalogue
      */
     @XmlElementRef
     public DefaultPortrayalCatalogueReference getElement() {
-        return skip() ? null : DefaultPortrayalCatalogueReference.castOrCopy(metadata);
+        return DefaultPortrayalCatalogueReference.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RangeDimension.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RangeDimension.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RangeDimension.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RangeDimension.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MD_RangeDimension ext
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code RangeDimension.class}
      */
     @Override
     protected Class<RangeDimension> getBoundType() {
@@ -79,7 +81,6 @@ public final class MD_RangeDimension ext
      */
     @XmlElementRef
     public DefaultRangeDimension getElement() {
-        if (skip()) return null;
         final RangeDimension metadata = this.metadata;
         if (metadata instanceof Band) {
             return MI_Band.castOrCopy((Band) metadata);

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RepresentativeFraction.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RepresentativeFraction.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RepresentativeFraction.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_RepresentativeFraction.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MD_RepresentativeFrac
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code RepresentativeFraction.class}
      */
     @Override
     protected Class<RepresentativeFraction> getBoundType() {
@@ -79,7 +81,7 @@ public final class MD_RepresentativeFrac
      */
     @XmlElementRef
     public DefaultRepresentativeFraction getElement() {
-        return skip() ? null : DefaultRepresentativeFraction.castOrCopy(metadata);
+        return DefaultRepresentativeFraction.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Resolution.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Resolution.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Resolution.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Resolution.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MD_Resolution extends
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Resolution.class}
      */
     @Override
     protected Class<Resolution> getBoundType() {
@@ -77,7 +79,7 @@ public final class MD_Resolution extends
      */
     @XmlElementRef
     public DefaultResolution getElement() {
-        return skip() ? null : DefaultResolution.castOrCopy(metadata);
+        return DefaultResolution.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_ScopeDescription.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_ScopeDescription.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_ScopeDescription.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_ScopeDescription.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MD_ScopeDescription e
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code ScopeDescription.class}
      */
     @Override
     protected Class<ScopeDescription> getBoundType() {
@@ -77,7 +79,7 @@ public final class MD_ScopeDescription e
      */
     @XmlElementRef
     public DefaultScopeDescription getElement() {
-        return skip() ? null : DefaultScopeDescription.castOrCopy(metadata);
+        return DefaultScopeDescription.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_SpatialRepresentation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_SpatialRepresentation.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_SpatialRepresentation.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_SpatialRepresentation.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -49,6 +49,8 @@ public final class MD_SpatialRepresentat
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code SpatialRepresentation.class}
      */
     @Override
     protected Class<SpatialRepresentation> getBoundType() {
@@ -83,7 +85,6 @@ public final class MD_SpatialRepresentat
      */
     @XmlElementRef
     public AbstractSpatialRepresentation getElement() {
-        if (skip()) return null;
         final SpatialRepresentation metadata = this.metadata;
         if (metadata instanceof Georectified) {
             return MI_Georectified.castOrCopy((Georectified) metadata);

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_StandardOrderProcess.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_StandardOrderProcess.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_StandardOrderProcess.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_StandardOrderProcess.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MD_StandardOrderProce
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code StandardOrderProcess.class}
      */
     @Override
     protected Class<StandardOrderProcess> getBoundType() {
@@ -79,7 +81,7 @@ public final class MD_StandardOrderProce
      */
     @XmlElementRef
     public DefaultStandardOrderProcess getElement() {
-        return skip() ? null : DefaultStandardOrderProcess.castOrCopy(metadata);
+        return DefaultStandardOrderProcess.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Usage.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Usage.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Usage.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MD_Usage.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MD_Usage extends Prop
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Usage.class}
      */
     @Override
     protected Class<Usage> getBoundType() {
@@ -77,7 +79,7 @@ public final class MD_Usage extends Prop
      */
     @XmlElementRef
     public DefaultUsage getElement() {
-        return skip() ? null : DefaultUsage.castOrCopy(metadata);
+        return DefaultUsage.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_AcquisitionInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_AcquisitionInformation.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_AcquisitionInformation.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_AcquisitionInformation.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MI_AcquisitionInforma
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code AcquisitionInformation.class}
      */
     @Override
     protected Class<AcquisitionInformation> getBoundType() {
@@ -79,7 +81,7 @@ public final class MI_AcquisitionInforma
      */
     @XmlElementRef
     public DefaultAcquisitionInformation getElement() {
-        return skip() ? null : DefaultAcquisitionInformation.castOrCopy(metadata);
+        return DefaultAcquisitionInformation.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_EnvironmentalRecord.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_EnvironmentalRecord.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_EnvironmentalRecord.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_EnvironmentalRecord.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MI_EnvironmentalRecor
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code EnvironmentalRecord.class}
      */
     @Override
     protected Class<EnvironmentalRecord> getBoundType() {
@@ -79,7 +81,7 @@ public final class MI_EnvironmentalRecor
      */
     @XmlElementRef
     public DefaultEnvironmentalRecord getElement() {
-        return skip() ? null : DefaultEnvironmentalRecord.castOrCopy(metadata);
+        return DefaultEnvironmentalRecord.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Event.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Event.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Event.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Event.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_Event extends Prop
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Event.class}
      */
     @Override
     protected Class<Event> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_Event extends Prop
      */
     @XmlElementRef
     public DefaultEvent getElement() {
-        return skip() ? null : DefaultEvent.castOrCopy(metadata);
+        return DefaultEvent.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GCP.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GCP.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GCP.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GCP.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_GCP extends Proper
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code GCP.class}
      */
     @Override
     protected Class<GCP> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_GCP extends Proper
      */
     @XmlElementRef
     public DefaultGCP getElement() {
-        return skip() ? null : DefaultGCP.castOrCopy(metadata);
+        return DefaultGCP.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GeolocationInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GeolocationInformation.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GeolocationInformation.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_GeolocationInformation.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MI_GeolocationInforma
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code GeolocationInformation.class}
      */
     @Override
     protected Class<GeolocationInformation> getBoundType() {
@@ -79,7 +81,7 @@ public final class MI_GeolocationInforma
      */
     @XmlElementRef
     public AbstractGeolocationInformation getElement() {
-        return skip() ? null : AbstractGeolocationInformation.castOrCopy(metadata);
+        return AbstractGeolocationInformation.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Instrument.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Instrument.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Instrument.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Instrument.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_Instrument extends
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Instrument.class}
      */
     @Override
     protected Class<Instrument> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_Instrument extends
      */
     @XmlElementRef
     public DefaultInstrument getElement() {
-        return skip() ? null : DefaultInstrument.castOrCopy(metadata);
+        return DefaultInstrument.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Objective.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Objective.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Objective.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Objective.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_Objective extends 
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Objective.class}
      */
     @Override
     protected Class<Objective> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_Objective extends 
      */
     @XmlElementRef
     public DefaultObjective getElement() {
-        return skip() ? null : DefaultObjective.castOrCopy(metadata);
+        return DefaultObjective.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Operation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Operation.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Operation.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Operation.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_Operation extends 
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Operation.class}
      */
     @Override
     protected Class<Operation> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_Operation extends 
      */
     @XmlElementRef
     public DefaultOperation getElement() {
-        return skip() ? null : DefaultOperation.castOrCopy(metadata);
+        return DefaultOperation.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Plan.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Plan.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Plan.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Plan.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_Plan extends Prope
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Plan.class}
      */
     @Override
     protected Class<Plan> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_Plan extends Prope
      */
     @XmlElementRef
     public DefaultPlan getElement() {
-        return skip() ? null : DefaultPlan.castOrCopy(metadata);
+        return DefaultPlan.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Platform.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Platform.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Platform.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Platform.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_Platform extends P
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Platform.class}
      */
     @Override
     protected Class<Platform> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_Platform extends P
      */
     @XmlElementRef
     public DefaultPlatform getElement() {
-        return skip() ? null : DefaultPlatform.castOrCopy(metadata);
+        return DefaultPlatform.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_PlatformPass.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_PlatformPass.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_PlatformPass.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_PlatformPass.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_PlatformPass exten
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code PlatformPass.class}
      */
     @Override
     protected Class<PlatformPass> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_PlatformPass exten
      */
     @XmlElementRef
     public DefaultPlatformPass getElement() {
-        return skip() ? null : DefaultPlatformPass.castOrCopy(metadata);
+        return DefaultPlatformPass.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RangeElementDescription.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RangeElementDescription.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RangeElementDescription.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RangeElementDescription.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -45,6 +45,8 @@ public final class MI_RangeElementDescri
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code RangeElementDescription.class}
      */
     @Override
     protected Class<RangeElementDescription> getBoundType() {
@@ -79,7 +81,7 @@ public final class MI_RangeElementDescri
      */
     @XmlElementRef
     public DefaultRangeElementDescription getElement() {
-        return skip() ? null : DefaultRangeElementDescription.castOrCopy(metadata);
+        return DefaultRangeElementDescription.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RequestedDate.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RequestedDate.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RequestedDate.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_RequestedDate.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_RequestedDate exte
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code RequestedDate.class}
      */
     @Override
     protected Class<RequestedDate> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_RequestedDate exte
      */
     @XmlElementRef
     public DefaultRequestedDate getElement() {
-        return skip() ? null : DefaultRequestedDate.castOrCopy(metadata);
+        return DefaultRequestedDate.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Requirement.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Requirement.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Requirement.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MI_Requirement.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MI_Requirement extend
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code Requirement.class}
      */
     @Override
     protected Class<Requirement> getBoundType() {
@@ -77,7 +79,7 @@ public final class MI_Requirement extend
      */
     @XmlElementRef
     public DefaultRequirement getElement() {
-        return skip() ? null : DefaultRequirement.castOrCopy(metadata);
+        return DefaultRequirement.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MX_DataFile.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MX_DataFile.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MX_DataFile.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/MX_DataFile.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -43,6 +43,8 @@ public final class MX_DataFile extends P
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code DataFile.class}
      */
     @Override
     protected Class<DataFile> getBoundType() {
@@ -77,7 +79,7 @@ public final class MX_DataFile extends P
      */
     @XmlElementRef
     public DefaultDataFile getElement() {
-        return skip() ? null : DefaultDataFile.castOrCopy(metadata);
+        return DefaultDataFile.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_Identifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_Identifier.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_Identifier.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_Identifier.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -48,6 +48,8 @@ public final class RS_Identifier extends
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code ReferenceIdentifier.class}
      */
     @Override
     protected Class<ReferenceIdentifier> getBoundType() {
@@ -82,9 +84,10 @@ public final class RS_Identifier extends
      */
     @XmlElementRef
     public ImmutableIdentifier getElement() {
-        if (skip()) return null;
         final ReferenceIdentifier metadata = this.metadata;
-        if (metadata instanceof ImmutableIdentifier) {
+        if (metadata == null) {
+            return null;
+        } else if (metadata instanceof ImmutableIdentifier) {
             return (ImmutableIdentifier) metadata;
         } else {
             return new ImmutableIdentifier(metadata);

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -41,6 +41,8 @@ public final class RS_ReferenceSystem ex
      * Returns the GeoAPI interface which is bound by this adapter.
      * This method is indirectly invoked by the private constructor
      * below, so it shall not depend on the state of this object.
+     *
+     * @return {@code ReferenceSystem.class}
      */
     @Override
     protected Class<ReferenceSystem> getBoundType() {
@@ -77,9 +79,10 @@ public final class RS_ReferenceSystem ex
      */
     @XmlElementRef
     public ReferenceSystemMetadata getElement() {
-        if (skip()) return null;
         final ReferenceSystem metadata = this.metadata;
-        if (metadata instanceof ReferenceSystemMetadata) {
+        if (metadata == null) {
+            return null;
+        } else if (metadata instanceof ReferenceSystemMetadata) {
             return (ReferenceSystemMetadata) metadata;
         } else {
             return new ReferenceSystemMetadata(metadata);

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ExcludedSet.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ExcludedSet.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ExcludedSet.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ExcludedSet.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -61,6 +61,8 @@ public final class ExcludedSet<E> extend
 
     /**
      * Returns {@code true} since this set is always empty.
+     *
+     * @return {@code true}
      */
     @Override
     public boolean isEmpty() {
@@ -69,6 +71,8 @@ public final class ExcludedSet<E> extend
 
     /**
      * Returns {@code 0} since this set is always empty.
+     *
+     * @return 0
      */
     @Override
     public int size() {
@@ -77,6 +81,8 @@ public final class ExcludedSet<E> extend
 
     /**
      * Returns the empty iterator.
+     *
+     * @return Empty iterator.
      */
     @Override
     public Iterator<E> iterator() {
@@ -86,6 +92,9 @@ public final class ExcludedSet<E> extend
     /**
      * Unconditionally throws a {@link UnsupportedOperationException} with a message
      * saying which properties are mutually exclusive.
+     *
+     * @param  e Ignored.
+     * @return Never return.
      */
     @Override
     public boolean add(final E e) {

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -19,6 +19,7 @@ package org.apache.sis.metadata;
 import java.util.Map;
 import java.util.logging.Logger;
 import javax.xml.bind.annotation.XmlTransient;
+import org.apache.sis.util.Emptiable;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.LenientComparable;
 import org.apache.sis.util.collection.TreeTable;
@@ -75,7 +76,7 @@ import org.apache.sis.util.logging.Loggi
  * @see MetadataStandard
  */
 @XmlTransient
-public abstract class AbstractMetadata implements LenientComparable {
+public abstract class AbstractMetadata implements LenientComparable, Emptiable {
     /**
      * The logger for messages related to metadata implementations.
      */
@@ -125,8 +126,7 @@ public abstract class AbstractMetadata i
      *   <li>An other metadata object containing only {@code null}, nil or empty properties.</li>
      * </ul>
      *
-     * Note that empty properties can be removed by calling the {@link ModifiableMetadata#prune()}
-     * method.
+     * Note that empty properties can be removed by calling the {@link ModifiableMetadata#prune()} method.
      *
      * {@section Note for implementors}
      * The default implementation uses Java reflection indirectly, by iterating over all entries
@@ -139,6 +139,7 @@ public abstract class AbstractMetadata i
      *
      * @see org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox#isEmpty()
      */
+    @Override
     public boolean isEmpty() {
         return Pruner.isEmpty(this, false);
     }

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/Pruner.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/Pruner.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/Pruner.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/Pruner.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.Iterator;
 import java.util.Collection;
 import org.opengis.util.CodeList;
+import org.apache.sis.util.Emptiable;
 import org.apache.sis.internal.util.CollectionsExt;
 
 import static org.apache.sis.metadata.ValueExistencePolicy.*;
@@ -132,47 +133,58 @@ final class Pruner {
                     tested.put(value, Boolean.TRUE);
                 } else {
                     isEmpty = false;
+                    if (!prune) break; // No need to continue if we are not pruning the metadata.
                 }
             } else {
-                boolean allEmpty = true;
+                /*
+                 * At this point, 'value' is a new instance not yet processed by Pruner. The value may
+                 * be a data object or a collection. For convenience we will proceed as if we had only
+                 * collections, wrapping data object in a singleton collection if necessary.
+                 */
+                boolean allElementsAreEmpty = true;
                 final Collection<?> values = CollectionsExt.toCollection(value);
                 for (final Iterator<?> it = values.iterator(); it.hasNext();) {
                     final Object element = it.next();
                     if (!isNullOrEmpty(element)) {
                         /*
-                         * If the value is not an empty "simple" property (null value, or empty
-                         * string, or an empty collection or array), check if it is an other
-                         * metadata element. If so, invoke the isEmpty() method recursively.
+                         * At this point, 'element' is not an empty CharSequence, Collection or array.
+                         * It may be an other metadata, a Java primitive type or user-defined object.
+                         *
+                         *  - For AbstractMetadata, delegate to the public API in case it has been overriden.
+                         *  - For user-defined Emptiable, delegate to the user's isEmpty() method. Note that
+                         *    we test at different times depending if 'prune' is true of false.
                          */
-                        final boolean e;
-                        if (element instanceof Enum<?> || element instanceof CodeList<?>) {
-                            e = false;
-                        } else if (element instanceof AbstractMetadata) {
+                        boolean isEmptyElement = false;
+                        if (element instanceof AbstractMetadata) {
                             final AbstractMetadata md = (AbstractMetadata) element;
                             if (prune) md.prune();
-                            e = md.isEmpty();
-                        } else {
+                            isEmptyElement = md.isEmpty();
+                        } else if (!prune && element instanceof Emptiable) {
+                            isEmptyElement = ((Emptiable) element).isEmpty();
+                            // If 'prune' is true, we will rather test for Emptiable after our pruning attempt.
+                        } else if (!(element instanceof Enum<?>) && !(element instanceof CodeList<?>)) {
                             final MetadataStandard standard = MetadataStandard.forClass(element.getClass());
                             if (standard != null) {
-                                e = isEmpty(asMap(standard, element, prune), tested, prune);
+                                isEmptyElement = isEmpty(asMap(standard, element, prune), tested, prune);
+                                if (!isEmptyElement && element instanceof Emptiable) {
+                                    isEmptyElement = ((Emptiable) element).isEmpty();
+                                }
                             } else if (isPrimitive(entry)) {
                                 if (value instanceof Number) {
-                                    e = Double.isNaN(((Number) value).doubleValue());
+                                    isEmptyElement = Double.isNaN(((Number) value).doubleValue());
                                 } else {
                                     // Typically methods of the kind 'isFooAvailable()'.
-                                    e = Boolean.FALSE.equals(value);
+                                    isEmptyElement = Boolean.FALSE.equals(value);
                                 }
-                            } else {
-                                e = false; // Element is a String, Number (not primitive), etc.
                             }
                         }
-                        if (!e) {
+                        if (!isEmptyElement) {
                             // At this point, we have determined that the property is not empty.
                             // If we are not removing empty nodes, there is no need to continue.
                             if (!prune) {
                                 return false;
                             }
-                            allEmpty = false;
+                            allElementsAreEmpty = false;
                             continue;
                         }
                     }
@@ -183,15 +195,14 @@ final class Pruner {
                     }
                 }
                 // If all elements were empty, set the whole property to 'null'.
-                if (allEmpty) {
+                isEmpty &= allElementsAreEmpty;
+                if (allElementsAreEmpty) {
                     tested.put(value, Boolean.TRUE);
                     if (prune) try {
                         entry.setValue(null);
                     } catch (UnsupportedOperationException e) {
                         // Entry is read only - ignore.
                     }
-                } else {
-                    isEmpty = false;
                 }
             }
         }

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/ValueExistencePolicy.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/ValueExistencePolicy.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/ValueExistencePolicy.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/ValueExistencePolicy.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -150,6 +150,11 @@ public enum ValueExistencePolicy {
      * <p>This method intentionally does not inspect array or collection elements, since this method
      * is invoked from methods doing shallow copy or comparison. If we were inspecting elements,
      * we would need to add a check against infinite recursivity.</p>
+     *
+     * <p>This method does not check for the {@link org.apache.sis.util.Emptiable} interface because
+     * the {@code isEmpty()} method may be costly (for example {@link AbstractMetadata#isEmpty()}
+     * iterates over all the metadata tree). Instead, the check for {@code Emptiable} will be done
+     * explicitely by the caller when appropriate.</p>
      */
     static boolean isNullOrEmpty(final Object value) {
         if (value == null)                  return true;

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ImmutableIdentifier.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -21,7 +21,6 @@ import java.util.Locale;
 import java.io.Serializable;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.metadata.Identifier;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.parameter.InvalidParameterValueException;
@@ -32,8 +31,6 @@ import org.apache.sis.util.Deprecable;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.iso.Types;
 import org.apache.sis.metadata.iso.citation.Citations;
-import org.apache.sis.internal.jaxb.metadata.CI_Citation;
-import org.apache.sis.internal.jaxb.gco.StringAdapter;
 import org.apache.sis.internal.simple.SimpleIdentifiedObject;
 
 import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
@@ -76,7 +73,6 @@ public class ImmutableIdentifier impleme
      * @see #getCode()
      */
     @XmlElement(required = true)
-    @XmlJavaTypeAdapter(StringAdapter.class)
     private final String code;
 
     /**
@@ -86,7 +82,6 @@ public class ImmutableIdentifier impleme
      * @see #getCodeSpace()
      */
     @XmlElement(required = true)
-    @XmlJavaTypeAdapter(StringAdapter.class)
     private final String codeSpace;
 
     /**
@@ -96,7 +91,6 @@ public class ImmutableIdentifier impleme
      * @see #getAuthority()
      */
     @XmlElement(required = true)
-    @XmlJavaTypeAdapter(CI_Citation.class)
     private final Citation authority;
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -58,6 +58,17 @@ public final class Citations extends Sta
     public static final Citation OGC = new SimpleCitation("OGC");
 
     /**
+     * The <a href="http://www.ogp.org.uk">International Association of Oil & Gas Producers</a> organization.
+     * This organization is responsible for maintainance of {@link #EPSG} database.
+     *
+     * @see #EPSG
+     * @category Organization
+     *
+     * @since 0.4
+     */
+    public static final Citation OGP = new SimpleCitation("OGP");
+
+    /**
      * The <a href="http://sis.apache.org">Apache SIS</a> project.
      *
      * @since 0.4
@@ -121,6 +132,7 @@ public final class Citations extends Sta
      * {@linkplain org.opengis.referencing.crs.CoordinateReferenceSystem coordinate reference system}
      * identifiers.
      *
+     * @see #OGP
      * @see #AUTO
      * @see #AUTO2
      * @see #CRS
@@ -157,7 +169,7 @@ public final class Citations extends Sta
      * List of citations declared in this class.
      */
     private static final Citation[] AUTHORITIES = {
-        ISO, OGC, SIS, ESRI, ORACLE, NETCDF, GEOTIFF, PROJ4, EPSG, ISBN, ISSN
+        ISO, OGC, OGP, SIS, ESRI, ORACLE, NETCDF, GEOTIFF, PROJ4, EPSG, ISBN, ISSN
     };
 
     /**

Modified: sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/AllMetadataTest.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -39,12 +39,7 @@ import static org.junit.Assert.*;
  * @version 0.3
  * @module
  */
-@DependsOn({
-    org.apache.sis.metadata.PropertyAccessorTest.class,
-    org.apache.sis.metadata.iso.citation.DefaultCitationTest.class,
-    org.apache.sis.metadata.iso.citation.DefaultCitationDateTest.class,
-    org.apache.sis.metadata.iso.quality.AbstractElementTest.class
-})
+@DependsOn(org.apache.sis.metadata.PropertyAccessorTest.class)
 public final strictfp class AllMetadataTest extends MetadataTestCase {
     /**
      * A JUnit {@linkplain Rule rule} for listening to log events. This field is public

Copied: sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java (from r1550841, sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java?p2=sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java&p1=sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java&r1=1550841&r2=1550842&rev=1550842&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -99,13 +99,13 @@ public final strictfp class CustomMetada
     public void testSubtypeAttributes() throws JAXBException {
         final DataIdentification identification = new DataIdentification() {
             @Override public InternationalString getAbstract() {
-                Map<Locale, String> names = new HashMap<>();
+                Map<Locale, String> names = new HashMap<Locale, String>();
                 names.put(Locale.ENGLISH, "Description");
                 return DefaultFactories.NAMES.createInternationalString(names);
             }
 
             @Override public InternationalString getEnvironmentDescription() {
-                Map<Locale, String> names = new HashMap<>();
+                Map<Locale, String> names = new HashMap<Locale, String>();
                 names.put(Locale.ENGLISH, "Environment");
                 return DefaultFactories.NAMES.createInternationalString(names);
             }

Modified: sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/HardCodedCitations.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -87,6 +87,21 @@ public final strictfp class HardCodedCit
     }
 
     /**
+     * The <a href="http://www.ogp.org.uk">International Association of Oil & Gas Producers</a> organization.
+     * This organization is responsible for maintainance of {@link #EPSG} database.
+     * An {@linkplain Citation#getAlternateTitles() alternate title} for this citation is "OGP"
+     * (according ISO 19115, alternate titles often contain abbreviations).
+     */
+    public static final DefaultCitation OGP;
+    static {
+        final DefaultCitation c = new DefaultCitation("International Association of Oil & Gas Producers");
+        c.setAlternateTitles(singleton(new SimpleInternationalString("OGP")));
+        c.getIdentifiers().add(new DefaultIdentifier("OGP"));
+        c.freeze();
+        OGP = c;
+    }
+
+    /**
      * The <a href="http://www.epsg.org">European Petroleum Survey Group</a> authority.
      * An {@linkplain Citation#getAlternateTitles() alternate title} for this citation is
      * "EPSG" (according ISO 19115, alternate titles often contain abbreviations). In

Modified: sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -55,13 +55,15 @@ import org.junit.BeforeClass;
     org.apache.sis.xml.FreeTextMarshallingTest.class,
     org.apache.sis.xml.NilReasonMarshallingTest.class,
     org.apache.sis.xml.AnchorMarshallingTest.class,
-    org.apache.sis.xml.ObjectReferenceMarshallingTest.class,
+    org.apache.sis.xml.UUIDMarshallingTest.class,
+    org.apache.sis.xml.XLinkMarshallingTest.class,
 
     // ISO implementations.
     org.apache.sis.metadata.iso.citation.DefaultCitationDateTest.class,
     org.apache.sis.metadata.iso.citation.DefaultCitationTest.class,
     org.apache.sis.metadata.iso.maintenance.DefaultScopeDescriptionTest.class,
     org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBoxTest.class,
+    org.apache.sis.metadata.iso.extent.DefaultExtentTest.class,
     org.apache.sis.metadata.iso.extent.ExtentsTest.class,
     org.apache.sis.metadata.iso.spatial.DefaultGeorectifiedTest.class,
     org.apache.sis.metadata.iso.identification.DefaultKeywordsTest.class,
@@ -70,13 +72,13 @@ import org.junit.BeforeClass;
     org.apache.sis.metadata.iso.identification.DefaultBrowseGraphicTest.class,
     org.apache.sis.metadata.iso.identification.DefaultDataIdentificationTest.class,
     org.apache.sis.metadata.iso.quality.AbstractElementTest.class,
+    org.apache.sis.metadata.iso.quality.AbstractPositionalAccuracyTest.class,
+    org.apache.sis.metadata.iso.lineage.DefaultLineageTest.class,
+    org.apache.sis.metadata.iso.lineage.DefaultProcessStepTest.class,
     org.apache.sis.metadata.iso.ImmutableIdentifierTest.class,
-    org.apache.sis.metadata.iso.AllMetadataTest.class,
-
-    // XML marshalling (integration tests).
-    org.apache.sis.xml.CustomMetadataTest.class,
-    org.apache.sis.xml.ImageryMarshallingTest.class,
-    org.apache.sis.xml.MetadataMarshallingTest.class
+    org.apache.sis.metadata.iso.DefaultMetadataTest.class,
+    org.apache.sis.metadata.iso.CustomMetadataTest.class,
+    org.apache.sis.metadata.iso.AllMetadataTest.class
 })
 public final strictfp class MetadataTestSuite extends TestSuite {
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -66,6 +66,8 @@ public abstract class AbstractDirectPosi
     /**
      * Returns always {@code this}, the direct position for this
      * {@linkplain org.opengis.geometry.coordinate.Position position}.
+     *
+     * @return {@code this}.
      */
     @Override
     public final DirectPosition getDirectPosition() {

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -33,6 +33,7 @@ import org.opengis.referencing.crs.Coord
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.cs.RangeMeaning;
+import org.apache.sis.util.Emptiable;
 import org.apache.sis.util.Utilities;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.resources.Errors;
@@ -111,7 +112,7 @@ import org.apache.sis.internal.jdk7.Obje
  * @version 0.3
  * @module
  */
-public abstract class AbstractEnvelope implements Envelope {
+public abstract class AbstractEnvelope implements Envelope, Emptiable {
     /**
      * An empty array of envelopes, to be returned by {@link #toSimpleEnvelopes()}
      * when en envelope is empty.
@@ -624,6 +625,7 @@ public abstract class AbstractEnvelope i
      * @see org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox#isEmpty()
      * @see java.awt.geom.Rectangle2D#isEmpty()
      */
+    @Override
     public boolean isEmpty() {
         final int dimension = getDimension();
         if (dimension == 0) {

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -27,6 +27,7 @@ import org.opengis.referencing.cs.Coordi
 import org.opengis.referencing.cs.AxisDirection;
 import org.opengis.util.FactoryException;
 import org.apache.sis.util.resources.Errors;
+import org.apache.sis.util.Emptiable;
 import org.apache.sis.referencing.CRS;
 
 import static java.lang.Double.NaN;
@@ -106,7 +107,7 @@ import org.apache.sis.internal.jdk7.Obje
  * @see GeneralEnvelope
  * @see org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox
  */
-public class Envelope2D extends Rectangle2D.Double implements Envelope, Cloneable {
+public class Envelope2D extends Rectangle2D.Double implements Envelope, Emptiable, Cloneable {
     /**
      * Serial number for inter-operability with different versions.
      */

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -274,6 +274,8 @@ public class GeneralDirectPosition exten
 
     /**
      * Returns a deep copy of this position.
+     *
+     * @return A copy of this direct position.
      */
     @Override
     public GeneralDirectPosition clone() {

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_Ellipsoid.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_Ellipsoid.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_Ellipsoid.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_Ellipsoid.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -79,7 +79,7 @@ public final class CD_Ellipsoid extends 
      */
     @XmlElement(name = "Ellipsoid")
     public DefaultEllipsoid getElement() {
-        return skip() ? null : DefaultEllipsoid.castOrCopy(metadata);
+        return DefaultEllipsoid.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_GeodeticDatum.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_GeodeticDatum.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_GeodeticDatum.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_GeodeticDatum.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -79,7 +79,7 @@ public final class CD_GeodeticDatum exte
      */
     @XmlElement(name = "GeodeticDatum")
     public DefaultGeodeticDatum getElement() {
-        return skip() ? null : DefaultGeodeticDatum.castOrCopy(metadata);
+        return DefaultGeodeticDatum.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ImageDatum.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ImageDatum.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ImageDatum.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_ImageDatum.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -79,7 +79,7 @@ public final class CD_ImageDatum extends
      */
     @XmlElement(name = "ImageDatum")
     public DefaultImageDatum getElement() {
-        return skip() ? null : DefaultImageDatum.castOrCopy(metadata);
+        return DefaultImageDatum.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_PrimeMeridian.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_PrimeMeridian.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_PrimeMeridian.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_PrimeMeridian.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -79,7 +79,7 @@ public final class CD_PrimeMeridian exte
      */
     @XmlElement(name = "Ellipsoid")
     public DefaultPrimeMeridian getElement() {
-        return skip() ? null : DefaultPrimeMeridian.castOrCopy(metadata);
+        return DefaultPrimeMeridian.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_TemporalDatum.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_TemporalDatum.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_TemporalDatum.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_TemporalDatum.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -79,7 +79,7 @@ public final class CD_TemporalDatum exte
      */
     @XmlElement(name = "TemporalDatum")
     public DefaultTemporalDatum getElement() {
-        return skip() ? null : DefaultTemporalDatum.castOrCopy(metadata);
+        return DefaultTemporalDatum.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_VerticalDatum.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_VerticalDatum.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_VerticalDatum.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CD_VerticalDatum.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -79,7 +79,7 @@ public final class CD_VerticalDatum exte
      */
     @XmlElement(name = "VerticalDatum")
     public DefaultVerticalDatum getElement() {
-        return skip() ? null : DefaultVerticalDatum.castOrCopy(metadata);
+        return DefaultVerticalDatum.castOrCopy(metadata);
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_Identifier.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -16,28 +16,44 @@
  */
 package org.apache.sis.internal.jaxb.referencing;
 
-import javax.xml.bind.annotation.XmlValue;
-import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.adapters.XmlAdapter;
-import org.opengis.metadata.citation.Citation;
 import org.opengis.referencing.ReferenceIdentifier;
-import org.apache.sis.metadata.iso.citation.Citations;
-import org.apache.sis.metadata.iso.ImmutableIdentifier;
-import org.apache.sis.util.StringBuilders;
 
 
 /**
  * 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.
  *
- * <p>The XML produced by this adapter uses the GML syntax. The {@link RS_IdentifierCode} class
- * performs a similar mapping, but in which only the code (without codespace) is marshalled.</p>
- *
  * <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
  * 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>
  *
+ * {@section Marshalling}
+ * Identifiers are typically marshalled as below:
+ *
+ * {@preformat xml
+ *   <gml:identifier codeSpace="EPSG">4326</gml:identifier>
+ * }
+ *
+ * If the {@code ReferenceIdentifier} to marshal contains a {@linkplain ReferenceIdentifier#getVersion() version},
+ * then this adapter concatenates the version to the codespace in a "URI-like" way like below:
+ *
+ * {@preformat xml
+ *   <gml:identifier codeSpace="EPSG:8.3">4326</gml:identifier>
+ * }
+ *
+ * {@section Unmarshalling}
+ * Some data producers put a URN instead than a simple code value, as in the example below:
+ *
+ * {@preformat xml
+ *   <gml:identifier codeSpace="OGP">urn:ogc:def:crs:EPSG::4326</gml:identifier>
+ * }
+ *
+ * In such case this class takes the codespace as the {@linkplain ReferenceIdentifier#getAuthority() authority}
+ * ("OGP" in above example), and the 3 last URI elements are parsed as the codespace, version (optional) and
+ * code values respectively.
+ *
  * @author  Guilhem Legal (Geomatys)
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
@@ -45,65 +61,7 @@ import org.apache.sis.util.StringBuilder
  * @version 0.4
  * @module
  */
-public final class RS_Identifier extends XmlAdapter<RS_Identifier.Value, ReferenceIdentifier> {
-    /**
-     * The wrapper for GML identifier marshalled as a code value with a codespace attribute.
-     * Defined in a separated class because JAXB does not allow usage of {@code XmlValue} in
-     * a class that inherit an other class.
-     */
-    public static final class Value {
-        /**
-         * The identifier code.
-         *
-         * <p><b>Note:</b> GML (the target of this class) represents that code as an XML value, while
-         * {@link org.apache.sis.metadata.iso.ImmutableIdentifier} represents it as an XML element.</p>
-         */
-        @XmlValue
-        private String code;
-
-        /**
-         * The code space, which is often {@code "EPSG"} with the version in use.
-         *
-         * <p><b>Note:</b> GML (the target of this class) represents that code as an XML attribute, while
-         * {@link org.apache.sis.metadata.iso.ImmutableIdentifier} represents it as an XML element.</p>
-         */
-        @XmlAttribute
-        private String codeSpace;
-
-        /**
-         * Empty constructor for JAXB only.
-         */
-        public Value() {
-        }
-
-        /**
-         * Creates a wrapper initialized to the values of the given identifier.
-         *
-         * @param identifier The identifier from which to get the values.
-         */
-        Value(final ReferenceIdentifier identifier) {
-            code      = identifier.getCode();
-            codeSpace = identifier.getCodeSpace();
-            String version = identifier.getVersion();
-            if (version != null) {
-                final StringBuilder buffer = new StringBuilder(codeSpace);
-                if (buffer.length() != 0) {
-                    buffer.append('_');
-                }
-                StringBuilders.remove(buffer.append('v').append(version), ".");
-                codeSpace = buffer.toString();
-            }
-        }
-
-        /**
-         * Returns the identifier for this value. This method is the converse of the constructor.
-         */
-        ReferenceIdentifier getIdentifier() {
-            final Citation authority = Citations.fromName(codeSpace); // May be null.
-            return new ImmutableIdentifier(authority, Citations.getIdentifier(authority), code);
-        }
-    }
-
+public final class RS_Identifier extends XmlAdapter<Code, ReferenceIdentifier> {
     /**
      * Substitutes the wrapper value read from an XML stream by the object which will
      * represents the identifier. JAXB calls automatically this method at unmarshalling time.
@@ -112,7 +70,7 @@ public final class RS_Identifier extends
      * @return An identifier which represents the value.
      */
     @Override
-    public ReferenceIdentifier unmarshal(final Value value) {
+    public ReferenceIdentifier unmarshal(final Code value) {
         return (value != null) ? value.getIdentifier() : null;
     }
 
@@ -124,7 +82,7 @@ public final class RS_Identifier extends
      * @return The adapter for the given metadata.
      */
     @Override
-    public Value marshal(final ReferenceIdentifier value) {
-        return (value != null) ? new Value(value) : null;
+    public Code marshal(final ReferenceIdentifier value) {
+        return (value != null) ? new Code(value) : null;
     }
 }

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_IdentifierSingleton.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_IdentifierSingleton.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_IdentifierSingleton.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/RS_IdentifierSingleton.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -34,7 +34,7 @@ import static java.util.Collections.sing
  * @version 0.4
  * @module
  */
-public final class RS_IdentifierSingleton extends XmlAdapter<RS_Identifier.Value, Set<ReferenceIdentifier>> {
+public final class RS_IdentifierSingleton extends XmlAdapter<Code, Set<ReferenceIdentifier>> {
     /**
      * Substitutes the wrapper value read from an XML stream by the object which will
      * represents the identifier. JAXB calls automatically this method at unmarshalling time.
@@ -43,7 +43,7 @@ public final class RS_IdentifierSingleto
      * @return An identifier which represents the value.
      */
     @Override
-    public Set<ReferenceIdentifier> unmarshal(final RS_Identifier.Value value) {
+    public Set<ReferenceIdentifier> unmarshal(final Code value) {
         return (value != null) ? singleton(value.getIdentifier()) : null;
     }
 
@@ -55,11 +55,11 @@ public final class RS_IdentifierSingleto
      * @return The adapter for the given metadata.
      */
     @Override
-    public RS_Identifier.Value marshal(final Set<ReferenceIdentifier> value) {
+    public Code marshal(final Set<ReferenceIdentifier> value) {
         if (value != null) {
             final Iterator<ReferenceIdentifier> it = value.iterator();
             if (it.hasNext()) {
-                return new RS_Identifier.Value(it.next());
+                return new Code(it.next());
             }
         }
         return null;

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java?rev=1550842&r1=1550841&r2=1550842&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java [UTF-8] Fri Dec 13 22:12:45 2013
@@ -34,6 +34,7 @@ import org.opengis.parameter.ParameterDe
 import org.opengis.parameter.ParameterValue;
 import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.referencing.IdentifiedObject;
+import org.opengis.referencing.ReferenceIdentifier;
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.opengis.referencing.operation.MathTransform;
 import org.opengis.util.CodeList;
@@ -466,20 +467,26 @@ public class Formatter {
          */
         final Identifier identifier = getIdentifier(info);
         if (identifier != null && !AUTHORITY_EXCLUDE.isInstance(info)) {
-            final Citation authority = identifier.getAuthority();
-            if (authority != null) {
-                final String title = Citations.getIdentifier(authority);
-                if (title != null) {
-                    appendSeparator(requestNewLine);
-                    buffer.append("AUTHORITY").appendCodePoint(open);
-                    quote(title);
-                    final String code = identifier.getCode();
-                    if (code != null) {
-                        buffer.append(symbols.getSeparator());
-                        quote(code);
-                    }
-                    buffer.appendCodePoint(close);
+            String codeSpace = null;
+            if (identifier instanceof ReferenceIdentifier) {
+                codeSpace = ((ReferenceIdentifier) identifier).getCodeSpace();
+            }
+            if (codeSpace == null) {
+                final Citation authority = identifier.getAuthority();
+                if (authority != null) {
+                    codeSpace = Citations.getIdentifier(authority);
+                }
+            }
+            if (codeSpace != null) {
+                appendSeparator(requestNewLine);
+                buffer.append("AUTHORITY").appendCodePoint(open);
+                quote(codeSpace);
+                final String code = identifier.getCode();
+                if (code != null) {
+                    buffer.append(symbols.getSeparator());
+                    quote(code);
                 }
+                buffer.appendCodePoint(close);
             }
         }
         buffer.appendCodePoint(close);



Mime
View raw message