This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 086db2d55757e001179e338be1ee35a9ad52c51f
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Tue Jul 3 11:18:08 2018 +0200

    Complete ISOMetadata.setIdentifier(Identifier) with a getIdentifier() 
method.
    This method was initially not provided because of the risk of collision if 
a subclass want to provide an "identifier" property of different kind.
    But ISOMetadata is only for ISO 19115 metadata, and this collision do not 
happen for that particular conceptual model.
---
 .../sis/internal/jaxb/NonMarshalledAuthority.java  |  2 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   |  5 ++-
 .../org/apache/sis/metadata/iso/ISOMetadata.java   | 42 ++++++++++++++++++----
 .../sis/metadata/iso/acquisition/DefaultEvent.java |  3 +-
 .../iso/acquisition/DefaultInstrument.java         |  3 +-
 .../metadata/iso/acquisition/DefaultOperation.java |  3 +-
 .../metadata/iso/acquisition/DefaultPlatform.java  |  3 +-
 .../iso/acquisition/DefaultPlatformPass.java       |  3 +-
 .../iso/acquisition/DefaultRequirement.java        |  3 +-
 .../metadata/iso/distribution/DefaultMedium.java   |  3 +-
 .../iso/identification/DefaultCoupledResource.java | 14 +++-----
 .../metadata/iso/lineage/DefaultProcessing.java    |  3 +-
 12 files changed, 50 insertions(+), 37 deletions(-)

diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java
index 24f1af4..f4eb0c0 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/NonMarshalledAuthority.java
@@ -109,7 +109,7 @@ public final class NonMarshalledAuthority<T> extends 
CitationConstant.Authority<
 
     /**
      * Returns the first marshallable identifier from the given collection. 
This method omits
-     * "special" identifiers (ISO 19115-3 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)
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
index 75a18f7..6635325 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
@@ -70,7 +70,6 @@ import org.apache.sis.internal.jaxb.lan.LocaleAdapter;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.jaxb.FilterByVersion;
 import org.apache.sis.internal.jaxb.Context;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 import org.apache.sis.internal.jaxb.metadata.CI_Citation;
 import org.apache.sis.internal.jaxb.metadata.MD_Identifier;
 
@@ -418,7 +417,7 @@ public class DefaultMetadata extends ISOMetadata implements 
Metadata {
     @XmlElement(name = "metadataIdentifier")
     @XmlJavaTypeAdapter(MD_Identifier.Since2014.class)
     public Identifier getMetadataIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
@@ -462,7 +461,7 @@ public class DefaultMetadata extends ISOMetadata implements 
Metadata {
     @Deprecated
     public void setFileIdentifier(final String newValue) {
         // See "Note about deprecated methods implementation"
-        DefaultIdentifier identifier = 
DefaultIdentifier.castOrCopy(NonMarshalledAuthority.getMarshallable(identifiers));
+        DefaultIdentifier identifier = 
DefaultIdentifier.castOrCopy(super.getIdentifier());
         if (identifier == null) {
             if (newValue == null) return;
             identifier = new DefaultIdentifier();
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
index da47139..13b8ac8 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
@@ -133,7 +133,20 @@ public class ISOMetadata extends ModifiableMetadata 
implements IdentifiedObject,
     // 
--------------------------------------------------------------------------------------
 
     /**
-     * {@inheritDoc}
+     * Returns all identifiers associated to this object (from conceptual 
model and from XML document).
+     * This collection may contain identifiers from different sources:
+     *
+     * <ul class="verbose">
+     *   <li>Identifiers specified in the ISO 19115-1 or 19115-2 abstract 
models,
+     *       typically (but not necessarily) as an {@code identifier} property
+     *       (may also be {@link DefaultMetadata#getMetadataIdentifier() 
metadataIdentifier},
+     *       {@link 
org.apache.sis.metadata.iso.citation.DefaultCitation#getISBN() ISBN} or
+     *       {@link 
org.apache.sis.metadata.iso.citation.DefaultCitation#getISSN() ISSN} 
properties).</li>
+     *   <li>Identifiers specified in the ISO 19115-3 or 19115-4 XML schemas.
+     *       Those identifiers are typically stored as a result of 
unmarshalling an XML document.
+     *       Those identifiers can be recognized by an {@linkplain 
Identifier#getAuthority() authority}
+     *       sets as one of the {@link IdentifierSpace} constants.</li>
+     * </ul>
      */
     @Override
     public Collection<Identifier> getIdentifiers() {
@@ -166,14 +179,29 @@ public class ISOMetadata extends ModifiableMetadata 
implements IdentifiedObject,
     }
 
     /**
-     * Sets the identifier for metadata objects that are expected to contain 
at most one ISO 19115-1 identifier.
-     * This convenience method is used for implementation of public {@link 
setIdentifier(Identifier)} methods in
-     * subclasses having a [0 … 1] cardinality for the {@code identifier} 
property.
+     * Returns the first identifier which is presumed to be defined by ISO 
19115 conceptual model.
+     * This method checks the {@linkplain Identifier#getAuthority() authority} 
for filtering ignorable
+     * identifiers like ISBN/ISSN codes and XML attributes.
+     * This convenience method is provided for implementation of public {@code 
getIdentifier(Identifier)}
+     * methods in subclasses having an {@code identifier} property with [0 … 
1] cardinality.
      *
-     * <p>The default implementation removes all identifiers that are not ISO 
19115-3 identifiers before to add
-     * the given one in the {@link #identifiers} collection.</p>
+     * @return an identifier from ISO 19115-3 conceptual model (excluding XML 
identifiers),
+     *         or {@code null} if none.
+     *
+     * @since 1.0
+     */
+    protected Identifier getIdentifier() {
+        return NonMarshalledAuthority.getMarshallable(identifiers);
+    }
+
+    /**
+     * Sets the identifier for metadata objects that are expected to contain 
at most one ISO 19115 identifier.
+     * This convenience method is provided for implementation of public {@code 
setIdentifier(Identifier)} methods
+     * in subclasses having an {@code identifier} property with [0 … 1] 
cardinality.
+     * The default implementation removes all identifiers that would be 
returned by {@link #getIdentifier()}
+     * before to add the given one in the {@link #identifiers} collection.
      *
-     * @param  newValue  the new identifier value, or {@code null} for 
removing the ISO 19115-1 identifier.
+     * @param  newValue  the new identifier value, or {@code null} for 
removing the identifier.
      *
      * @since 1.0
      */
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
index 39f3e27..b1ffe20 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
@@ -30,7 +30,6 @@ import org.opengis.metadata.acquisition.PlatformPass;
 import org.opengis.metadata.acquisition.Sequence;
 import org.opengis.metadata.acquisition.Trigger;
 import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 
 import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
 import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
