You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2013/03/27 23:26:24 UTC

svn commit: r1461882 [1/2] - in /sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata: ./ iso/ iso/acquisition/ iso/citation/ iso/constraint/ iso/content/ iso/distribution/ iso/extent/ iso/identification/ iso/lineage/ iso/maintenance/ i...

Author: desruisseaux
Date: Wed Mar 27 22:26:21 2013
New Revision: 1461882

URL: http://svn.apache.org/r1461882
Log:
Prepare for the addition of copy constructors:
- Renamed existing copyCollection methods as writeCollection
- Added copyCollection methods for copy constructors only.
- Added a copy constructor in ISOMetadata.

Modified:
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
    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/DefaultMetadataExtensionInformation.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultRangeElementDescription.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistribution.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistributor.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultFormat.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultBoundingPolygon.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultExtent.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultKeywords.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultUsage.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultLineage.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessing.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultSource.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultScopeDescription.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResult.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultScope.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/AbstractGeolocationInformation.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGCP.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGCPCollection.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeorectified.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeoreferenceable.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
    sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultVectorSpatialRepresentation.java

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -92,6 +92,9 @@ public abstract class AbstractMetadata i
      * Subclasses will typically return a hard-coded constant such as
      * {@link MetadataStandard#ISO_19115}.
      *
+     * {@note Implementation of this method shall not depend on the object state,
+     *        since this method may be indirectly invoked by copy constructors.}
+     *
      * @return The metadata standard implemented.
      */
     public abstract MetadataStandard getStandard();

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -68,7 +68,7 @@ import static org.apache.sis.util.collec
  *         }
  *
  *         public synchronized void setProperties(Collection<Foo> newValues) {
- *             properties = copyCollection(newValues, properties, Foo.class);
+ *             properties = writeCollection(newValues, properties, Foo.class);
  *         }
  *     }
  * }
@@ -112,7 +112,6 @@ public abstract class ModifiableMetadata
      * Constructs an initially empty metadata.
      */
     protected ModifiableMetadata() {
-        super();
     }
 
     /**
@@ -229,8 +228,8 @@ public abstract class ModifiableMetadata
     }
 
     /**
-     * Copies the content of one list ({@code source}) into an other ({@code target}).
-     * This method performs the following steps:
+     * Writes the content of the {@code source} collection into the {@code target} list,
+     * creating it if needed. This method performs the following steps:
      *
      * <ul>
      *   <li>Invokes {@link #checkWritePermission()} in order to ensure that this metadata is
@@ -241,7 +240,7 @@ public abstract class ModifiableMetadata
      *   <li>Copies the content of the given {@code source} into the target.</li>
      * </ul>
      *
-     * @param  <E>         The type of elements in the list.
+     * @param  <E>         The type represented by the {@code Class} argument.
      * @param  source      The source list, or {@code null}.
      * @param  target      The target list, or {@code null} if not yet created.
      * @param  elementType The base type of elements to put in the list.
@@ -252,11 +251,11 @@ public abstract class ModifiableMetadata
      * @see #nonNullList(List, Class)
      */
     @SuppressWarnings("unchecked")
