sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1459823 - in /sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso: ./ citation/
Date Fri, 22 Mar 2013 14:59:50 GMT
Author: desruisseaux
Date: Fri Mar 22 14:59:50 2013
New Revision: 1459823

URL: http://svn.apache.org/r1459823
Log:
Completed the root metadata package.

Added:
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultApplicationSchemaInformation.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java   (with props)
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java   (with props)
Modified:
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultApplicationSchemaInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultApplicationSchemaInformation.java?rev=1459823&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultApplicationSchemaInformation.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultApplicationSchemaInformation.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -0,0 +1,265 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import java.net.URI;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.ApplicationSchemaInformation;
+import org.opengis.metadata.citation.Citation;
+
+
+/**
+ * Information about the application schema used to build the dataset.
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MD_ApplicationSchemaInformation_Type", propOrder = {
+    "name",
+    "schemaLanguage",
+    "constraintLanguage",
+    "schemaAscii",
+    "graphicsFile",
+    "softwareDevelopmentFile",
+    "softwareDevelopmentFileFormat"
+})
+@XmlRootElement(name = "MD_ApplicationSchemaInformation")
+public class DefaultApplicationSchemaInformation extends ISOMetadata
+        implements ApplicationSchemaInformation
+{
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -3109191272905767382L;
+
+    /**
+     * Name of the application schema used.
+     */
+    private Citation name;
+
+    /**
+     * Identification of the schema language used.
+     */
+    private String schemaLanguage;
+
+    /**
+     * Formal language used in Application Schema.
+     */
+    private String constraintLanguage;
+
+    /**
+     * Full application schema given as an ASCII file.
+     */
+    private URI schemaAscii;
+
+    /**
+     * Full application schema given as a graphics file.
+     */
+    private URI graphicsFile;
+
+    /**
+     * Full application schema given as a software development file.
+     */
+    private URI softwareDevelopmentFile;
+
+    /**
+     * Software dependent format used for the application schema software dependent file.
+     */
+    private String softwareDevelopmentFileFormat;
+
+    /**
+     * Construct an initially empty application schema information.
+     */
+    public DefaultApplicationSchemaInformation() {
+    }
+
+    /**
+     * Creates a application schema information initialized to the specified values.
+     *
+     * @param name               The name of the application schema used.
+     * @param schemaLanguage     The the identification of the schema language used.
+     * @param constraintLanguage The formal language used in application schema.
+     */
+    public DefaultApplicationSchemaInformation(final Citation name,
+                                               final String schemaLanguage,
+                                               final String constraintLanguage)
+    {
+        this.name = name;
+        this.schemaLanguage = schemaLanguage;
+        this.constraintLanguage = constraintLanguage;
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultApplicationSchemaInformation castOrCopy(final ApplicationSchemaInformation object) {
+        if (object == null || object instanceof DefaultApplicationSchemaInformation) {
+            return (DefaultApplicationSchemaInformation) object;
+        }
+        final DefaultApplicationSchemaInformation copy = new DefaultApplicationSchemaInformation();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Name of the application schema used.
+     */
+    @Override
+    @XmlElement(name = "name", required = true)
+    public synchronized Citation getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of the application schema used.
+     *
+     * @param newValue The new name.
+     */
+    public synchronized void setName(final Citation newValue) {
+        checkWritePermission();
+        name = newValue;
+    }
+
+    /**
+     * Identification of the schema language used.
+     */
+    @Override
+    @XmlElement(name = "schemaLanguage", required = true)
+    public synchronized String getSchemaLanguage() {
+        return schemaLanguage;
+    }
+
+    /**
+     * Sets the identification of the schema language used.
+     *
+     * @param newValue The new schema language.
+     */
+    public synchronized void setSchemaLanguage(final String newValue) {
+        checkWritePermission();
+        schemaLanguage = newValue;
+    }
+
+    /**
+     * Formal language used in Application Schema.
+     */
+    @Override
+    @XmlElement(name = "constraintLanguage", required = true)
+    public synchronized String getConstraintLanguage()  {
+        return constraintLanguage;
+    }
+
+    /**
+     * Sets the formal language used in application schema.
+     *
+     * @param newValue The new constraint language.
+     */
+    public synchronized void setConstraintLanguage(final String newValue) {
+        checkWritePermission();
+        constraintLanguage = newValue;
+    }
+
+    /**
+     * Full application schema given as an ASCII file.
+     */
+    @Override
+    @XmlElement(name = "schemaAscii")
+    public synchronized URI getSchemaAscii()  {
+        return schemaAscii;
+    }
+
+    /**
+     * Sets the full application schema given as an ASCII file.
+     *
+     * @param newValue The new ASCII file.
+     */
+    public synchronized void setSchemaAscii(final URI newValue) {
+        checkWritePermission();
+        schemaAscii = newValue;
+    }
+
+    /**
+     * Full application schema given as a graphics file.
+     */
+    @Override
+    @XmlElement(name = "graphicsFile")
+    public synchronized URI getGraphicsFile()  {
+        return graphicsFile;
+    }
+
+    /**
+     * Sets the full application schema given as a graphics file.
+     *
+     * @param newValue The new graphics file.
+     */
+    public synchronized void setGraphicsFile(final URI newValue) {
+        checkWritePermission();
+        graphicsFile = newValue;
+    }
+
+    /**
+     * Full application schema given as a software development file.
+     */
+    @Override
+    @XmlElement(name = "softwareDevelopmentFile")
+    public synchronized URI getSoftwareDevelopmentFile()  {
+        return softwareDevelopmentFile;
+    }
+
+    /**
+     * Sets the full application schema given as a software development file.
+     *
+     * @param newValue The new software development file.
+     */
+    public synchronized void setSoftwareDevelopmentFile(final URI newValue) {
+        checkWritePermission();
+        softwareDevelopmentFile = newValue;
+    }
+
+    /**
+     * Software dependent format used for the application schema software dependent file.
+     */
+    @Override
+    @XmlElement(name = "softwareDevelopmentFileFormat")
+    public synchronized String getSoftwareDevelopmentFileFormat()  {
+        return softwareDevelopmentFileFormat;
+    }
+
+    /**
+     * Sets the software dependent format used for the application schema software dependent file.
+     *
+     * @param newValue The new software development file format.
+     */
+    public synchronized void setSoftwareDevelopmentFileFormat(final String newValue) {
+        checkWritePermission();
+        softwareDevelopmentFileFormat = newValue;
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultApplicationSchemaInformation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultApplicationSchemaInformation.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java?rev=1459823&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -0,0 +1,456 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.Datatype;
+import org.opengis.metadata.Obligation;
+import org.opengis.metadata.citation.ResponsibleParty;
+import org.opengis.metadata.ExtendedElementInformation;
+import org.opengis.util.InternationalString;
+import org.apache.sis.measure.ValueRange;
+import org.apache.sis.util.iso.Types;
+
+
+/**
+ * New metadata element, not found in ISO 19115, which is required to describe geographic data.
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MD_ExtendedElementInformation_Type", propOrder = {
+    "name",
+    "shortName",
+    "domainCode",
+    "definition",
+    "obligation",
+    "condition",
+    "dataType",
+    "maximumOccurrence",
+    "domainValue",
+    "parentEntity",
+    "rule",
+    "rationales",
+    "sources"
+})
+@XmlRootElement(name = "MD_ExtendedElementInformation")
+public class DefaultExtendedElementInformation extends ISOMetadata
+        implements ExtendedElementInformation
+{
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = -935396252908733907L;
+
+    /**
+     * Name of the extended metadata element.
+     */
+    private String name;
+
+    /**
+     * Short form suitable for use in an implementation method such as XML or SGML.
+     */
+    private String shortName;
+
+    /**
+     * Three digit code assigned to the extended element.
+     * Non-null only if the {@linkplain #getDataType() data type}
+     * is {@linkplain Datatype#CODE_LIST_ELEMENT code list element}.
+     */
+    private Integer domainCode;
+
+    /**
+     * Definition of the extended element.
+     */
+    private InternationalString definition;
+
+    /**
+     * Obligation of the extended element.
+     */
+    private Obligation obligation;
+
+    /**
+     * Condition under which the extended element is mandatory.
+     * Non-null value only if the {@linkplain #getObligation() obligation}
+     * is {@linkplain Obligation#CONDITIONAL conditional}.
+     */
+    private InternationalString condition;
+
+    /**
+     * Code which identifies the kind of value provided in the extended element.
+     */
+    private Datatype dataType;
+
+    /**
+     * Maximum occurrence of the extended element.
+     * Returns {@code null} if it doesn't apply, for example if the
+     * {@linkplain #getDataType data type} is {@linkplain Datatype#ENUMERATION enumeration},
+     * {@linkplain Datatype#CODE_LIST code list} or {@linkplain Datatype#CODE_LIST_ELEMENT
+     * code list element}.
+     */
+    private Integer maximumOccurrence;
+
+    /**
+     * Valid values that can be assigned to the extended element.
+     * Returns {@code null} if it doesn't apply, for example if the
+     * {@linkplain #getDataType data type} is {@linkplain Datatype#ENUMERATION enumeration},
+     * {@linkplain Datatype#CODE_LIST code list} or {@linkplain Datatype#CODE_LIST_ELEMENT
+     * code list element}.
+     */
+    private InternationalString domainValue;
+
+    /**
+     * Name of the metadata entity(s) under which this extended metadata element may appear.
+     * The name(s) may be standard metadata element(s) or other extended metadata element(s).
+     */
+    private Collection<String> parentEntity;
+
+    /**
+     * Specifies how the extended element relates to other existing elements and entities.
+     */
+    private InternationalString rule;
+
+    /**
+     * Reason for creating the extended element.
+     */
+    private Collection<InternationalString> rationales;
+
+    /**
+     * Name of the person or organization creating the extended element.
+     */
+    private Collection<ResponsibleParty> sources;
+
+    /**
+     * Construct an initially empty extended element information.
+     */
+    public DefaultExtendedElementInformation() {
+    }
+
+    /**
+     * Create an extended element information initialized to the given values.
+     *
+     * @param name          The name of the extended metadata element.
+     * @param definition    The definition of the extended element.
+     * @param condition     The condition under which the extended element is mandatory.
+     * @param dataType      The code which identifies the kind of value provided in the extended element.
+     * @param parentEntity  The name of the metadata entity(s) under which this extended metadata element may appear.
+     * @param rule          How the extended element relates to other existing elements and entities.
+     * @param source        The name of the person or organization creating the extended element.
+     */
+    public DefaultExtendedElementInformation(final String       name,
+                                             final CharSequence definition,
+                                             final CharSequence condition,
+                                             final Datatype     dataType,
+                                             final String       parentEntity,
+                                             final CharSequence rule,
+                                             final ResponsibleParty source)
+    {
+        this.name         = name;
+        this.definition   = Types.toInternationalString(definition);
+        this.condition    = Types.toInternationalString(condition);
+        this.dataType     = dataType;
+        this.parentEntity = singleton(String.class, parentEntity);
+        this.rule         = Types.toInternationalString(rule);
+        this.sources      = singleton(ResponsibleParty.class, source);
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultExtendedElementInformation castOrCopy(final ExtendedElementInformation object) {
+        if (object == null || object instanceof DefaultExtendedElementInformation) {
+            return (DefaultExtendedElementInformation) object;
+        }
+        final DefaultExtendedElementInformation copy = new DefaultExtendedElementInformation();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Name of the extended metadata element.
+     */
+    @Override
+    @XmlElement(name = "name", required = true)
+    public synchronized String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of the extended metadata element.
+     *
+     * @param newValue The new name.
+     */
+    public synchronized void setName(final String newValue) {
+        checkWritePermission();
+        name = newValue;
+    }
+
+    /**
+     * Short form suitable for use in an implementation method such as XML or SGML.
+     */
+    @Override
+    @XmlElement(name = "shortName")
+    public synchronized String getShortName()  {
+        return shortName;
+    }
+
+    /**
+     * Sets a short form suitable for use in an implementation method such as XML or SGML.
+     *
+     * @param newValue The new short name.
+     */
+    public synchronized void setShortName(final String newValue)  {
+        checkWritePermission();
+        shortName = newValue;
+    }
+
+    /**
+     * Three digit code assigned to the extended element.
+     * Returns a non-null value only if the {@linkplain #getDataType() data type}
+     * is {@linkplain Datatype#CODE_LIST_ELEMENT code list element}.
+     */
+    @Override
+    @XmlElement(name = "domainCode")
+    public synchronized Integer getDomainCode() {
+        return domainCode;
+    }
+
+    /**
+     * Sets a three digit code assigned to the extended element.
+     *
+     * @param newValue The new domain code.
+     */
+    public synchronized void setDomainCode(final Integer newValue) {
+        checkWritePermission();
+        domainCode = newValue;
+    }
+
+    /**
+     * Definition of the extended element.
+     */
+    @Override
+    @XmlElement(name = "definition", required = true)
+    public synchronized InternationalString getDefinition()  {
+        return definition;
+    }
+
+    /**
+     * Sets the definition of the extended element.
+     *
+     * @param newValue The new definition.
+     */
+    public synchronized void setDefinition(final InternationalString newValue)  {
+        checkWritePermission();
+        definition = newValue;
+    }
+
+    /**
+     * Obligation of the extended element.
+     */
+    @Override
+    @XmlElement(name = "obligation")
+    public synchronized Obligation getObligation()  {
+        return obligation;
+    }
+
+    /**
+     * Sets the obligation of the extended element.
+     *
+     * @param newValue The new obligation.
+     */
+    public synchronized void setObligation(final Obligation newValue)  {
+        checkWritePermission();
+        obligation = newValue;
+    }
+
+    /**
+     * Condition under which the extended element is mandatory.
+     * Returns a non-null value only if the {@linkplain #getObligation() obligation}
+     * is {@linkplain Obligation#CONDITIONAL conditional}.
+     */
+    @Override
+    @XmlElement(name = "condition")
+    public synchronized InternationalString getCondition() {
+        return condition;
+    }
+
+    /**
+     * Sets the condition under which the extended element is mandatory.
+     *
+     * @param newValue The new condition.
+     */
+    public synchronized void setCondition(final InternationalString newValue) {
+        checkWritePermission();
+        condition = newValue;
+    }
+
+    /**
+     * Code which identifies the kind of value provided in the extended element.
+     */
+    @Override
+    @XmlElement(name = "dataType", required = true)
+    public synchronized Datatype getDataType() {
+        return dataType;
+    }
+
+    /**
+     * Sets the code which identifies the kind of value provided in the extended element.
+     *
+     * @param newValue The new data type.
+     */
+    public synchronized void setDataType(final Datatype newValue) {
+        checkWritePermission();
+        dataType = newValue;
+    }
+
+    /**
+     * Maximum occurrence of the extended element.
+     * Returns {@code null} if it doesn't apply, for example if the
+     * {@linkplain #getDataType() data type} is {@linkplain Datatype#ENUMERATION enumeration},
+     * {@linkplain Datatype#CODE_LIST code list} or {@linkplain Datatype#CODE_LIST_ELEMENT
+     * code list element}.
+     */
+    @Override
+    @ValueRange(minimum=0)
+    @XmlElement(name = "maximumOccurrence")
+    public synchronized Integer getMaximumOccurrence() {
+        return maximumOccurrence;
+    }
+
+    /**
+     * Sets the maximum occurrence of the extended element.
+     *
+     * @param newValue The new maximum occurrence.
+     */
+    public synchronized void setMaximumOccurrence(final Integer newValue) {
+        checkWritePermission();
+        maximumOccurrence = newValue;
+    }
+
+    /**
+     * Valid values that can be assigned to the extended element.
+     * Returns {@code null} if it doesn't apply, for example if the
+     * {@linkplain #getDataType() data type} is {@linkplain Datatype#ENUMERATION enumeration},
+     * {@linkplain Datatype#CODE_LIST code list} or {@linkplain Datatype#CODE_LIST_ELEMENT
+     * code list element}.
+     */
+    @Override
+    @XmlElement(name = "domainValue")
+    public synchronized InternationalString getDomainValue() {
+        return domainValue;
+    }
+
+    /**
+     * Sets the valid values that can be assigned to the extended element.
+     *
+     * @param newValue The new domain value.
+     */
+    public synchronized void setDomainValue(final InternationalString newValue) {
+        checkWritePermission();
+        domainValue = newValue;
+    }
+
+    /**
+     * Name of the metadata entity(s) under which this extended metadata element may appear.
+     * The name(s) may be standard metadata element(s) or other extended metadata element(s).
+     */
+    @Override
+    @XmlElement(name = "parentEntity", required = true)
+    public synchronized Collection<String> getParentEntity() {
+        return parentEntity = nonNullCollection(parentEntity, String.class);
+    }
+
+    /**
+     * Sets the name of the metadata entity(s) under which this extended metadata element may appear.
+     *
+     * @param newValues The new parent entity.
+     */
+    public synchronized void setParentEntity(final Collection<? extends String> newValues) {
+        parentEntity = copyCollection(newValues, parentEntity, String.class);
+    }
+
+    /**
+     * Specifies how the extended element relates to other existing elements and entities.
+     */
+    @Override
+    @XmlElement(name = "rule", required = true)
+    public synchronized InternationalString getRule() {
+        return rule;
+    }
+
+    /**
+     * Sets how the extended element relates to other existing elements and entities.
+     *
+     * @param newValue The new rule.
+     */
+    public synchronized void setRule(final InternationalString newValue) {
+        checkWritePermission();
+        rule = newValue;
+    }
+
+    /**
+     * Reason for creating the extended element.
+     */
+    @Override
+    @XmlElement(name = "rationale")
+    public synchronized Collection<InternationalString> getRationales() {
+        return rationales = nonNullCollection(rationales, InternationalString.class);
+    }
+
+    /**
+     * Sets the reason for creating the extended element.
+     *
+     * @param newValues The new rationales.
+     */
+    public synchronized void setRationales(final Collection<? extends InternationalString> newValues) {
+        rationales = copyCollection(newValues, rationales, InternationalString.class);
+    }
+
+    /**
+     * Name of the person or organization creating the extended element.
+     */
+    @Override
+    @XmlElement(name = "source", required = true)
+    public synchronized Collection<ResponsibleParty> getSources() {
+        return sources = nonNullCollection(sources, ResponsibleParty.class);
+    }
+
+    /**
+     * Sets the name of the person or organization creating the extended element.
+     *
+     * @param newValues The new sources.
+     */
+    public synchronized void setSources(final Collection<? extends ResponsibleParty> newValues) {
+        sources = copyCollection(newValues, sources, ResponsibleParty.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java?rev=1459823&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.FeatureTypeList;
+
+
+/**
+ * List of names of feature types with the same spatial representation (same as spatial attributes).
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlType(propOrder = {
+    "spatialObject",
+    "spatialSchemaName"
+})
+@XmlRootElement(name = "MD_FeatureTypeList")
+public class DefaultFeatureTypeList extends ISOMetadata implements FeatureTypeList {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = 5417914796207743856L;
+
+    /**
+     * Instance of a type defined in the spatial schema.
+     */
+    private String spatialObject;
+
+    /**
+     * Name of the spatial schema used.
+     */
+    private String spatialSchemaName;
+
+    /**
+     * Construct an initially empty feature type list.
+     */
+    public DefaultFeatureTypeList() {
+    }
+
+    /**
+     * Creates a feature type list initialized to the given values.
+     *
+     * @param spatialObject The instance of a type defined in the spatial schema, or {@code null} if none.
+     * @param spatialSchemaName The name of the spatial schema used, or {@code null} if none.
+     */
+    public DefaultFeatureTypeList(final String spatialObject, final String spatialSchemaName) {
+        this.spatialObject     = spatialObject;
+        this.spatialSchemaName = spatialSchemaName;
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultFeatureTypeList castOrCopy(final FeatureTypeList object) {
+        if (object == null || object instanceof DefaultFeatureTypeList) {
+            return (DefaultFeatureTypeList) object;
+        }
+        final DefaultFeatureTypeList copy = new DefaultFeatureTypeList();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Instance of a type defined in the spatial schema.
+     */
+    @Override
+    @XmlElement(name = "spatialObject", required = true)
+    public synchronized String getSpatialObject() {
+        return spatialObject;
+    }
+
+    /**
+     * Sets the instance of a type defined in the spatial schema.
+     *
+     * @param newValue The new spatial object.
+     */
+    public synchronized void setSpatialObject(final String newValue) {
+        checkWritePermission();
+        spatialObject = newValue;
+    }
+
+    /**
+     * Name of the spatial schema used.
+     */
+    @Override
+    @XmlElement(name = "spatialSchemaName", required = true)
+    public synchronized String getSpatialSchemaName() {
+        return spatialSchemaName;
+    }
+
+    /**
+     * Sets the name of the spatial schema used.
+     *
+     * @param newValue The new spatial schema.
+     */
+    public synchronized void setSpatialSchemaName(final String newValue) {
+        checkWritePermission();
+        spatialSchemaName = newValue;
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultFeatureTypeList.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java?rev=1459823&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -0,0 +1,179 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.Identifier;
+import org.opengis.metadata.citation.Citation;
+
+
+/**
+ * Value uniquely identifying an object within a namespace.
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MD_Identifier_Type", propOrder = {
+    "code",
+    "authority"
+})
+@XmlRootElement(name = "MD_Identifier")
+public class DefaultIdentifier extends ISOMetadata implements Identifier {
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = 7459062382170865919L;
+
+    /**
+     * Alphanumeric value identifying an instance in the namespace.
+     */
+    private String code;
+
+    /**
+     * Identifier of the version of the associated code space or code, as specified
+     * by the code space or code authority. This version is included only when the
+     * {@linkplain #getCode code} uses versions. When appropriate, the edition is
+     * identified by the effective date, coded using ISO 8601 date format.
+     */
+    private String version;
+
+    /**
+     * Organization or party responsible for definition and maintenance of the
+     * {@linkplain #getCode code}.
+     */
+    private Citation authority;
+
+    /**
+     * Construct an initially empty identifier.
+     */
+    public DefaultIdentifier() {
+    }
+
+    /**
+     * Creates an identifier initialized to the given code.
+     *
+     * @param code The alphanumeric value identifying an instance in the namespace,
+     *             or {@code null} if none.
+     */
+    public DefaultIdentifier(final String code) {
+        this.code = code;
+    }
+
+    /**
+     * Creates an identifier initialized to the given authority and code.
+     *
+     * @param code      The alphanumeric value identifying an instance in the namespace,
+     *                  or {@code null} if none.
+     * @param authority The organization or party responsible for definition and maintenance
+     *                  of the code, or {@code null} if none.
+     */
+    public DefaultIdentifier(final String code, final Citation authority) {
+        this.code = code;
+        this.authority = authority;
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultIdentifier castOrCopy(final Identifier object) {
+        if (object == null || object instanceof DefaultIdentifier) {
+            return (DefaultIdentifier) object;
+        }
+        final DefaultIdentifier copy = new DefaultIdentifier();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Alphanumeric value identifying an instance in the namespace.
+     */
+    @Override
+    @XmlElement(name = "code", required = true)
+    public synchronized String getCode() {
+        return code;
+    }
+
+    /**
+     * Sets the alphanumeric value identifying an instance in the namespace.
+     *
+     * @param newValue The new code, or {@code null}.
+     */
+    public synchronized void setCode(final String newValue) {
+        checkWritePermission();
+        code = newValue;
+    }
+
+    /**
+     * Identifier of the version of the associated code, as specified by the code space or
+     * code authority. This version is included only when the {@linkplain #getCode() code}
+     * uses versions. When appropriate, the edition is identified by the effective date,
+     * coded using ISO 8601 date format.
+     *
+     * @return The version, or {@code null} if not available.
+     */
+    public synchronized String getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets an identifier of the version of the associated code.
+     *
+     * @param newValue The new version.
+     */
+    public synchronized void setVersion(final String newValue) {
+        checkWritePermission();
+        version = newValue;
+    }
+
+    /**
+     * Organization or party responsible for definition and maintenance of the
+     * {@linkplain #getCode() code}.
+     *
+     * @return The authority, or {@code null} if not available.
+     */
+    @Override
+    @XmlElement(name = "authority")
+    public synchronized Citation getAuthority() {
+        return authority;
+    }
+
+    /**
+     * Sets the organization or party responsible for definition and maintenance of the
+     * {@linkplain #getCode code}.
+     *
+     * @param newValue The new authority.
+     */
+    public synchronized void setAuthority(final Citation newValue) {
+        checkWritePermission();
+        authority = newValue;
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultIdentifier.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java?rev=1459823&r1=1459822&r2=1459823&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -16,11 +16,17 @@
  */
 package org.apache.sis.metadata.iso;
 
-import java.util.Collection;
 import java.util.Date;
 import java.util.Locale;
-import org.opengis.metadata.ApplicationSchemaInformation;
+import java.util.Collection;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.metadata.Metadata;
+import org.opengis.metadata.ApplicationSchemaInformation;
 import org.opengis.metadata.MetadataExtensionInformation;
 import org.opengis.metadata.PortrayalCatalogueReference;
 import org.opengis.metadata.acquisition.AcquisitionInformation;
@@ -35,174 +41,705 @@ import org.opengis.metadata.maintenance.
 import org.opengis.metadata.quality.DataQuality;
 import org.opengis.metadata.spatial.SpatialRepresentation;
 import org.opengis.referencing.ReferenceSystem;
-
+import org.apache.sis.internal.jaxb.MarshalContext;
+//import org.apache.sis.internal.jaxb.gmd.PT_Locale; // TODO
+import org.apache.sis.xml.Namespaces;
+
+
+/**
+ * Root entity which defines metadata about a resource or resources.
+ *
+ * {@section Localization}
+ * When this object is marshalled as an ISO 19139 compliant XML document, the value
+ * given to the {@link #setLanguage(Locale)} method will be used for the localization
+ * of {@link org.opengis.util.InternationalString} and {@link org.opengis.util.CodeList}
+ * instances of in this {@code DefaultMetadata} object and every children, as required by
+ * INSPIRE rules. If no language were specified, then the default locale will be the one
+ * defined in the {@link org.apache.sis.xml.XML#LOCALE} marshaller property, if any.
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MD_Metadata_Type", propOrder = {
+    "fileIdentifier",
+    "language",
+    "characterSet",
+    "parentIdentifier",
+    "hierarchyLevels",
+    "hierarchyLevelNames",
+    "contacts",
+    "dateStamp",
+    "metadataStandardName",
+    "metadataStandardVersion",
+    "dataSetUri",
+    "locales",
+    "spatialRepresentationInfo",
+    "referenceSystemInfo",
+    "metadataExtensionInfo",
+    "identificationInfo",
+    "contentInfo",
+    "distributionInfo",
+    "dataQualityInfo",
+    "portrayalCatalogueInfo",
+    "metadataConstraints",
+    "applicationSchemaInfo",
+    "metadataMaintenance",
+    "acquisitionInformation"
+})
+@XmlRootElement(name = "MD_Metadata")
+@XmlSeeAlso(org.apache.sis.internal.jaxb.gmi.MI_Metadata.class)
 public class DefaultMetadata extends ISOMetadata implements Metadata {
-
+    /**
+     * Serial number for inter-operability with different versions.
+     */
+    private static final long serialVersionUID = 7254025230235329493L;
+
+    /**
+     * Unique identifier for this metadata file, or {@code null} if none.
+     */
     private String fileIdentifier;
 
+    /**
+     * Language used for documenting metadata.
+     */
     private Locale language;
 
+    /**
+     * Information about an alternatively used localized character
+     * strings for linguistic extensions.
+     */
     private Collection<Locale> locales;
 
+    /**
+     * Full name of the character coding standard used for the metadata set.
+     */
     private CharacterSet characterSet;
 
+    /**
+     * File identifier of the metadata to which this metadata is a subset (child).
+     */
     private String parentIdentifier;
 
+    /**
+     * Scope to which the metadata applies.
+     */
     private Collection<ScopeCode> hierarchyLevels;
 
+    /**
+     * Name of the hierarchy levels for which the metadata is provided.
+     */
     private Collection<String> hierarchyLevelNames;
 
+    /**
+     * Parties responsible for the metadata information.
+     */
     private Collection<ResponsibleParty> contacts;
 
-    private long dateStamp = Long.MIN_VALUE;
-
+    /**
+     * Date that the metadata was created, in milliseconds elapsed since January 1st, 1970.
+     * If not defined, then then value is {@link Long#MIN_VALUE}.
+     */
+    private long dateStamp;
+
+    /**
+     * Name of the metadata standard (including profile name) used.
+     */
     private String metadataStandardName;
 
+    /**
+     * Version (profile) of the metadata standard used.
+     */
     private String metadataStandardVersion;
 
+    /**
+     * Uniformed Resource Identifier (URI) of the dataset to which the metadata applies.
+     */
     private String dataSetUri;
 
+    /**
+     * Digital representation of spatial information in the dataset.
+     */
     private Collection<SpatialRepresentation> spatialRepresentationInfo;
 
+    /**
+     * Description of the spatial and temporal reference systems used in the dataset.
+     */
     private Collection<ReferenceSystem> referenceSystemInfo;
 
+    /**
+     * Information describing metadata extensions.
+     */
     private Collection<MetadataExtensionInformation> metadataExtensionInfo;
 
+    /**
+     * Basic information about the resource(s) to which the metadata applies.
+     */
     private Collection<Identification> identificationInfo;
 
+    /**
+     * Provides information about the feature catalogue and describes the coverage and
+     * image data characteristics.
+     */
     private Collection<ContentInformation> contentInfo;
 
+    /**
+     * Provides information about the distributor of and options for obtaining the resource(s).
+     */
     private Distribution distributionInfo;
 
+    /**
+     * Provides overall assessment of quality of a resource(s).
+     */
     private Collection<DataQuality> dataQualityInfo;
 
+    /**
+     * Provides information about the catalogue of rules defined for the portrayal of a resource(s).
+     */
     private Collection<PortrayalCatalogueReference> portrayalCatalogueInfo;
 
+    /**
+     * Provides restrictions on the access and use of data.
+     */
     private Collection<Constraints> metadataConstraints;
 
+    /**
+     * Provides information about the conceptual schema of a dataset.
+     */
     private Collection<ApplicationSchemaInformation> applicationSchemaInfo;
 
+    /**
+     * Provides information about the frequency of metadata updates, and the scope of those updates.
+     */
     private MaintenanceInformation metadataMaintenance;
 
+    /**
+     * Provides information about the acquisition of the data.
+     */
     private Collection<AcquisitionInformation> acquisitionInformation;
 
+    /**
+     * Creates an initially empty metadata.
+     */
+    public DefaultMetadata() {
+        dateStamp = Long.MIN_VALUE;
+    }
+
+    /**
+     * Creates a meta data initialized to the specified values.
+     *
+     * @param contact   Party responsible for the metadata information.
+     * @param dateStamp Date that the metadata was created.
+     * @param identificationInfo Basic information about the resource
+     *        to which the metadata applies.
+     */
+    public DefaultMetadata(final ResponsibleParty contact,
+                           final Date             dateStamp,
+                           final Identification   identificationInfo)
+    {
+        this.contacts  = singleton(ResponsibleParty.class, contact);
+        this.dateStamp = (dateStamp != null) ? dateStamp.getTime() : Long.MIN_VALUE;
+        this.identificationInfo = singleton(Identification.class, identificationInfo);
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultMetadata castOrCopy(final Metadata object) {
+        if (object == null || object instanceof DefaultMetadata) {
+            return (DefaultMetadata) object;
+        }
+        final DefaultMetadata copy = new DefaultMetadata();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Returns the unique identifier for this metadata file, or {@code null} if none.
+     */
     @Override
+    @XmlElement(name = "fileIdentifier")
     public synchronized String getFileIdentifier() {
         return fileIdentifier;
     }
 
+    /**
+     * Sets the unique identifier for this metadata file, or {@code null} if none.
+     *
+     * @param newValue The new identifier.
+     */
+    public synchronized void setFileIdentifier(final String newValue) {
+        checkWritePermission();
+        fileIdentifier = newValue;
+    }
+
+    /**
+     * Returns the language used for documenting metadata. This {@code DefaultMetadata} object and
+     * its children will use that locale for marshalling {@link org.opengis.util.InternationalString}
+     * and {@link org.opengis.util.CodeList} instances in ISO 19139 compliant XML documents.
+     */
     @Override
+    @XmlElement(name = "language")
     public synchronized Locale getLanguage() {
         return language;
     }
 
+    /**
+     * Sets the language used for documenting metadata. This {@code DefaultMetadata} object and its
+     * children will use the given locale for marshalling {@link org.opengis.util.InternationalString}
+     * and {@link org.opengis.util.CodeList} instances in ISO 19139 compliant XML documents.
+     *
+     * @param newValue The new language.
+     *
+     * @see org.apache.sis.xml.XML#LOCALE
+     */
+    public synchronized void setLanguage(final Locale newValue) {
+        checkWritePermission();
+        language = newValue;
+        // The "magik" applying this language to every children
+        // is performed by the 'beforeMarshal(Marshaller)' method.
+    }
+
+    /**
+     * Provides information about an alternatively used localized character
+     * string for a linguistic extension.
+     */
     @Override
+    @XmlElement(name = "locale")
+//    @XmlJavaTypeAdapter(PT_Locale.class) // TODO
     public synchronized Collection<Locale> getLocales() {
-        return locales;
+        return locales = nonNullCollection(locales, Locale.class);
+    }
+
+    /**
+     * Sets information about an alternatively used localized character
+     * string for a linguistic extension.
+     *
+     * @param newValues The new locales.
+     */
+    public synchronized void setLocales(final Collection<? extends Locale> newValues) {
+        locales = copyCollection(newValues, locales, Locale.class);
     }
 
+    /**
+     * Returns the full name of the character coding standard used for the metadata set.
+     */
     @Override
-    public synchronized CharacterSet getCharacterSet() {
+    @XmlElement(name = "characterSet")
+    public synchronized CharacterSet getCharacterSet()  {
         return characterSet;
     }
 
+    /**
+     * Sets the full name of the character coding standard used for the metadata set.
+     *
+     * @param newValue The new character set.
+     */
+    public synchronized void setCharacterSet(final CharacterSet newValue) {
+        checkWritePermission();
+        characterSet = newValue;
+    }
+
+    /**
+     * Returns the file identifier of the metadata to which this metadata is a subset (child).
+     */
     @Override
+    @XmlElement(name = "parentIdentifier")
     public synchronized String getParentIdentifier() {
         return parentIdentifier;
     }
 
+    /**
+     * Sets the file identifier of the metadata to which this metadata is a subset (child).
+     *
+     * @param newValue The new parent identifier.
+     */
+    public synchronized void setParentIdentifier(final String newValue) {
+        checkWritePermission();
+        parentIdentifier = newValue;
+    }
+
+    /**
+     * Returns the scope to which the metadata applies.
+     */
     @Override
+    @XmlElement(name = "hierarchyLevel")
     public synchronized Collection<ScopeCode> getHierarchyLevels() {
-        return hierarchyLevels;
+        return hierarchyLevels = nonNullCollection(hierarchyLevels, ScopeCode.class);
+    }
+
+    /**
+     * Sets the scope to which the metadata applies.
+     *
+     * @param newValues The new hierarchy levels.
+     */
+    public synchronized void setHierarchyLevels(final Collection<? extends ScopeCode> newValues) {
+        hierarchyLevels = copyCollection(newValues, hierarchyLevels, ScopeCode.class);
     }
 
+    /**
+     * Returns the name of the hierarchy levels for which the metadata is provided.
+     */
     @Override
+    @XmlElement(name = "hierarchyLevelName")
     public synchronized Collection<String> getHierarchyLevelNames() {
-        return hierarchyLevelNames;
+        return hierarchyLevelNames = nonNullCollection(hierarchyLevelNames, String.class);
     }
 
+    /**
+     * Sets the name of the hierarchy levels for which the metadata is provided.
+     *
+     * @param newValues The new hierarchy level names.
+     */
+    public synchronized void setHierarchyLevelNames(final Collection<? extends String> newValues) {
+        hierarchyLevelNames = copyCollection(newValues, hierarchyLevelNames, String.class);
+    }
+
+    /**
+     * Returns the parties responsible for the metadata information.
+     */
     @Override
+    @XmlElement(name = "contact", required = true)
     public synchronized Collection<ResponsibleParty> getContacts() {
-        return contacts;
+        return contacts = nonNullCollection(contacts, ResponsibleParty.class);
+    }
+
+    /**
+     * Sets the parties responsible for the metadata information.
+     *
+     * @param newValues The new contacts.
+     */
+    public synchronized void setContacts(final Collection<? extends ResponsibleParty> newValues) {
+        checkWritePermission();
+        contacts = copyCollection(newValues, contacts, ResponsibleParty.class);
     }
 
+    /**
+     * Returns the date that the metadata was created.
+     */
     @Override
+    @XmlElement(name = "dateStamp", required = true)
     public synchronized Date getDateStamp() {
-        return (dateStamp != Long.MIN_VALUE) ? new Date(dateStamp) : null;
+        return (dateStamp != Long.MIN_VALUE) ? new Date(dateStamp) : (Date)null;
+    }
+
+    /**
+     * Sets the date that the metadata was created.
+     *
+     * @param newValue The new date stamp.
+     */
+    public synchronized void setDateStamp(final Date newValue) {
+        checkWritePermission();
+        dateStamp = (newValue != null) ? newValue.getTime() : Long.MIN_VALUE;
     }
 
+    /**
+     * Returns the name of the metadata standard (including profile name) used.
+     */
     @Override
+    @XmlElement(name = "metadataStandardName")
     public synchronized String getMetadataStandardName() {
         return metadataStandardName;
     }
 
+    /**
+     * Name of the metadata standard (including profile name) used.
+     *
+     * @param newValue The new metadata standard name.
+     */
+    public synchronized void setMetadataStandardName(final String newValue) {
+        checkWritePermission();
+        metadataStandardName = newValue;
+    }
+
+    /**
+     * Returns the version (profile) of the metadata standard used.
+     */
     @Override
+    @XmlElement(name = "metadataStandardVersion")
     public synchronized String getMetadataStandardVersion() {
         return metadataStandardVersion;
     }
 
+    /**
+     * Sets the version (profile) of the metadata standard used.
+     *
+     * @param newValue The new metadata standard version.
+     */
+    public synchronized void setMetadataStandardVersion(final String newValue) {
+        checkWritePermission();
+        metadataStandardVersion = newValue;
+    }
+
+    /**
+     * Provides the URI of the dataset to which the metadata applies.
+     */
     @Override
+    @XmlElement(name = "dataSetURI")
     public synchronized String getDataSetUri() {
         return dataSetUri;
     }
 
+    /**
+     * Sets the URI of the dataset to which the metadata applies.
+     *
+     * @param newValue The new data set URI.
+     */
+    public synchronized void setDataSetUri(final String newValue) {
+        checkWritePermission();
+        dataSetUri = newValue;
+    }
+
+    /**
+     * Returns the digital representation of spatial information in the dataset.
+     */
     @Override
+    @XmlElement(name = "spatialRepresentationInfo")
     public synchronized Collection<SpatialRepresentation> getSpatialRepresentationInfo() {
-        return spatialRepresentationInfo;
+        return spatialRepresentationInfo = nonNullCollection(spatialRepresentationInfo, SpatialRepresentation.class);
     }
 
+    /**
+     * Sets the digital representation of spatial information in the dataset.
+     *
+     * @param newValues The new spatial representation info.
+     */
+    public synchronized void setSpatialRepresentationInfo(final Collection<? extends SpatialRepresentation> newValues) {
+        spatialRepresentationInfo = copyCollection(newValues, spatialRepresentationInfo, SpatialRepresentation.class);
+    }
+
+    /**
+     * Returns the description of the spatial and temporal reference systems used in the dataset.
+     */
     @Override
+    @XmlElement(name = "referenceSystemInfo")
     public synchronized Collection<ReferenceSystem> getReferenceSystemInfo() {
-        return referenceSystemInfo;
+        return referenceSystemInfo = nonNullCollection(referenceSystemInfo, ReferenceSystem.class);
+    }
+
+    /**
+     * Sets the description of the spatial and temporal reference systems used in the dataset.
+     *
+     * @param newValues The new reference system info.
+     */
+    public synchronized void setReferenceSystemInfo(final Collection<? extends ReferenceSystem> newValues) {
+        referenceSystemInfo = copyCollection(newValues, referenceSystemInfo, ReferenceSystem.class);
     }
 
+    /**
+     * Returns information describing metadata extensions.
+     */
     @Override
+    @XmlElement(name = "metadataExtensionInfo")
     public synchronized Collection<MetadataExtensionInformation> getMetadataExtensionInfo() {
-        return metadataExtensionInfo;
+        return metadataExtensionInfo = nonNullCollection(metadataExtensionInfo, MetadataExtensionInformation.class);
     }
 
+    /**
+     * Sets information describing metadata extensions.
+     *
+     * @param newValues The new metadata extension info.
+     */
+    public synchronized void setMetadataExtensionInfo(final Collection<? extends MetadataExtensionInformation> newValues) {
+        metadataExtensionInfo = copyCollection(newValues, metadataExtensionInfo, MetadataExtensionInformation.class);
+    }
+
+    /**
+     * Returns basic information about the resource(s) to which the metadata applies.
+     */
     @Override
+    @XmlElement(name = "identificationInfo", required = true)
     public synchronized Collection<Identification> getIdentificationInfo() {
-        return identificationInfo;
+        return identificationInfo = nonNullCollection(identificationInfo, Identification.class);
+    }
+
+    /**
+     * Sets basic information about the resource(s) to which the metadata applies.
+     *
+     * @param newValues The new identification info.
+     */
+    public synchronized void setIdentificationInfo(final Collection<? extends Identification> newValues) {
+        identificationInfo = copyCollection(newValues, identificationInfo, Identification.class);
     }
 
+    /**
+     * Provides information about the feature catalogue and describes the coverage and
+     * image data characteristics.
+     */
     @Override
+    @XmlElement(name = "contentInfo")
     public synchronized Collection<ContentInformation> getContentInfo() {
-        return contentInfo;
+        return contentInfo = nonNullCollection(contentInfo, ContentInformation.class);
+    }
+
+    /**
+     * Sets information about the feature catalogue and describes the coverage and
+     * image data characteristics.
+     *
+     * @param newValues The new content info.
+     */
+    public synchronized void setContentInfo(final Collection<? extends ContentInformation> newValues) {
+        contentInfo = copyCollection(newValues, contentInfo, ContentInformation.class);
     }
 
+    /**
+     * Provides information about the distributor of and options for obtaining the resource(s).
+     */
     @Override
+    @XmlElement(name = "distributionInfo")
     public synchronized Distribution getDistributionInfo() {
         return distributionInfo;
     }
 
+    /**
+     * Provides information about the distributor of and options for obtaining the resource(s).
+     *
+     * @param newValue The new distribution info.
+     */
+    public synchronized void setDistributionInfo(final Distribution newValue) {
+        checkWritePermission();
+        distributionInfo = newValue;
+    }
+
+    /**
+     * Provides overall assessment of quality of a resource(s).
+     */
     @Override
+    @XmlElement(name = "dataQualityInfo")
     public synchronized Collection<DataQuality> getDataQualityInfo() {
-        return dataQualityInfo;
+        return dataQualityInfo = nonNullCollection(dataQualityInfo, DataQuality.class);
+    }
+
+    /**
+     * Sets overall assessment of quality of a resource(s).
+     *
+     * @param newValues The new data quality info.
+     */
+    public synchronized void setDataQualityInfo(final Collection<? extends DataQuality> newValues) {
+        dataQualityInfo = copyCollection(newValues, dataQualityInfo, DataQuality.class);
     }
 
+    /**
+     * Provides information about the catalogue of rules defined for the portrayal of a
+     * resource(s).
+     */
     @Override
+    @XmlElement(name = "portrayalCatalogueInfo")
     public synchronized Collection<PortrayalCatalogueReference> getPortrayalCatalogueInfo() {
-        return portrayalCatalogueInfo;
+        return portrayalCatalogueInfo = nonNullCollection(portrayalCatalogueInfo, PortrayalCatalogueReference.class);
+    }
+
+    /**
+     * Sets information about the catalogue of rules defined for the portrayal of a resource(s).
+     *
+     * @param newValues The new portrayal catalog info.
+     */
+    public synchronized void setPortrayalCatalogueInfo(
+            final Collection<? extends PortrayalCatalogueReference> newValues)
+    {
+        portrayalCatalogueInfo = copyCollection(newValues, portrayalCatalogueInfo, PortrayalCatalogueReference.class);
     }
 
+    /**
+     * Provides restrictions on the access and use of data.
+     */
     @Override
+    @XmlElement(name = "metadataConstraints")
     public synchronized Collection<Constraints> getMetadataConstraints() {
-        return metadataConstraints;
+        return metadataConstraints = nonNullCollection(metadataConstraints, Constraints.class);
     }
 
+    /**
+     * Sets restrictions on the access and use of data.
+     *
+     * @param newValues The new metadata constraints.
+     */
+    public synchronized void setMetadataConstraints(final Collection<? extends Constraints> newValues) {
+        metadataConstraints = copyCollection(newValues, metadataConstraints, Constraints.class);
+    }
+
+    /**
+     * Provides information about the conceptual schema of a dataset.
+     */
     @Override
+    @XmlElement(name = "applicationSchemaInfo")
     public synchronized Collection<ApplicationSchemaInformation> getApplicationSchemaInfo() {
-        return applicationSchemaInfo;
+        return applicationSchemaInfo = nonNullCollection(applicationSchemaInfo, ApplicationSchemaInformation.class);
+    }
+
+    /**
+     * Provides information about the conceptual schema of a dataset.
+     *
+     * @param newValues The new application schema info.
+     */
+    public synchronized void setApplicationSchemaInfo(final Collection<? extends ApplicationSchemaInformation> newValues) {
+        applicationSchemaInfo = copyCollection(newValues, applicationSchemaInfo, ApplicationSchemaInformation.class);
     }
 
+    /**
+     * Provides information about the frequency of metadata updates, and the scope of those updates.
+     */
     @Override
+    @XmlElement(name = "metadataMaintenance")
     public synchronized MaintenanceInformation getMetadataMaintenance() {
         return metadataMaintenance;
     }
 
+    /**
+     * Sets information about the frequency of metadata updates, and the scope of those updates.
+     *
+     * @param newValue The new metadata maintenance.
+     */
+    public synchronized void setMetadataMaintenance(final MaintenanceInformation newValue) {
+        checkWritePermission();
+        metadataMaintenance = newValue;
+    }
+
+    /**
+     * Provides information about the acquisition of the data.
+     *
+     * @since 3.03
+     */
     @Override
+    @XmlElement(name = "acquisitionInformation", namespace = Namespaces.GMI)
     public synchronized Collection<AcquisitionInformation> getAcquisitionInformation() {
-        return acquisitionInformation;
+        return acquisitionInformation = nonNullCollection(acquisitionInformation, AcquisitionInformation.class);
+    }
+
+    /**
+     * Sets information about the acquisition of the data.
+     *
+     * @param newValues The new acquisition information.
+     */
+    public synchronized void setAcquisitionInformation(final Collection<? extends AcquisitionInformation> newValues) {
+        acquisitionInformation = copyCollection(newValues, acquisitionInformation, AcquisitionInformation.class);
+    }
+
+    /**
+     * Invoked by JAXB {@link javax.xml.bind.Marshaller} before this object is marshalled to XML.
+     * This method sets the locale to be used for XML marshalling to the metadata language.
+     */
+    private void beforeMarshal(final Marshaller marshaller) {
+        MarshalContext.push(language);
+    }
+
+    /**
+     * Invoked by JAXB {@link javax.xml.bind.Marshaller} after this object has been marshalled to
+     * XML. This method restores the locale to be used for XML marshalling to its previous value.
+     */
+    private void afterMarshal(final Marshaller marshaller) {
+        MarshalContext.pull();
     }
 }

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java?rev=1459823&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.citation.OnlineResource;
+import org.opengis.metadata.ExtendedElementInformation;
+import org.opengis.metadata.MetadataExtensionInformation;
+
+
+/**
+ * Information describing metadata extensions.
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MD_MetadataExtensionInformation_Type", propOrder = {
+    "extensionOnLineResource",
+    "extendedElementInformation"
+})
+@XmlRootElement(name = "MD_MetadataExtensionInformation")
+public class DefaultMetadataExtensionInformation extends ISOMetadata
+        implements MetadataExtensionInformation
+{
+    /**
+     * Serial number for compatibility with different versions.
+     */
+    private static final long serialVersionUID = 573866936088674519L;
+
+    /**
+     * Information about on-line sources containing the community profile name and
+     * the extended metadata elements. Information for all new metadata elements.
+     */
+    private OnlineResource extensionOnLineResource;
+
+    /**
+     * Provides information about a new metadata element, not found in ISO 19115, which is
+     * required to describe geographic data.
+     */
+    private Collection<ExtendedElementInformation> extendedElementInformation;
+
+    /**
+     * Construct an initially empty metadata extension information.
+     */
+    public DefaultMetadataExtensionInformation() {
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultMetadataExtensionInformation castOrCopy(final MetadataExtensionInformation object) {
+        if (object == null || object instanceof DefaultMetadataExtensionInformation) {
+            return (DefaultMetadataExtensionInformation) object;
+        }
+        final DefaultMetadataExtensionInformation copy = new DefaultMetadataExtensionInformation();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Information about on-line sources containing the community profile name and
+     * the extended metadata elements. Information for all new metadata elements.
+     */
+    @Override
+    @XmlElement(name = "extensionOnLineResource")
+    public synchronized OnlineResource getExtensionOnLineResource() {
+        return extensionOnLineResource;
+    }
+
+    /**
+     * Sets information about on-line sources.
+     *
+     * @param newValue The new extension online resource.
+     */
+    public synchronized void setExtensionOnLineResource(final OnlineResource newValue) {
+        checkWritePermission();
+        this.extensionOnLineResource = newValue;
+    }
+
+    /**
+     * Provides information about a new metadata element, not found in ISO 19115, which is
+     * required to describe geographic data.
+     */
+    @Override
+    @XmlElement(name = "extendedElementInformation")
+    public synchronized Collection<ExtendedElementInformation> getExtendedElementInformation() {
+        return extendedElementInformation = nonNullCollection(extendedElementInformation, ExtendedElementInformation.class);
+    }
+
+    /**
+     * Sets information about a new metadata element.
+     *
+     * @param newValues The new extended element information.
+     */
+    public synchronized void setExtendedElementInformation(final Collection<? extends ExtendedElementInformation> newValues) {
+        extendedElementInformation = copyCollection(newValues, extendedElementInformation, ExtendedElementInformation.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java?rev=1459823&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sis.metadata.iso;
+
+import java.util.Collection;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import org.opengis.metadata.citation.Citation;
+import org.opengis.metadata.PortrayalCatalogueReference;
+
+
+/**
+ * Information identifying the portrayal catalogue used.
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlType(name = "MD_PortrayalCatalogueReference_Type")
+@XmlRootElement(name = "MD_PortrayalCatalogueReference")
+public class DefaultPortrayalCatalogueReference extends ISOMetadata
+        implements PortrayalCatalogueReference
+{
+    /**
+     * Serial number for compatibility with different versions.
+     */
+    private static final long serialVersionUID = -3095277682987563157L;
+
+    /**
+     * Bibliographic reference to the portrayal catalogue cited.
+     */
+    private Collection<Citation> portrayalCatalogueCitations;
+
+    /**
+     * Construct an initially empty portrayal catalogue reference.
+     */
+    public DefaultPortrayalCatalogueReference() {
+    }
+
+    /**
+     * Creates a portrayal catalogue reference initialized to the given reference.
+     *
+     * @param portrayalCatalogueCitation The bibliographic reference, or {@code null} if none.
+     */
+    public DefaultPortrayalCatalogueReference(final Citation portrayalCatalogueCitation) {
+        portrayalCatalogueCitations = singleton(Citation.class, portrayalCatalogueCitation);
+    }
+
+    /**
+     * Returns a SIS metadata implementation with the same values than the given arbitrary
+     * implementation. If the given object is {@code null}, then this method returns {@code null}.
+     * Otherwise if the given object is already a SIS implementation, then the given object is
+     * returned unchanged. Otherwise a new SIS implementation is created and initialized to the
+     * property values of the given object, using a <cite>shallow</cite> copy operation
+     * (i.e. properties are not cloned).
+     *
+     * @param  object The object to get as a SIS implementation, or {@code null} if none.
+     * @return A SIS implementation containing the values of the given object (may be the
+     *         given object itself), or {@code null} if the argument was null.
+     */
+    public static DefaultPortrayalCatalogueReference castOrCopy(final PortrayalCatalogueReference object) {
+        if (object == null || object instanceof DefaultPortrayalCatalogueReference) {
+            return (DefaultPortrayalCatalogueReference) object;
+        }
+        final DefaultPortrayalCatalogueReference copy = new DefaultPortrayalCatalogueReference();
+        copy.shallowCopy(object);
+        return copy;
+    }
+
+    /**
+     * Bibliographic reference to the portrayal catalogue cited.
+     */
+    @Override
+    @XmlElement(name = "portrayalCatalogueCitation", required = true)
+    public synchronized Collection<Citation> getPortrayalCatalogueCitations() {
+        return portrayalCatalogueCitations = nonNullCollection(portrayalCatalogueCitations, Citation.class);
+    }
+
+    /**
+     * Sets bibliographic reference to the portrayal catalogue cited.
+     *
+     * @param newValues The new portrayal catalogue citations.
+     */
+    public synchronized void setPortrayalCatalogueCitations(Collection<? extends Citation> newValues) {
+        portrayalCatalogueCitations = copyCollection(newValues, portrayalCatalogueCitations, Citation.class);
+    }
+}

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java?rev=1459823&r1=1459822&r2=1459823&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/package-info.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -24,6 +24,13 @@
  * For a global overview of metadata in SIS, see the
  * <a href="{@docRoot}/../sis-metadata/index.html">Metadata page on the project web site</a>.
  *
+ * {@section Unified identifiers view}
+ * Apache SIS provides a unified view of all metadata identifiers. This view includes the citation
+ * {@linkplain org.apache.sis.metadata.iso.citation.DefaultCitation#getISBN() ISBN} and
+ * {@linkplain org.apache.sis.metadata.iso.citation.DefaultCitation#getISSN() ISSN} codes,
+ * except at XML marshalling time (for ISO 19139 compliance).
+ * See {@link org.apache.sis.xml.IdentifierMap} for more information.
+ *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Touraïvane (IRD)
  * @author  Cédric Briançon (Geomatys)

Added: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java?rev=1459823&view=auto
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java (added)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java [UTF-8] Fri Mar 22 14:59:50 2013
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * {@linkplain org.apache.sis.metadata.iso.DefaultMetadata Metadata} implementation.
+ * An explanation for this package is provided in the {@linkplain org.opengis.metadata OpenGIS® javadoc}.
+ * The remaining discussion on this page is specific to the SIS implementation.
+ *
+ * {@section Overview}
+ * For a global overview of metadata in SIS, see the
+ * <a href="{@docRoot}/../sis-metadata/index.html">Metadata page on the project web site</a>.
+ *
+ * {@section Localization}
+ * When a metadata object is marshalled as an ISO 19139 compliant XML document, the marshaller
+ * {@link org.apache.sis.xml.XML#LOCALE} property will be used for the localization of every
+ * {@link org.opengis.util.InternationalString} and {@link org.opengis.util.CodeList} instances,
+ * <strong>except</strong> if the object to be marshalled is an instance of
+ * {@link org.apache.sis.metadata.iso.DefaultMetadata}, in which case the value given to the
+ * {@link org.apache.sis.metadata.iso.DefaultMetadata#setLanguage setLanguage(Locale)} method
+ * will have precedence. The later behavior is compliant with INSPIRE rules.
+ *
+ * @author  Martin Desruisseaux (IRD, Geomatys)
+ * @author  Touraïvane (IRD)
+ * @author  Cédric Briançon (Geomatys)
+ * @since   0.3 (derived from geotk-2.1)
+ * @version 0.3
+ * @module
+ */
+@XmlSchema(elementFormDefault = XmlNsForm.QUALIFIED, namespace = Namespaces.GMD, xmlns = {
+    @XmlNs(prefix = "gmi", namespaceURI = Namespaces.GMI),
+    @XmlNs(prefix = "gmd", namespaceURI = Namespaces.GMD),
+    @XmlNs(prefix = "gco", namespaceURI = Namespaces.GCO),
+    @XmlNs(prefix = "xsi", namespaceURI = Namespaces.XSI)
+})
+@XmlAccessorType(XmlAccessType.NONE)
+@XmlJavaTypeAdapters({
+    @XmlJavaTypeAdapter(CI_Citation.class),
+    @XmlJavaTypeAdapter(CI_OnlineResource.class),
+    @XmlJavaTypeAdapter(CI_ResponsibleParty.class),
+    @XmlJavaTypeAdapter(DQ_DataQuality.class),
+    @XmlJavaTypeAdapter(MD_ApplicationSchemaInformation.class),
+    @XmlJavaTypeAdapter(MD_CharacterSetCode.class),
+    @XmlJavaTypeAdapter(MD_Constraints.class),
+    @XmlJavaTypeAdapter(MD_ContentInformation.class),
+    @XmlJavaTypeAdapter(MD_DatatypeCode.class),
+    @XmlJavaTypeAdapter(MD_Distribution.class),
+    @XmlJavaTypeAdapter(MD_ExtendedElementInformation.class),
+    @XmlJavaTypeAdapter(MD_FeatureTypeList.class),
+    @XmlJavaTypeAdapter(MD_Identification.class),
+    @XmlJavaTypeAdapter(MD_MaintenanceInformation.class),
+    @XmlJavaTypeAdapter(MD_MetadataExtensionInformation.class),
+    @XmlJavaTypeAdapter(MD_ObligationCode.class),
+    @XmlJavaTypeAdapter(MD_PortrayalCatalogueReference.class),
+    @XmlJavaTypeAdapter(MD_ScopeCode.class),
+    @XmlJavaTypeAdapter(MD_SpatialRepresentation.class),
+    @XmlJavaTypeAdapter(MI_AcquisitionInformation.class),
+    @XmlJavaTypeAdapter(RS_ReferenceSystem.class),
+
+    // Java types, primitive types and basic OGC types handling
+    @XmlJavaTypeAdapter(LocaleAdapter.class),
+    @XmlJavaTypeAdapter(StringAdapter.class),
+    @XmlJavaTypeAdapter(InternationalStringAdapter.class),
+//    @XmlJavaTypeAdapter(GO_DateTime.class), // TODO
+    @XmlJavaTypeAdapter(GO_Boolean.class), @XmlJavaTypeAdapter(type=boolean.class, value=GO_Boolean.class),
+    @XmlJavaTypeAdapter(GO_Integer.class), @XmlJavaTypeAdapter(type=int.class,     value=GO_Integer.class)
+})
+package org.apache.sis.metadata.iso;
+
+import javax.xml.bind.annotation.XmlNs;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlSchema;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
+import org.apache.sis.xml.Namespaces;
+import org.apache.sis.internal.jaxb.gco.*;
+import org.apache.sis.internal.jaxb.gmd.*;
+import org.apache.sis.internal.jaxb.code.*;
+import org.apache.sis.internal.jaxb.metadata.*;

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/package-info.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain;charset=UTF-8



Mime
View raw message