@@ -177,7 +176,7 @@ public class DefaultEvent extends ISOMetadata implements 
Event {
     @Override
     @XmlElement(name = "identifier", required = true)
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
index c254041..9ef0545 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
@@ -26,7 +26,6 @@ import org.opengis.metadata.acquisition.Platform;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.util.InternationalString;
 import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 
 
 /**
@@ -166,7 +165,7 @@ public class DefaultInstrument extends ISOMetadata 
implements Instrument {
     @Override
     @XmlElement(name = "identifier", required = true)
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
index 78f790a..425d859 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
@@ -31,7 +31,6 @@ import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.identification.Progress;
 import org.opengis.util.InternationalString;
 import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 
 
 /**
@@ -238,7 +237,7 @@ public class DefaultOperation extends ISOMetadata 
implements Operation {
     @Override
     @XmlElement(name = "identifier")
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
index fe4451a..34bed9c 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
@@ -27,7 +27,6 @@ import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.citation.Responsibility;
 import org.opengis.util.InternationalString;
 import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 
 
 /**
@@ -171,7 +170,7 @@ public class DefaultPlatform extends ISOMetadata implements 
Platform {
     @Override
     @XmlElement(name = "identifier", required = true)
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
index e26f716..78a128a 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
@@ -25,7 +25,6 @@ import org.opengis.metadata.Identifier;
 import org.opengis.metadata.acquisition.Event;
 import org.opengis.metadata.acquisition.PlatformPass;
 import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 
 
 /**
@@ -130,7 +129,7 @@ public class DefaultPlatformPass extends ISOMetadata 
implements PlatformPass {
     @Override
     @XmlElement(name = "identifier", required = true)
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
index a3886d6..f7bbc0b 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
@@ -29,7 +29,6 @@ import org.opengis.metadata.acquisition.Requirement;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.citation.Responsibility;
 import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 
 import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
 import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
@@ -206,7 +205,7 @@ public class DefaultRequirement extends ISOMetadata 
implements Requirement {
     @Override
     @XmlElement(name = "identifier", required = true)
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
index 31c0691..d8d92df 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
@@ -35,7 +35,6 @@ import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.internal.jaxb.gco.GO_Real;
 import org.apache.sis.internal.jaxb.FilterByVersion;
 import org.apache.sis.internal.xml.LegacyNamespaces;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 import org.apache.sis.internal.jaxb.metadata.MD_Identifier;
 import org.apache.sis.internal.metadata.Dependencies;
 import org.apache.sis.internal.metadata.LegacyPropertyAdapter;
@@ -376,7 +375,7 @@ public class DefaultMedium extends ISOMetadata implements 
Medium {
     @XmlElement(name = "identifier")
     @XmlJavaTypeAdapter(MD_Identifier.Since2014.class)
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResource.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResource.java
index c892b85..4ee2f81 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResource.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultCoupledResource.java
@@ -62,7 +62,7 @@ import org.apache.sis.xml.Namespaces;
     "resource",                 // Ibid.
     "operation",                // Ibid.
     "operationName",            // Legacy ISO 19139:2007
-    "identifier",               // Ibid.
+    "id",                       // Ibid.
     "legacyName"                // Legacy ISO 19139:2007 way to write scoped 
name
 })
 @XmlRootElement(name = "SV_CoupledResource", namespace = Namespaces.SRV)
@@ -287,10 +287,11 @@ public class DefaultCoupledResource extends ISOMetadata 
implements CoupledResour
 
     /**
      * Returns the resource identifier, which is assumed to be the name as a 
string.
-     * Used in legacy ISO 19139:2007 documents.
+     * Used in legacy ISO 19139:2007 documents. There is no setter method; we 
expect
+     * the XML to declare {@code <srv:operationName>} instead.
      */
     @XmlElement(name = "identifier", namespace = LegacyNamespaces.SRV)
-    private String getIdentifier() {
+    private String getId() {
         if (FilterByVersion.LEGACY_METADATA.accept()) {
             final ScopedName name = getScopedName();
             if (name != null) {
@@ -301,13 +302,6 @@ public class DefaultCoupledResource extends ISOMetadata 
implements CoupledResour
     }
 
     /**
-     * Handled as a synonymous of {@code <srv:operationName>}.
-     */
-    private void setIdentifier(final String identifier) {
-        setOperationName(identifier);
-    }
-
-    /**
      * Returns the {@code <gco:ScopedName>} element to marshal in legacy ISO 
19139:2007 element.
      * The {@code <srv:scopedName>} element wrapper (note the lower-case "s") 
was missing in that
      * legacy specification. This departure from ISO patterns has been fixed 
in ISO 19115-3:2016.
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessing.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessing.java
index c9896fc..c4a734f 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessing.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessing.java
@@ -26,7 +26,6 @@ import org.opengis.metadata.lineage.Algorithm;
 import org.opengis.metadata.lineage.Processing;
 import org.opengis.util.InternationalString;
 import org.apache.sis.metadata.iso.ISOMetadata;
-import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 
 
 /**
@@ -154,7 +153,7 @@ public class DefaultProcessing extends ISOMetadata 
implements Processing {
     @Override
     @XmlElement(name = "identifier", required = true)
     public Identifier getIdentifier() {
-        return NonMarshalledAuthority.getMarshallable(identifiers);
+        return super.getIdentifier();
     }
 
     /**

Reply via email to