-    protected final <E> List<E> copyList(final Collection<? extends E> source,
+    protected final <E> List<E> writeList(final Collection<? extends E> source,
             List<E> target, final Class<E> elementType)
             throws UnmodifiableMetadataException
     {
-        // See the comments in copyCollection(...) for implementation notes.
+        // See the comments in writeCollection(...) for implementation notes.
         if (source != target) {
             if (unmodifiable == FREEZING) {
                 return (List<E>) source;
@@ -277,8 +276,8 @@ public abstract class ModifiableMetadata
     }
 
     /**
-     * Copies the content of one Set ({@code source}) into an other ({@code target}).
-     * This method performs the following steps:
+     * Writes the content of the {@code source} collection into the {@code target} set,
+     * creating it if needed. This method performs the following steps:
      *
      * <ul>
      *   <li>Invokes {@link #checkWritePermission()} in order to ensure that this metadata is
@@ -289,7 +288,7 @@ public abstract class ModifiableMetadata
      *   <li>Copies the content of the given {@code source} into the target.</li>
      * </ul>
      *
-     * @param  <E>         The type of elements in the set.
+     * @param  <E>         The type represented by the {@code Class} argument.
      * @param  source      The source set, or {@code null}.
      * @param  target      The target set, or {@code null} if not yet created.
      * @param  elementType The base type of elements to put in the set.
@@ -300,11 +299,11 @@ public abstract class ModifiableMetadata
      * @see #nonNullSet(Set, Class)
      */
     @SuppressWarnings("unchecked")
-    protected final <E> Set<E> copySet(final Collection<? extends E> source,
+    protected final <E> Set<E> writeSet(final Collection<? extends E> source,
             Set<E> target, final Class<E> elementType)
             throws UnmodifiableMetadataException
     {
-        // See the comments in copyCollection(...) for implementation notes.
+        // See the comments in writeCollection(...) for implementation notes.
         if (source != target) {
             if (unmodifiable == FREEZING) {
                 return (Set<E>) source;
@@ -325,8 +324,8 @@ public abstract class ModifiableMetadata
     }
 
     /**
-     * Copies the content of one collection ({@code source}) into an other ({@code target}).
-     * This method performs the following steps:
+     * Writes the content of the {@code source} collection into the {@code target} list or set,
+     * creating it if needed. This method performs the following steps:
      *
      * <ul>
      *   <li>Invokes {@link #checkWritePermission()} in order to ensure that this metadata is
@@ -339,13 +338,13 @@ public abstract class ModifiableMetadata
      * </ul>
      *
      * {@section Choosing a collection type}
-     * Implementations shall invoke {@link #copyList copyList} or {@link #copySet copySet} methods
+     * Implementations shall invoke {@link #writeList writeList} or {@link #writeSet writeSet} methods
      * instead than this method when the collection type is enforced by ISO specification.
      * When the type is not enforced by the specification, some freedom are allowed at
      * implementor choice. The default implementation invokes {@link #collectionType(Class)}
      * in order to get a hint about whether a {@link List} or a {@link Set} should be used.
      *
-     * @param  <E>         The type of elements in the collection.
+     * @param  <E>         The type represented by the {@code Class} argument.
      * @param  source      The source collection, or {@code null}.
      * @param  target      The target collection, or {@code null} if not yet created.
      * @param  elementType The base type of elements to put in the collection.
@@ -354,7 +353,7 @@ public abstract class ModifiableMetadata
      * @throws UnmodifiableMetadataException if this metadata is unmodifiable.
      */
     @SuppressWarnings("unchecked")
-    protected final <E> Collection<E> copyCollection(final Collection<? extends E> source,
+    protected final <E> Collection<E> writeCollection(final Collection<? extends E> source,
             Collection<E> target, final Class<E> elementType)
             throws UnmodifiableMetadataException
     {
@@ -393,6 +392,102 @@ public abstract class ModifiableMetadata
     }
 
     /**
+     * Creates a list with the content of the {@code source} collection,
+     * or returns {@code null} if the source is {@code null} or empty.
+     * This is a convenience method for copying fields in subclass copy constructors.
+     *
+     * @param  <E>         The type represented by the {@code Class} argument.
+     * @param  source      The source collection, or {@code null}.
+     * @param  elementType The base type of elements to put in the list.
+     * @return A list containing the {@code source} elements,
+     *         or {@code null} if the source was null or empty.
+     */
+    protected final <E> List<E> copyList(final Collection<? extends E> source, final Class<E> elementType) {
+        if (isNullOrEmpty(source)) {
+            return null;
+        }
+        final List<E> target = new MutableList<>(elementType, source.size());
+        target.addAll(source);
+        return target;
+    }
+
+    /**
+     * Creates a set with the content of the {@code source} collection,
+     * or returns {@code null} if the source is {@code null} or empty.
+     * This is a convenience method for copying fields in subclass copy constructors.
+     *
+     * @param  <E>         The type represented by the {@code Class} argument.
+     * @param  source      The source collection, or {@code null}.
+     * @param  elementType The base type of elements to put in the set.
+     * @return A set containing the {@code source} elements,
+     *         or {@code null} if the source was null or empty.
+     */
+    protected final <E> Set<E> copySet(final Collection<? extends E> source, final Class<E> elementType) {
+        if (isNullOrEmpty(source)) {
+            return null;
+        }
+        final Set<E> target = new MutableSet<>(elementType, source.size());
+        target.addAll(source);
+        return target;
+    }
+
+    /**
+     * Creates a list or set with the content of the {@code source} collection,
+     * or returns {@code null} if the source is {@code null} or empty.
+     * This is a convenience method for copying fields in subclass copy constructors.
+     *
+     * <p>The collection type is selected as described in the
+     * {@link #nonNullCollection(Collection, Class)}.</p>
+     *
+     * @param  <E>         The type represented by the {@code Class} argument.
+     * @param  source      The source collection, or {@code null}.
+     * @param  elementType The base type of elements to put in the collection.
+     * @return A collection containing the {@code source} elements,
+     *         or {@code null} if the source was null or empty.
+     */
+    protected final <E> Collection<E> copyCollection(final Collection<? extends E> source, final Class<E> elementType) {
+        if (isNullOrEmpty(source)) {
+            return null;
+        }
+        final Collection<E> target;
+        final int capacity = source.size();
+        if (useSet(elementType)) {
+            target = new MutableSet<>(elementType, capacity);
+        } else {
+            target = new MutableList<>(elementType, capacity);
+        }
+        target.addAll(source);
+        return target;
+    }
+
+    /**
+     * Creates a singleton list or set containing only the given value, if non-null.
+     * This is a convenience method for initializing fields in subclass constructors.
+     *
+     * <p>The collection type is selected as described in the
+     * {@link #nonNullCollection(Collection, Class)}.</p>
+     *
+     * @param  <E>         The type represented by the {@code Class} argument.
+     * @param  value       The singleton value to put in the returned collection, or {@code null}.
+     * @param  elementType The element type (used only if {@code value} is non-null).
+     * @return A new modifiable collection containing the given value,
+     *         or {@code null} if the given value was null.
+     */
+    protected final <E> Collection<E> singleton(final E value, final Class<E> elementType) {
+        if (value == null) {
+            return null;
+        }
+        final Collection<E> collection;
+        if (useSet(elementType)) {
+            collection = new MutableSet<>(elementType);
+        } else {
+            collection = new MutableList<>(elementType);
+        }
+        collection.add(value);
+        return collection;
+    }
+
+    /**
      * Returns {@code true} if the caller {@code nonNullCollection} method (or list, or set)
      * is allowed to returns {@code null} instead than an empty list. This happen mostly at
      * XML marshalling time.
@@ -405,7 +500,7 @@ public abstract class ModifiableMetadata
      * Returns the specified list, or a new one if {@code c} is null.
      * This is a convenience method for implementation of {@code getFoo()} methods.
      *
-     * @param  <E> The type of elements in the list.
+     * @param  <E> The type represented by the {@code Class} argument.
      * @param  c The existing list, or {@code null} if the list has not yet been created.
      * @param  elementType The element type (used only if {@code c} is null).
      * @return {@code c}, or a new list if {@code c} is null.
@@ -428,7 +523,7 @@ public abstract class ModifiableMetadata
      * Returns the specified set, or a new one if {@code c} is null.
      * This is a convenience method for implementation of {@code getFoo()} methods.
      *
-     * @param  <E> The type of elements in the set.
+     * @param  <E> The type represented by the {@code Class} argument.
      * @param  c The existing set, or {@code null} if the set has not yet been created.
      * @param  elementType The element type (used only if {@code c} is null).
      * @return {@code c}, or a new set if {@code c} is null.
@@ -459,7 +554,7 @@ public abstract class ModifiableMetadata
      * {@link #collectionType(Class)} in order to get a hint about whether a {@link List}
      * or a {@link Set} should be used.
      *
-     * @param  <E> The type of elements in the collection.
+     * @param  <E> The type represented by the {@code Class} argument.
      * @param  c The existing collection, or {@code null} if the collection has not yet been created.
      * @param  elementType The element type (used only if {@code c} is null).
      * @return {@code c}, or a new collection if {@code c} is null.
@@ -490,34 +585,6 @@ public abstract class ModifiableMetadata
     }
 
     /**
-     * Creates a modifiable collection containing only the given value, if non-null.
-     * This is a convenience method for initializing fields in subclass constructors.
-     * This method should not be invoked in other context.
-     *
-     * <p>The collection type is selected as described in the
-     * {@link #nonNullCollection(Collection, Class)}.</p>
-     *
-     * @param  <E> The type of elements in the collection.
-     * @param  elementType The element type (used only if {@code value} is non-null).
-     * @param  value The singleton value to put in the returned collection, or {@code null}.
-     * @return A new modifiable collection containing the given value, or {@code null} if
-     *         the given value was null.
-     */
-    protected final <E> Collection<E> singleton(final Class<E> elementType, final E value) {
-        if (value == null) {
-            return null;
-        }
-        final Collection<E> collection;
-        if (useSet(elementType)) {
-            collection = new MutableSet<>(elementType);
-        } else {
-            collection = new MutableList<>(elementType);
-        }
-        collection.add(value);
-        return collection;
-    }
-
-    /**
      * A checked set synchronized on the enclosing {@link ModifiableMetadata}.
      * Used for mutable sets only.
      */

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -885,7 +885,7 @@ final class PropertyAccessor {
                 /*
                  * We now have objects of the appropriate type. If we have a singleton to be added
                  * in an existing collection, add it now. In that case the 'newValue' should refer
-                 * to the 'addTo' collection. We rely on ModifiableMetadata.copyCollection(...)
+                 * to the 'addTo' collection. We rely on the ModifiableMetadata.writeCollection(…)
                  * optimization for detecting that the new collection is the same instance than
                  * the old one so there is nothing to do. We could exit from the method, but let
                  * it continues in case the user override the 'setFoo(...)' method.

Modified: 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=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -170,9 +170,9 @@ public class DefaultExtendedElementInfor
         this.definition   = Types.toInternationalString(definition);
         this.condition    = Types.toInternationalString(condition);
         this.dataType     = dataType;
-        this.parentEntity = singleton(String.class, parentEntity);
+        this.parentEntity = singleton(parentEntity, String.class);
         this.rule         = Types.toInternationalString(rule);
-        this.sources      = singleton(ResponsibleParty.class, source);
+        this.sources      = singleton(source, ResponsibleParty.class);
     }
 
     /**
@@ -396,7 +396,7 @@ public class DefaultExtendedElementInfor
      * @param newValues The new parent entity.
      */
     public synchronized void setParentEntity(final Collection<? extends String> newValues) {
-        parentEntity = copyCollection(newValues, parentEntity, String.class);
+        parentEntity = writeCollection(newValues, parentEntity, String.class);
     }
 
     /**
@@ -433,7 +433,7 @@ public class DefaultExtendedElementInfor
      * @param newValues The new rationales.
      */
     public synchronized void setRationales(final Collection<? extends InternationalString> newValues) {
-        rationales = copyCollection(newValues, rationales, InternationalString.class);
+        rationales = writeCollection(newValues, rationales, InternationalString.class);
     }
 
     /**
@@ -451,6 +451,6 @@ public class DefaultExtendedElementInfor
      * @param newValues The new sources.
      */
     public synchronized void setSources(final Collection<? extends ResponsibleParty> newValues) {
-        sources = copyCollection(newValues, sources, ResponsibleParty.class);
+        sources = writeCollection(newValues, sources, ResponsibleParty.class);
     }
 }

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=1461882&r1=1461881&r2=1461882&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] Wed Mar 27 22:26:21 2013
@@ -240,9 +240,9 @@ public class DefaultMetadata extends ISO
                            final Date             dateStamp,
                            final Identification   identificationInfo)
     {
-        this.contacts  = singleton(ResponsibleParty.class, contact);
+        this.contacts  = singleton(contact, ResponsibleParty.class);
         this.dateStamp = (dateStamp != null) ? dateStamp.getTime() : Long.MIN_VALUE;
-        this.identificationInfo = singleton(Identification.class, identificationInfo);
+        this.identificationInfo = singleton(identificationInfo, Identification.class);
     }
 
     /**
@@ -330,7 +330,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new locales.
      */
     public synchronized void setLocales(final Collection<? extends Locale> newValues) {
-        locales = copyCollection(newValues, locales, Locale.class);
+        locales = writeCollection(newValues, locales, Locale.class);
     }
 
     /**
@@ -386,7 +386,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new hierarchy levels.
      */
     public synchronized void setHierarchyLevels(final Collection<? extends ScopeCode> newValues) {
-        hierarchyLevels = copyCollection(newValues, hierarchyLevels, ScopeCode.class);
+        hierarchyLevels = writeCollection(newValues, hierarchyLevels, ScopeCode.class);
     }
 
     /**
@@ -404,7 +404,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new hierarchy level names.
      */
     public synchronized void setHierarchyLevelNames(final Collection<? extends String> newValues) {
-        hierarchyLevelNames = copyCollection(newValues, hierarchyLevelNames, String.class);
+        hierarchyLevelNames = writeCollection(newValues, hierarchyLevelNames, String.class);
     }
 
     /**
@@ -423,7 +423,7 @@ public class DefaultMetadata extends ISO
      */
     public synchronized void setContacts(final Collection<? extends ResponsibleParty> newValues) {
         checkWritePermission();
-        contacts = copyCollection(newValues, contacts, ResponsibleParty.class);
+        contacts = writeCollection(newValues, contacts, ResponsibleParty.class);
     }
 
     /**
@@ -517,7 +517,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new spatial representation info.
      */
     public synchronized void setSpatialRepresentationInfo(final Collection<? extends SpatialRepresentation> newValues) {
-        spatialRepresentationInfo = copyCollection(newValues, spatialRepresentationInfo, SpatialRepresentation.class);
+        spatialRepresentationInfo = writeCollection(newValues, spatialRepresentationInfo, SpatialRepresentation.class);
     }
 
     /**
@@ -535,7 +535,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new reference system info.
      */
     public synchronized void setReferenceSystemInfo(final Collection<? extends ReferenceSystem> newValues) {
-        referenceSystemInfo = copyCollection(newValues, referenceSystemInfo, ReferenceSystem.class);
+        referenceSystemInfo = writeCollection(newValues, referenceSystemInfo, ReferenceSystem.class);
     }
 
     /**
@@ -553,7 +553,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new metadata extension info.
      */
     public synchronized void setMetadataExtensionInfo(final Collection<? extends MetadataExtensionInformation> newValues) {
-        metadataExtensionInfo = copyCollection(newValues, metadataExtensionInfo, MetadataExtensionInformation.class);
+        metadataExtensionInfo = writeCollection(newValues, metadataExtensionInfo, MetadataExtensionInformation.class);
     }
 
     /**
@@ -571,7 +571,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new identification info.
      */
     public synchronized void setIdentificationInfo(final Collection<? extends Identification> newValues) {
-        identificationInfo = copyCollection(newValues, identificationInfo, Identification.class);
+        identificationInfo = writeCollection(newValues, identificationInfo, Identification.class);
     }
 
     /**
@@ -591,7 +591,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new content info.
      */
     public synchronized void setContentInfo(final Collection<? extends ContentInformation> newValues) {
-        contentInfo = copyCollection(newValues, contentInfo, ContentInformation.class);
+        contentInfo = writeCollection(newValues, contentInfo, ContentInformation.class);
     }
 
     /**
@@ -628,7 +628,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new data quality info.
      */
     public synchronized void setDataQualityInfo(final Collection<? extends DataQuality> newValues) {
-        dataQualityInfo = copyCollection(newValues, dataQualityInfo, DataQuality.class);
+        dataQualityInfo = writeCollection(newValues, dataQualityInfo, DataQuality.class);
     }
 
     /**
@@ -649,7 +649,7 @@ public class DefaultMetadata extends ISO
     public synchronized void setPortrayalCatalogueInfo(
             final Collection<? extends PortrayalCatalogueReference> newValues)
     {
-        portrayalCatalogueInfo = copyCollection(newValues, portrayalCatalogueInfo, PortrayalCatalogueReference.class);
+        portrayalCatalogueInfo = writeCollection(newValues, portrayalCatalogueInfo, PortrayalCatalogueReference.class);
     }
 
     /**
@@ -667,7 +667,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new metadata constraints.
      */
     public synchronized void setMetadataConstraints(final Collection<? extends Constraints> newValues) {
-        metadataConstraints = copyCollection(newValues, metadataConstraints, Constraints.class);
+        metadataConstraints = writeCollection(newValues, metadataConstraints, Constraints.class);
     }
 
     /**
@@ -685,7 +685,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new application schema info.
      */
     public synchronized void setApplicationSchemaInfo(final Collection<? extends ApplicationSchemaInformation> newValues) {
-        applicationSchemaInfo = copyCollection(newValues, applicationSchemaInfo, ApplicationSchemaInformation.class);
+        applicationSchemaInfo = writeCollection(newValues, applicationSchemaInfo, ApplicationSchemaInformation.class);
     }
 
     /**
@@ -722,7 +722,7 @@ public class DefaultMetadata extends ISO
      * @param newValues The new acquisition information.
      */
     public synchronized void setAcquisitionInformation(final Collection<? extends AcquisitionInformation> newValues) {
-        acquisitionInformation = copyCollection(newValues, acquisitionInformation, AcquisitionInformation.class);
+        acquisitionInformation = writeCollection(newValues, acquisitionInformation, AcquisitionInformation.class);
     }
 
     /**

Modified: 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=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadataExtensionInformation.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -123,6 +123,6 @@ public class DefaultMetadataExtensionInf
      * @param newValues The new extended element information.
      */
     public synchronized void setExtendedElementInformation(final Collection<? extends ExtendedElementInformation> newValues) {
-        extendedElementInformation = copyCollection(newValues, extendedElementInformation, ExtendedElementInformation.class);
+        extendedElementInformation = writeCollection(newValues, extendedElementInformation, ExtendedElementInformation.class);
     }
 }

Modified: 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=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultPortrayalCatalogueReference.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -61,7 +61,7 @@ public class DefaultPortrayalCatalogueRe
      * @param portrayalCatalogueCitation The bibliographic reference, or {@code null} if none.
      */
     public DefaultPortrayalCatalogueReference(final Citation portrayalCatalogueCitation) {
-        portrayalCatalogueCitations = singleton(Citation.class, portrayalCatalogueCitation);
+        portrayalCatalogueCitations = singleton(portrayalCatalogueCitation, Citation.class);
     }
 
     /**
@@ -100,6 +100,6 @@ public class DefaultPortrayalCatalogueRe
      * @param newValues The new portrayal catalogue citations.
      */
     public synchronized void setPortrayalCatalogueCitations(Collection<? extends Citation> newValues) {
-        portrayalCatalogueCitations = copyCollection(newValues, portrayalCatalogueCitations, Citation.class);
+        portrayalCatalogueCitations = writeCollection(newValues, portrayalCatalogueCitations, Citation.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -61,12 +61,28 @@ public class ISOMetadata extends Modifia
      * Constructs an initially empty metadata.
      */
     protected ISOMetadata() {
-        super();
+    }
+
+    /**
+     * Constructs a new metadata initialized with the values from the specified object.
+     * If the given object is an instance of {@link IdentifiedObject}, then this constructor
+     * copies the {@linkplain #identifiers collection of identifiers}.
+     *
+     * @param object The metadata to copy values from, or {@code null} if none.
+     */
+    protected ISOMetadata(final Object object) {
+        if (object instanceof IdentifiedObject) {
+            identifiers = copyCollection(((IdentifiedObject) object).getIdentifiers(), Identifier.class);
+        }
     }
 
     /**
      * Returns the metadata standard implemented by subclasses,
      * which is {@linkplain MetadataStandard#ISO_19115 ISO 19115}.
+     *
+     * {@note Subclasses shall not override this method in a way that depends on the object state,
+     *        since this method may be indirectly invoked by copy constructors (i.e. is may be
+     *        invoked before this metadata object is fully constructed).}
      */
     @Override
     public MetadataStandard getStandard() {

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultAcquisitionInformation.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -134,7 +134,7 @@ public class DefaultAcquisitionInformati
      * @param newValues The new plan values.
      */
     public synchronized void setAcquisitionPlans(final Collection<? extends Plan> newValues) {
-        acquisitionPlans = copyCollection(newValues, acquisitionPlans, Plan.class);
+        acquisitionPlans = writeCollection(newValues, acquisitionPlans, Plan.class);
     }
 
     /**
@@ -152,7 +152,7 @@ public class DefaultAcquisitionInformati
      * @param newValues The new acquisition requirements values.
      */
     public synchronized void setAcquisitionRequirements(final Collection<? extends Requirement> newValues) {
-        acquisitionRequirements = copyCollection(newValues, acquisitionRequirements, Requirement.class);
+        acquisitionRequirements = writeCollection(newValues, acquisitionRequirements, Requirement.class);
     }
 
     /**
@@ -190,7 +190,7 @@ public class DefaultAcquisitionInformati
      * @param newValues The new instruments values.
      */
     public synchronized void setInstruments(final Collection<? extends Instrument> newValues) {
-        instruments = copyCollection(newValues, instruments, Instrument.class);
+        instruments = writeCollection(newValues, instruments, Instrument.class);
     }
 
     /**
@@ -208,7 +208,7 @@ public class DefaultAcquisitionInformati
      * @param newValues The new objectives values.
      */
     public synchronized void setObjectives(final Collection<? extends Objective> newValues) {
-        objectives = copyCollection(newValues, objectives, Objective.class);
+        objectives = writeCollection(newValues, objectives, Objective.class);
     }
 
     /**
@@ -226,7 +226,7 @@ public class DefaultAcquisitionInformati
      * @param newValues The new operations values.
      */
     public synchronized void setOperations(final Collection<? extends Operation> newValues) {
-        operations = copyCollection(newValues, operations, Operation.class);
+        operations = writeCollection(newValues, operations, Operation.class);
     }
 
     /**
@@ -244,6 +244,6 @@ public class DefaultAcquisitionInformati
      * @param newValues The new platforms values.
      */
     public synchronized void setPlatforms(final Collection<? extends Platform> newValues) {
-        platforms = copyCollection(newValues, platforms, Platform.class);
+        platforms = writeCollection(newValues, platforms, Platform.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -234,7 +234,7 @@ public class DefaultEvent extends ISOMet
      * @param newValues The new expected objectives values.
      */
     public synchronized void setExpectedObjectives(final Collection<? extends Objective> newValues) {
-        expectedObjectives = copyCollection(newValues, expectedObjectives, Objective.class);
+        expectedObjectives = writeCollection(newValues, expectedObjectives, Objective.class);
     }
 
     /**
@@ -270,6 +270,6 @@ public class DefaultEvent extends ISOMet
      * @param newValues The new instrument values.
      */
     public synchronized void setRelatedSensors(final Collection<? extends Instrument> newValues) {
-        relatedSensors = copyCollection(newValues, relatedSensors, Instrument.class);
+        relatedSensors = writeCollection(newValues, relatedSensors, Instrument.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultInstrument.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -114,7 +114,7 @@ public class DefaultInstrument extends I
      * @param newValues The new citation values.
      */
     public synchronized void setCitations(final Collection<? extends Citation> newValues) {
-        citations = copyCollection(newValues, citations, Citation.class);
+        citations = writeCollection(newValues, citations, Citation.class);
     }
 
     /**

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultObjective.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -148,7 +148,7 @@ public class DefaultObjective extends IS
      */
     public synchronized void setIdentifiers(final Collection<? extends Identifier> newValues) {
         final Collection<Identifier> oldIds = NonMarshalledAuthority.getIdentifiers(identifiers);
-        identifiers = copyCollection(newValues, identifiers, Identifier.class);
+        identifiers = writeCollection(newValues, identifiers, Identifier.class);
         NonMarshalledAuthority.setIdentifiers(identifiers, oldIds);
     }
 
@@ -186,7 +186,7 @@ public class DefaultObjective extends IS
      * @param newValues The new types values.
      */
     public synchronized void setTypes(final Collection<? extends ObjectiveType> newValues) {
-        types = copyCollection(newValues, types, ObjectiveType.class);
+        types = writeCollection(newValues, types, ObjectiveType.class);
     }
 
     /**
@@ -204,7 +204,7 @@ public class DefaultObjective extends IS
      * @param newValues The new functions values.
      */
     public synchronized void setFunctions(final Collection<? extends InternationalString> newValues) {
-        functions = copyCollection(newValues, functions, InternationalString.class);
+        functions = writeCollection(newValues, functions, InternationalString.class);
     }
 
     /**
@@ -224,7 +224,7 @@ public class DefaultObjective extends IS
      * @param newValues The new extents values.
      */
     public synchronized void setExtents(final Collection<? extends Extent> newValues) {
-        extents = copyCollection(newValues, extents, Extent.class);
+        extents = writeCollection(newValues, extents, Extent.class);
     }
 
     /**
@@ -242,7 +242,7 @@ public class DefaultObjective extends IS
      * @param newValues The new objective occurrences values.
      */
     public synchronized void setObjectiveOccurences(final Collection<? extends Event> newValues) {
-        objectiveOccurences = copyCollection(newValues, objectiveOccurences, Event.class);
+        objectiveOccurences = writeCollection(newValues, objectiveOccurences, Event.class);
     }
 
     /**
@@ -260,7 +260,7 @@ public class DefaultObjective extends IS
      * @param newValues The new pass values.
      */
     public synchronized void setPass(final Collection<? extends PlatformPass> newValues) {
-        pass = copyCollection(newValues, pass, PlatformPass.class);
+        pass = writeCollection(newValues, pass, PlatformPass.class);
     }
 
     /**
@@ -278,6 +278,6 @@ public class DefaultObjective extends IS
      * @param newValues The new sensing instruments values.
      */
     public synchronized void setSensingInstruments(final Collection<? extends Instrument> newValues) {
-        sensingInstruments = copyCollection(newValues, sensingInstruments, Instrument.class);
+        sensingInstruments = writeCollection(newValues, sensingInstruments, Instrument.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultOperation.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -254,7 +254,7 @@ public class DefaultOperation extends IS
      * @param newValues The new child operations values.
      */
     public synchronized void setChildOperations(final Collection<? extends Operation> newValues) {
-        childOperations = copyCollection(newValues, childOperations, Operation.class);
+        childOperations = writeCollection(newValues, childOperations, Operation.class);
     }
 
     /**
@@ -272,7 +272,7 @@ public class DefaultOperation extends IS
      * @param newValues The new objectives values.
      */
     public synchronized void setObjectives(final Collection<? extends Objective> newValues) {
-        objectives = copyCollection(newValues, objectives, Objective.class);
+        objectives = writeCollection(newValues, objectives, Objective.class);
     }
 
     /**
@@ -328,7 +328,7 @@ public class DefaultOperation extends IS
      * @param newValues The new platforms values.
      */
     public synchronized void setPlatforms(final Collection<? extends Platform> newValues) {
-        platforms = copyCollection(newValues, platforms, Platform.class);
+        platforms = writeCollection(newValues, platforms, Platform.class);
     }
 
     /**
@@ -346,6 +346,6 @@ public class DefaultOperation extends IS
      * @param newValues The new significant events value.
      */
     public synchronized void setSignificantEvents(final Collection<? extends Event> newValues) {
-        significantEvents = copyCollection(newValues, significantEvents, Event.class);
+        significantEvents = writeCollection(newValues, significantEvents, Event.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlan.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -178,7 +178,7 @@ public class DefaultPlan extends ISOMeta
      * @param newValues The new identifications of the activity.
      */
     public synchronized void setOperations(final Collection<? extends Operation> newValues) {
-        operations = copyCollection(newValues, operations, Operation.class);
+        operations = writeCollection(newValues, operations, Operation.class);
     }
 
     /**
@@ -196,6 +196,6 @@ public class DefaultPlan extends ISOMeta
      * @param newValues The new satisfied requirements.
      */
     public synchronized void setSatisfiedRequirements(final Collection<? extends Requirement> newValues) {
-        satisfiedRequirements = copyCollection(newValues, satisfiedRequirements, Requirement.class);
+        satisfiedRequirements = writeCollection(newValues, satisfiedRequirements, Requirement.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatform.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -174,7 +174,7 @@ public class DefaultPlatform extends ISO
      * @param newValues The new sponsors values;
      */
     public synchronized void setSponsors(final Collection<? extends ResponsibleParty> newValues) {
-        sponsors = copyCollection(newValues, sponsors, ResponsibleParty.class);
+        sponsors = writeCollection(newValues, sponsors, ResponsibleParty.class);
     }
 
     /**
@@ -192,6 +192,6 @@ public class DefaultPlatform extends ISO
      * @param newValues The new instruments values.
      */
     public synchronized void setInstruments(final Collection<? extends Instrument> newValues) {
-        instruments = copyCollection(newValues, instruments, Instrument.class);
+        instruments = writeCollection(newValues, instruments, Instrument.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultPlatformPass.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -142,6 +142,6 @@ public class DefaultPlatformPass extends
      * @param newValues The new related events values.
      */
     public synchronized void setRelatedEvents(final Collection<? extends Event> newValues) {
-        relatedEvents = copyCollection(newValues, relatedEvents, Event.class);
+        relatedEvents = writeCollection(newValues, relatedEvents, Event.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -177,7 +177,7 @@ public class DefaultRequirement extends 
      * @param newValues The new requestors values.
      */
     public synchronized void setRequestors(final Collection<? extends ResponsibleParty> newValues) {
-        requestors = copyCollection(newValues, requestors, ResponsibleParty.class);
+        requestors = writeCollection(newValues, requestors, ResponsibleParty.class);
     }
 
     /**
@@ -195,7 +195,7 @@ public class DefaultRequirement extends 
      * @param newValues The new recipients values.
      */
     public synchronized void setRecipients(final Collection<? extends ResponsibleParty> newValues) {
-        recipients = copyCollection(newValues, recipients, ResponsibleParty.class);
+        recipients = writeCollection(newValues, recipients, ResponsibleParty.class);
     }
 
     /**
@@ -269,6 +269,6 @@ public class DefaultRequirement extends 
      * @param newValues The new satisfied plans values.
      */
     public synchronized void setSatisfiedPlans(final Collection<? extends Plan> newValues) {
-        satisfiedPlans = copyCollection(newValues, satisfiedPlans, Plan.class);
+        satisfiedPlans = writeCollection(newValues, satisfiedPlans, Plan.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultAddress.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -179,7 +179,7 @@ public class DefaultAddress extends ISOM
      * @param newValues The new delivery points, or {@code null} if none.
      */
     public synchronized void setDeliveryPoints(final Collection<? extends String> newValues) {
-        deliveryPoints = copyCollection(newValues, deliveryPoints, String.class);
+        deliveryPoints = writeCollection(newValues, deliveryPoints, String.class);
     }
 
     /**
@@ -197,7 +197,7 @@ public class DefaultAddress extends ISOM
      * @param newValues The new electronic mail addresses, or {@code null} if none.
      */
     public synchronized void setElectronicMailAddresses(final Collection<? extends String> newValues) {
-        electronicMailAddresses = copyCollection(newValues, electronicMailAddresses, String.class);
+        electronicMailAddresses = writeCollection(newValues, electronicMailAddresses, String.class);
     }
 
     /**

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -184,7 +184,7 @@ public class DefaultCitation extends ISO
     public DefaultCitation(final ResponsibleParty party) {
         this(); // Initialize the date field.
         if (party != null) {
-            citedResponsibleParties = singleton(ResponsibleParty.class, party);
+            citedResponsibleParties = singleton(party, ResponsibleParty.class);
             title = party.getOrganisationName();
             if (title == null) {
                 title = party.getPositionName();
@@ -254,7 +254,7 @@ public class DefaultCitation extends ISO
      * @param newValues The new alternate titles, or {@code null} if none.
      */
     public synchronized void setAlternateTitles(final Collection<? extends InternationalString> newValues) {
-        alternateTitles = copyCollection(newValues, alternateTitles, InternationalString.class);
+        alternateTitles = writeCollection(newValues, alternateTitles, InternationalString.class);
     }
 
     /**
@@ -272,7 +272,7 @@ public class DefaultCitation extends ISO
      * @param newValues The new dates, or {@code null} if none.
      */
     public synchronized void setDates(final Collection<? extends CitationDate> newValues) {
-        dates = copyCollection(newValues, dates, CitationDate.class);
+        dates = writeCollection(newValues, dates, CitationDate.class);
     }
 
     /**
@@ -347,7 +347,7 @@ public class DefaultCitation extends ISO
      */
     public synchronized void setIdentifiers(final Collection<? extends Identifier> newValues) {
         final Collection<Identifier> oldIds = NonMarshalledAuthority.getIdentifiers(identifiers);
-        identifiers = copyCollection(newValues, identifiers, Identifier.class);
+        identifiers = writeCollection(newValues, identifiers, Identifier.class);
         NonMarshalledAuthority.setIdentifiers(identifiers, oldIds);
     }
 
@@ -368,7 +368,7 @@ public class DefaultCitation extends ISO
      * @param newValues The new cited responsible parties, or {@code null} if none.
      */
     public synchronized void setCitedResponsibleParties(final Collection<? extends ResponsibleParty> newValues) {
-        citedResponsibleParties = copyCollection(newValues, citedResponsibleParties, ResponsibleParty.class);
+        citedResponsibleParties = writeCollection(newValues, citedResponsibleParties, ResponsibleParty.class);
     }
 
     /**
@@ -386,7 +386,7 @@ public class DefaultCitation extends ISO
      * @param newValues The new presentation form, or {@code null} if none.
      */
     public synchronized void setPresentationForms(final Collection<? extends PresentationForm> newValues) {
-        presentationForms = copyCollection(newValues, presentationForms, PresentationForm.class);
+        presentationForms = writeCollection(newValues, presentationForms, PresentationForm.class);
     }
 
     /**

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultTelephone.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -98,7 +98,7 @@ public class DefaultTelephone extends IS
      * @param newValues The new telephone numbers, or {@code null} if none.
      */
     public synchronized void setVoices(final Collection<? extends String> newValues) {
-        voices = copyCollection(newValues, voices, String.class);
+        voices = writeCollection(newValues, voices, String.class);
     }
 
     /**
@@ -118,6 +118,6 @@ public class DefaultTelephone extends IS
      * @param newValues The new telephone number, or {@code null} if none.
      */
     public synchronized void setFacsimiles(final Collection<? extends String> newValues) {
-        facsimiles = copyCollection(newValues, facsimiles, String.class);
+        facsimiles = writeCollection(newValues, facsimiles, String.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultConstraints.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -69,7 +69,7 @@ public class DefaultConstraints extends 
      * @param useLimitation The use limitation, or {@code null} if none.
      */
     public DefaultConstraints(final CharSequence useLimitation) {
-        useLimitations = singleton(InternationalString.class, Types.toInternationalString(useLimitation));
+        useLimitations = singleton(Types.toInternationalString(useLimitation), InternationalString.class);
     }
 
     /**
@@ -122,6 +122,6 @@ public class DefaultConstraints extends 
      * @param newValues The new use limitations.
      */
     public synchronized void setUseLimitations(final Collection<? extends InternationalString> newValues) {
-        useLimitations = copyCollection(newValues, useLimitations, InternationalString.class);
+        useLimitations = writeCollection(newValues, useLimitations, InternationalString.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraints.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -111,7 +111,7 @@ public class DefaultLegalConstraints ext
      * @param newValues The new access constraints.
      */
     public synchronized void setAccessConstraints(final Collection<? extends Restriction> newValues) {
-        accessConstraints = copyCollection(newValues, accessConstraints, Restriction.class);
+        accessConstraints = writeCollection(newValues, accessConstraints, Restriction.class);
     }
 
     /**
@@ -131,7 +131,7 @@ public class DefaultLegalConstraints ext
      * @param newValues The new use constraints.
      */
     public synchronized void setUseConstraints(final Collection<? extends Restriction> newValues) {
-        useConstraints = copyCollection(newValues, useConstraints, Restriction.class);
+        useConstraints = writeCollection(newValues, useConstraints, Restriction.class);
     }
 
     /**
@@ -152,6 +152,6 @@ public class DefaultLegalConstraints ext
      * @param newValues Other constraints.
      */
     public synchronized void setOtherConstraints(final Collection<? extends InternationalString> newValues) {
-        otherConstraints = copyCollection(newValues, otherConstraints, InternationalString.class);
+        otherConstraints = writeCollection(newValues, otherConstraints, InternationalString.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -163,7 +163,7 @@ public class DefaultCoverageDescription 
      * @param newValues The new dimensions.
      */
     public synchronized void setDimensions(final Collection<? extends RangeDimension> newValues) {
-        dimensions = copyCollection(newValues, dimensions, RangeDimension.class);
+        dimensions = writeCollection(newValues, dimensions, RangeDimension.class);
     }
 
     /**
@@ -183,6 +183,6 @@ public class DefaultCoverageDescription 
      * @param newValues The new range element description.
      */
     public synchronized void setRangeElementDescriptions(final Collection<? extends RangeElementDescription> newValues) {
-        rangeElementDescriptions = copyCollection(newValues, rangeElementDescriptions, RangeElementDescription.class);
+        rangeElementDescriptions = writeCollection(newValues, rangeElementDescriptions, RangeElementDescription.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -138,7 +138,7 @@ public class DefaultFeatureCatalogueDesc
      * @param newValues The new languages.
      */
     public synchronized void setLanguages(final Collection<? extends Locale> newValues) {
-        languages = copyCollection(newValues, languages, Locale.class);
+        languages = writeCollection(newValues, languages, Locale.class);
     }
 
     /**
@@ -175,7 +175,7 @@ public class DefaultFeatureCatalogueDesc
      * @param newValues The new feature types.
      */
     public synchronized void setFeatureTypes(final Collection<? extends GenericName> newValues) {
-        featureTypes = copyCollection(newValues, featureTypes, GenericName.class);
+        featureTypes = writeCollection(newValues, featureTypes, GenericName.class);
     }
 
     /**
@@ -193,6 +193,6 @@ public class DefaultFeatureCatalogueDesc
      * @param newValues The feature catalogue citations.
      */
     public synchronized void setFeatureCatalogueCitations(final Collection<? extends Citation> newValues) {
-        featureCatalogueCitations = copyCollection(newValues, featureCatalogueCitations, Citation.class);
+        featureCatalogueCitations = writeCollection(newValues, featureCatalogueCitations, Citation.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultRangeElementDescription.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultRangeElementDescription.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultRangeElementDescription.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultRangeElementDescription.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -147,6 +147,6 @@ public class DefaultRangeElementDescript
      * @param newValues The new range element values.
      */
     public synchronized void setRangeElements(final Collection<? extends Record> newValues) {
-        rangeElements = copyCollection(newValues, rangeElements, Record.class);
+        rangeElements = writeCollection(newValues, rangeElements, Record.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -105,7 +105,7 @@ public class DefaultDataFile extends ISO
      * @param newValues The new feature type values.
      */
     public synchronized void setFeatureTypes(final Collection<? extends LocalName> newValues) {
-        featureTypes = copyCollection(newValues, featureTypes, LocalName.class);
+        featureTypes = writeCollection(newValues, featureTypes, LocalName.class);
     }
 
     /**

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -158,7 +158,7 @@ public class DefaultDigitalTransferOptio
      * @param newValues The new online sources.
      */
     public synchronized void setOnLines(final Collection<? extends OnlineResource> newValues) {
-        onLines = copyCollection(newValues, onLines, OnlineResource.class);
+        onLines = writeCollection(newValues, onLines, OnlineResource.class);
     }
 
     /**

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistribution.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistribution.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistribution.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistribution.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -107,7 +107,7 @@ public class DefaultDistribution extends
      * @param newValues The new distribution formats.
      */
     public synchronized void setDistributionFormats(final Collection<? extends Format> newValues) {
-        distributionFormats = copyCollection(newValues, distributionFormats, Format.class);
+        distributionFormats = writeCollection(newValues, distributionFormats, Format.class);
     }
 
     /**
@@ -125,7 +125,7 @@ public class DefaultDistribution extends
      * @param newValues The new distributors.
      */
     public synchronized void setDistributors(final Collection<? extends Distributor> newValues) {
-        distributors = copyCollection(newValues, distributors, Distributor.class);
+        distributors = writeCollection(newValues, distributors, Distributor.class);
     }
 
     /**
@@ -145,6 +145,6 @@ public class DefaultDistribution extends
      * @param newValues The new transfer options.
      */
     public synchronized void setTransferOptions(final Collection<? extends DigitalTransferOptions> newValues) {
-        transferOptions = copyCollection(newValues, transferOptions, DigitalTransferOptions.class);
+        transferOptions = writeCollection(newValues, transferOptions, DigitalTransferOptions.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistributor.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistributor.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistributor.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDistributor.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -144,7 +144,7 @@ public class DefaultDistributor extends 
      * @param newValues The new distribution order processes.
      */
     public synchronized void setDistributionOrderProcesses(final Collection<? extends StandardOrderProcess> newValues) {
-        distributionOrderProcesses = copyCollection(newValues, distributionOrderProcesses, StandardOrderProcess.class);
+        distributionOrderProcesses = writeCollection(newValues, distributionOrderProcesses, StandardOrderProcess.class);
     }
 
     /**
@@ -162,7 +162,7 @@ public class DefaultDistributor extends 
      * @param newValues The new distributor formats.
      */
     public synchronized void setDistributorFormats(final Collection<? extends Format> newValues) {
-        distributorFormats = copyCollection(newValues, distributorFormats, Format.class);
+        distributorFormats = writeCollection(newValues, distributorFormats, Format.class);
     }
 
     /**
@@ -180,6 +180,6 @@ public class DefaultDistributor extends 
      * @param newValues The new distributor transfer options.
      */
     public synchronized void setDistributorTransferOptions(final Collection<? extends DigitalTransferOptions> newValues) {
-        distributorTransferOptions = copyCollection(newValues, distributorTransferOptions, DigitalTransferOptions.class);
+        distributorTransferOptions = writeCollection(newValues, distributorTransferOptions, DigitalTransferOptions.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultFormat.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultFormat.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultFormat.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultFormat.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -234,6 +234,6 @@ public class DefaultFormat extends ISOMe
      * @param newValues The new format distributors.
      */
     public synchronized void setFormatDistributors(final Collection<? extends Distributor> newValues) {
-        formatDistributors = copyCollection(newValues, formatDistributors, Distributor.class);
+        formatDistributors = writeCollection(newValues, formatDistributors, Distributor.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -149,7 +149,7 @@ public class DefaultMedium extends ISOMe
      * @param newValues The new densities.
      */
     public synchronized void setDensities(final Collection<? extends Double> newValues) {
-        densities = copyCollection(newValues, densities, Double.class);
+        densities = writeCollection(newValues, densities, Double.class);
     }
 
     /**
@@ -206,7 +206,7 @@ public class DefaultMedium extends ISOMe
      * @param newValues The new medium formats.
      */
     public synchronized void setMediumFormats(final Collection<? extends MediumFormat> newValues) {
-        mediumFormats = copyCollection(newValues, mediumFormats, MediumFormat.class);
+        mediumFormats = writeCollection(newValues, mediumFormats, MediumFormat.class);
     }
 
     /**

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultBoundingPolygon.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultBoundingPolygon.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultBoundingPolygon.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultBoundingPolygon.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -62,7 +62,7 @@ public class DefaultBoundingPolygon exte
      * @param polygon The sets of points defining the bounding polygon.
      */
     public DefaultBoundingPolygon(final Geometry polygon) {
-        polygons = singleton(Geometry.class, polygon);
+        polygons = singleton(polygon, Geometry.class);
     }
 
     /**
@@ -101,6 +101,6 @@ public class DefaultBoundingPolygon exte
      * @param newValues The new polygons.
      */
     public synchronized void setPolygons(final Collection<? extends Geometry> newValues) {
-        polygons = copyCollection(newValues, polygons, Geometry.class);
+        polygons = writeCollection(newValues, polygons, Geometry.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultExtent.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultExtent.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultExtent.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultExtent.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -163,7 +163,7 @@ public class DefaultExtent extends ISOMe
      * @param newValues The new geographic elements.
      */
     public synchronized void setGeographicElements(final Collection<? extends GeographicExtent> newValues) {
-        geographicElements = copyCollection(newValues, geographicElements, GeographicExtent.class);
+        geographicElements = writeCollection(newValues, geographicElements, GeographicExtent.class);
     }
 
     /**
@@ -181,7 +181,7 @@ public class DefaultExtent extends ISOMe
      * @param newValues The new temporal elements.
      */
     public synchronized void setTemporalElements(final Collection<? extends TemporalExtent> newValues) {
-        temporalElements = copyCollection(newValues, temporalElements, TemporalExtent.class);
+        temporalElements = writeCollection(newValues, temporalElements, TemporalExtent.class);
     }
 
     /**
@@ -199,7 +199,7 @@ public class DefaultExtent extends ISOMe
      * @param newValues The new vertical elements.
      */
     public synchronized void setVerticalElements(final Collection<? extends VerticalExtent> newValues) {
-        verticalElements = copyCollection(newValues, verticalElements, VerticalExtent.class);
+        verticalElements = writeCollection(newValues, verticalElements, VerticalExtent.class);
     }
 
     /**

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -92,6 +92,6 @@ public class DefaultSpatialTemporalExten
      * @param newValues The new spatial extent.
      */
     public synchronized void setSpatialExtent(final Collection<? extends GeographicExtent> newValues) {
-        spatialExtent = copyCollection(newValues, spatialExtent, GeographicExtent.class);
+        spatialExtent = writeCollection(newValues, spatialExtent, GeographicExtent.class);
     }
 }

Modified: sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java?rev=1461882&r1=1461881&r2=1461882&view=diff
==============================================================================
--- sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java [UTF-8] (original)
+++ sis/branches/JDK7/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/AbstractIdentification.java [UTF-8] Wed Mar 27 22:26:21 2013
@@ -254,7 +254,7 @@ public class AbstractIdentification exte
      * @param newValues The new credits.
      */
     public synchronized void setCredits(final Collection<? extends String> newValues) {
-        credits = copyCollection(newValues, credits, String.class);
+        credits = writeCollection(newValues, credits, String.class);
     }
 
     /**
@@ -272,7 +272,7 @@ public class AbstractIdentification exte
      * @param newValues The new status.
      */
     public synchronized void setStatus(final Collection<? extends Progress> newValues) {
-        status = copyCollection(newValues, status, Progress.class);
+        status = writeCollection(newValues, status, Progress.class);
     }
 
     /**
@@ -291,7 +291,7 @@ public class AbstractIdentification exte
      * @param newValues The new points of contacts.
      */
     public synchronized void setPointOfContacts(final Collection<? extends ResponsibleParty> newValues) {
-        pointOfContacts = copyCollection(newValues, pointOfContacts, ResponsibleParty.class);
+        pointOfContacts = writeCollection(newValues, pointOfContacts, ResponsibleParty.class);
     }
 
     /**
@@ -309,7 +309,7 @@ public class AbstractIdentification exte
      * @param newValues The new resource maintenance info.
      */
     public synchronized void setResourceMaintenances(final Collection<? extends MaintenanceInformation> newValues) {
-        resourceMaintenances = copyCollection(newValues, resourceMaintenances, MaintenanceInformation.class);
+        resourceMaintenances = writeCollection(newValues, resourceMaintenances, MaintenanceInformation.class);
     }
 
     /**
@@ -327,7 +327,7 @@ public class AbstractIdentification exte
      * @param newValues The new graphics overviews.
      */
     public synchronized void setGraphicOverviews(final Collection<? extends BrowseGraphic> newValues) {
-        graphicOverviews = copyCollection(newValues, graphicOverviews, BrowseGraphic.class);
+        graphicOverviews = writeCollection(newValues, graphicOverviews, BrowseGraphic.class);
     }
 
     /**
@@ -345,7 +345,7 @@ public class AbstractIdentification exte
      * @param newValues The new resource format.
      */
     public synchronized void setResourceFormats(final Collection<? extends Format> newValues) {
-        resourceFormats = copyCollection(newValues, resourceFormats, Format.class);
+        resourceFormats = writeCollection(newValues, resourceFormats, Format.class);
     }
 
     /**
@@ -363,7 +363,7 @@ public class AbstractIdentification exte
      * @param newValues The new descriptive keywords.
      */
     public synchronized void setDescriptiveKeywords(final Collection<? extends Keywords> newValues) {
-        descriptiveKeywords = copyCollection(newValues, descriptiveKeywords, Keywords.class);
+        descriptiveKeywords = writeCollection(newValues, descriptiveKeywords, Keywords.class);
     }
 
     /**
@@ -382,7 +382,7 @@ public class AbstractIdentification exte
      * @param newValues The new resource specific usages.
      */
     public synchronized void setResourceSpecificUsages(final Collection<? extends Usage> newValues) {
-        resourceSpecificUsages = copyCollection(newValues, resourceSpecificUsages, Usage.class);
+        resourceSpecificUsages = writeCollection(newValues, resourceSpecificUsages, Usage.class);
     }
 
     /**
@@ -400,7 +400,7 @@ public class AbstractIdentification exte
      * @param newValues The new resource constraints.
      */
     public synchronized void setResourceConstraints(final Collection<? extends Constraints> newValues) {
-        resourceConstraints = copyCollection(newValues, resourceConstraints, Constraints.class);
+        resourceConstraints = writeCollection(newValues, resourceConstraints, Constraints.class);
     }
 
     /**
@@ -418,6 +418,6 @@ public class AbstractIdentification exte
      * @param newValues The new aggregation info.
      */
     public synchronized void setAggregationInfo(final Collection<? extends AggregateInformation> newValues) {
-        aggregationInfo = copyCollection(newValues, aggregationInfo, AggregateInformation.class);
+        aggregationInfo = writeCollection(newValues, aggregationInfo, AggregateInformation.class);
     }
 }