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 2017/01/04 09:17:27 UTC

svn commit: r1777269 [1/2] - in /sis/branches/JDK7: ./ core/sis-feature/src/main/java/org/apache/sis/feature/ core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ core/sis-metadata/src/main/java/org/apache/sis/metadata/ core/sis-metadata/s...

Author: desruisseaux
Date: Wed Jan  4 09:17:26 2017
New Revision: 1777269

URL: http://svn.apache.org/viewvc?rev=1777269&view=rev
Log:
Merge from the JDK8 branch.

Added:
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java
      - copied, changed from r1777268, sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java
    sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/MergerTest.java
      - copied unchanged from r1777268, sis/branches/JDK8/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/MergerTest.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureCatalogBuilder.java
      - copied unchanged from r1777268, sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureCatalogBuilder.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureNaming.java
      - copied, changed from r1777268, sis/branches/JDK8/storage/sis-storage/src/main/java/org/apache/sis/storage/FeatureNaming.java
    sis/branches/JDK7/storage/sis-storage/src/test/java/org/apache/sis/storage/DataStoreMock.java
      - copied unchanged from r1777268, sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/storage/DataStoreMock.java
    sis/branches/JDK7/storage/sis-storage/src/test/java/org/apache/sis/storage/FeatureNamingTest.java
      - copied unchanged from r1777268, sis/branches/JDK8/storage/sis-storage/src/test/java/org/apache/sis/storage/FeatureNamingTest.java
Removed:
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/GenericNameMap.java
    sis/branches/JDK7/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/GenericNameMapTest.java
Modified:
    sis/branches/JDK7/   (props changed)
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/SpecialCases.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
    sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ObjectConverters.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Utilities.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/CheckedContainer.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/iso/AbstractName.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/TestRunner.java
    sis/branches/JDK7/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatReader.java
    sis/branches/JDK7/storage/sis-earth-observation/src/main/java/org/apache/sis/storage/earthobservation/LandsatStore.java
    sis/branches/JDK7/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/FeatureStore.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/MetadataBuilder.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources.properties
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/Resources_fr.properties
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/csv/Store.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/wkt/Store.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/xml/Store.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/IllegalNameException.java
    sis/branches/JDK7/storage/sis-storage/src/test/java/org/apache/sis/test/suite/StorageTestSuite.java

Propchange: sis/branches/JDK7/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan  4 09:17:26 2017
@@ -1,5 +1,5 @@
 /sis/branches/Android:1430670-1480699
 /sis/branches/JDK6:1394913-1508480
-/sis/branches/JDK8:1584960-1776696
+/sis/branches/JDK8:1584960-1777268
 /sis/branches/JDK9:1773327-1773512
 /sis/trunk:1394364-1508466,1519089-1519674

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -105,6 +105,8 @@ import org.opengis.feature.PropertyNotFo
  * @see DefaultAttributeType
  * @see DefaultAssociationRole
  * @see AbstractFeature
+ * @see org.apache.sis.metadata.iso.content.DefaultFeatureTypeInfo
+ * @see org.apache.sis.storage.FeatureNaming
  */
 public class DefaultFeatureType extends AbstractIdentifiedType implements FeatureType {
     /**

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -61,10 +61,10 @@ public final class Features extends Stat
      * An exception is thrown immediately if the given type does not have the expected
      * {@linkplain DefaultAttributeType#getValueClass() value class}.
      *
-     * @param  <V>        The expected value class.
-     * @param  type       The attribute type to cast, or {@code null}.
-     * @param  valueClass The expected value class.
-     * @return The attribute type casted to the given value class, or {@code null} if the given type was null.
+     * @param  <V>         the expected value class.
+     * @param  type        the attribute type to cast, or {@code null}.
+     * @param  valueClass  the expected value class.
+     * @return the attribute type casted to the given value class, or {@code null} if the given type was null.
      * @throws ClassCastException if the given attribute type does not have the expected value class.
      *
      * @category verification
@@ -90,10 +90,10 @@ public final class Features extends Stat
      * An exception is thrown immediately if the given instance does not have the expected
      * {@linkplain DefaultAttributeType#getValueClass() value class}.
      *
-     * @param  <V>        The expected value class.
-     * @param  attribute  The attribute instance to cast, or {@code null}.
-     * @param  valueClass The expected value class.
-     * @return The attribute instance casted to the given value class, or {@code null} if the given instance was null.
+     * @param  <V>         the expected value class.
+     * @param  attribute   the attribute instance to cast, or {@code null}.
+     * @param  valueClass  the expected value class.
+     * @return the attribute instance casted to the given value class, or {@code null} if the given instance was null.
      * @throws ClassCastException if the given attribute instance does not have the expected value class.
      *
      * @category verification

Copied: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java (from r1777268, sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java?p2=sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java&p1=sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java&r1=1777268&r2=1777269&rev=1777269&view=diff
==============================================================================
--- sis/branches/JDK8/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -32,6 +32,9 @@ import org.apache.sis.util.CorruptedObje
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.Classes;
 
+// Branch-dependent imports
+import org.apache.sis.internal.jdk8.JDK8;
+
 
 /**
  * Merges the content of two metadata instances.
@@ -179,7 +182,7 @@ public class Merger {
             final String propertyName = entry.getKey();
             final Object sourceValue  = entry.getValue();
             final Object targetValue  = dryRun ? targetMap.get(propertyName)
-                                               : targetMap.putIfAbsent(propertyName, sourceValue);
+                                               : JDK8.putIfAbsentConservative(targetMap, propertyName, sourceValue);
             if (targetValue != null) {
                 if (targetValue instanceof ModifiableMetadata) {
                     success = merge(sourceValue, (ModifiableMetadata) targetValue, dryRun);

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/Cloner.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -79,8 +79,8 @@ final class Cloner extends org.apache.si
      *   <li>Otherwise, the object is assumed immutable and returned unchanged.</li>
      * </ul>
      *
-     * @param  object The object to convert in an immutable one.
-     * @return A presumed immutable view of the specified object.
+     * @param  object  the object to convert in an immutable one.
+     * @return a presumed immutable view of the specified object.
      */
     @Override
     public Object clone(final Object object) throws CloneNotSupportedException {

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -198,9 +198,9 @@ public class MetadataStandard implements
      * <div class="note"><b>Example:</b>: For the ISO 19115 standard reflected by GeoAPI interfaces,
      * {@code interfacePackage} shall be the {@link org.opengis.metadata} package.</div>
      *
-     * @param citation         Bibliographical reference to the international standard.
-     * @param interfacePackage The root package for metadata interfaces.
-     * @param dependencies     The dependencies to other metadata standards.
+     * @param  citation          bibliographical reference to the international standard.
+     * @param  interfacePackage  the root package for metadata interfaces.
+     * @param  dependencies      the dependencies to other metadata standards.
      */
     public MetadataStandard(final Citation citation, final Package interfacePackage, MetadataStandard... dependencies) {
         ensureNonNull("citation",         citation);
@@ -208,7 +208,7 @@ public class MetadataStandard implements
         ensureNonNull("dependencies",     dependencies);
         this.citation         = citation;
         this.interfacePackage = interfacePackage.getName() + '.';
-        this.accessors        = new ConcurrentHashMap<>(); // Also defined in readObject(\u2026)
+        this.accessors        = new ConcurrentHashMap<>();                          // Also defined in readObject(\u2026)
         if (dependencies.length == 0) {
             this.dependencies = null;
         } else {
@@ -223,15 +223,15 @@ public class MetadataStandard implements
      * Creates a new instance working on implementation of interfaces defined in the
      * specified package. This constructor is used only for the pre-defined constants.
      *
-     * @param citation         Bibliographical reference to the international standard.
-     * @param interfacePackage The root package for metadata interfaces.
-     * @param dependencies     The dependencies to other metadata standards, or {@code null} if none.
+     * @param  citation          bibliographical reference to the international standard.
+     * @param  interfacePackage  the root package for metadata interfaces.
+     * @param  dependencies      the dependencies to other metadata standards, or {@code null} if none.
      */
     MetadataStandard(final String citation, final String interfacePackage, final MetadataStandard[] dependencies) {
         this.citation         = new SimpleCitation(citation);
         this.interfacePackage = interfacePackage;
         this.accessors        = new ConcurrentHashMap<>();
-        this.dependencies     = dependencies; // No clone, since this constructor is for internal use only.
+        this.dependencies     = dependencies;               // No clone, since this constructor is for internal use only.
     }
 
     /**
@@ -239,7 +239,7 @@ public class MetadataStandard implements
      * This method verifies if the class is a member of the package given at construction time or
      * a sub-package. This method does not verify if the type is supported by a dependency.
      *
-     * @param  classname The name of the type to verify.
+     * @param  classname  the name of the type to verify.
      * @return {@code true} if the given type is supported by this standard.
      */
     final boolean isSupported(final String classname) {
@@ -255,8 +255,8 @@ public class MetadataStandard implements
      * <p>The current implementation recognizes only the standards defined by the public static
      * constants defined in this class. A future SIS version may recognize user-defined constants.</p>
      *
-     * @param  type The metadata standard interface, or an implementation class.
-     * @return The metadata standard for the given type, or {@code null} if not found.
+     * @param  type  the metadata standard interface, or an implementation class.
+     * @return the metadata standard for the given type, or {@code null} if not found.
      */
     public static MetadataStandard forClass(final Class<?> type) {
         String classname = type.getName();
@@ -290,7 +290,7 @@ public class MetadataStandard implements
      * Returns a bibliographical reference to the international standard.
      * The default implementation return the citation given at construction time.
      *
-     * @return Bibliographical reference to the international standard.
+     * @return bibliographical reference to the international standard.
      */
     public Citation getCitation() {
         return citation;
@@ -306,12 +306,11 @@ public class MetadataStandard implements
      *   <li>The value of {@link #getImplementation(Class)} after check for non-null value.</li>
      * </ul>
      *
-     * @param  implementation The implementation class.
-     * @param  mandatory Whether this method shall throw an exception or return {@code null}
+     * @param  implementation  the implementation class.
+     * @param  mandatory  whether this method shall throw an exception or return {@code null}
      *         if no accessor is found for the given implementation class.
-     * @return The accessor for the given implementation, or {@code null} if the given class does
-     *         not implement a metadata interface of the expected package and {@code mandatory}
-     *         is {@code false}.
+     * @return the accessor for the given implementation, or {@code null} if the given class does not
+     *         implement a metadata interface of the expected package and {@code mandatory} is {@code false}.
      * @throws ClassCastException if the specified class does not implement a metadata interface
      *         of the expected package and {@code mandatory} is {@code true}.
      */
@@ -330,7 +329,7 @@ public class MetadataStandard implements
          */
         final Class<?> type;
         if (value instanceof Class<?>) {
-            type = (Class<?>) value; // Stored result of previous call to findInterface(\u2026).
+            type = (Class<?>) value;                            // Stored result of previous call to findInterface(\u2026).
             assert type == findInterface(implementation) : implementation;
         } else {
             /*
@@ -345,7 +344,7 @@ public class MetadataStandard implements
                     for (final MetadataStandard dependency : dependencies) {
                         final PropertyAccessor accessor = dependency.getAccessor(implementation, false);
                         if (accessor != null) {
-                            accessors.put(implementation, accessor); // Ok to overwrite existing instance here.
+                            accessors.put(implementation, accessor);        // Ok to overwrite existing instance here.
                             return accessor;
                         }
                     }
@@ -381,7 +380,7 @@ public class MetadataStandard implements
      * If this method returns {@code true}, then invoking {@link #getInterface(Class)} is guaranteed to succeed
      * without throwing an exception.
      *
-     * @param  type The implementation class (can be {@code null}).
+     * @param  type  the implementation class (can be {@code null}).
      * @return {@code true} if the given class is an interface of this standard,
      *         or implements an interface of this standard.
      */
@@ -431,8 +430,8 @@ public class MetadataStandard implements
      *
      * <p>This method ignores dependencies. Fallback on metadata standard dependencies shall be done by the caller.</p>
      *
-     * @param  type The standard interface or the implementation class.
-     * @return The single interface, or {@code null} if none where found.
+     * @param  type  the standard interface or the implementation class.
+     * @return the single interface, or {@code null} if none where found.
      */
     private Class<?> findInterface(final Class<?> type) {
         if (type != null) {
@@ -513,11 +512,10 @@ public class MetadataStandard implements
      * The standard package is usually made of interfaces and code lists only, but this is
      * not verified by this method.</div>
      *
-     * @param  <T>  The compile-time {@code type}.
-     * @param  type The implementation class.
-     * @return The interface implemented by the given implementation class.
-     * @throws ClassCastException if the specified implementation class does
-     *         not implement an interface of this standard.
+     * @param  <T>   the compile-time {@code type}.
+     * @param  type  the implementation class.
+     * @return the interface implemented by the given implementation class.
+     * @throws ClassCastException if the specified implementation class does not implement an interface of this standard.
      *
      * @see AbstractMetadata#getInterface()
      */
@@ -557,9 +555,9 @@ public class MetadataStandard implements
      * The default implementation returns {@code null} if every cases. Subclasses shall
      * override this method in order to map GeoAPI interfaces to their implementation.
      *
-     * @param  <T>  The compile-time {@code type}.
-     * @param  type The interface, typically from the {@code org.opengis.metadata} package.
-     * @return The implementation class, or {@code null} if none.
+     * @param  <T>   the compile-time {@code type}.
+     * @param  type  the interface, typically from the {@code org.opengis.metadata} package.
+     * @return the implementation class, or {@code null} if none.
      */
     public <T> Class<? extends T> getImplementation(final Class<T> type) {
         return null;
@@ -580,7 +578,7 @@ public class MetadataStandard implements
      *   MetadataStandard standard = MetadataStandard.ISO_19115;
      *   Map<String, String> names = standard.asNameMap(Citation.class, UML_IDENTIFIER, JAVABEANS_PROPERTY);
      *   String value = names.get("alternateTitle");
-     *   System.out.println(value); // alternateTitles
+     *   System.out.println(value);                   // alternateTitles
      * }
      * </div>
      *
@@ -588,10 +586,10 @@ public class MetadataStandard implements
      * No matter the key name policy, the {@code key} argument given to any {@link Map} method can be any of the
      * above-cited forms of property names.
      *
-     * @param  type        The interface or implementation class of a metadata.
-     * @param  keyPolicy   Determines the string representation of map keys.
-     * @param  valuePolicy Determines the string representation of map values.
-     * @return The names of all properties defined by the given metadata type.
+     * @param  type         the interface or implementation class of a metadata.
+     * @param  keyPolicy    determines the string representation of map keys.
+     * @param  valuePolicy  determines the string representation of map values.
+     * @return the names of all properties defined by the given metadata type.
      * @throws ClassCastException if the specified interface or implementation class does
      *         not extend or implement a metadata interface of the expected package.
      */
@@ -622,14 +620,14 @@ public class MetadataStandard implements
      *   MetadataStandard  standard = MetadataStandard.ISO_19115;
      *   Map<String,Class<?>> types = standard.asTypeMap(Citation.class, UML_IDENTIFIER, ELEMENT_TYPE);
      *   Class<?> value = types.get("alternateTitle");
-     *   System.out.println(value);  // class org.opengis.util.InternationalString
+     *   System.out.println(value);                       // class org.opengis.util.InternationalString
      * }
      *
-     * @param  type        The interface or implementation class of a metadata.
-     * @param  keyPolicy   Determines the string representation of map keys.
-     * @param  valuePolicy Whether the values shall be property types, the element types
+     * @param  type         the interface or implementation class of a metadata.
+     * @param  keyPolicy    determines the string representation of map keys.
+     * @param  valuePolicy  whether the values shall be property types, the element types
      *         (same as property types except for collections) or the declaring interface or class.
-     * @return The types or declaring type of all properties defined in the given metadata type.
+     * @return the types or declaring type of all properties defined in the given metadata type.
      * @throws ClassCastException if the specified interface or implementation class does
      *         not extend or implement a metadata interface of the expected package.
      */
@@ -683,11 +681,10 @@ public class MetadataStandard implements
      *   <li>{@link org.apache.sis.measure.NumberRange} if the valid values are constrained to some specific range.</li>
      * </ul>
      *
-     * @param  type      The metadata interface or implementation class.
-     * @param  keyPolicy Determines the string representation of map keys.
-     * @return Information about all properties defined in the given metadata type.
-     * @throws ClassCastException if the given type doesn't implement a metadata
-     *         interface of the expected package.
+     * @param  type       the metadata interface or implementation class.
+     * @param  keyPolicy  determines the string representation of map keys.
+     * @return information about all properties defined in the given metadata type.
+     * @throws ClassCastException if the given type does not implement a metadata interface of the expected package.
      *
      * @see org.apache.sis.metadata.iso.DefaultExtendedElementInformation
      */
@@ -736,13 +733,11 @@ public class MetadataStandard implements
      * values, then make sure that the given value is a collection when the associated metadata property expects
      * such collection.
      *
-     * @param  metadata The metadata object to view as a map.
-     * @param  keyPolicy Determines the string representation of map keys.
-     * @param  valuePolicy Whether the entries having null value or empty collection shall be
-     *         included in the map.
-     * @return A map view over the metadata object.
-     * @throws ClassCastException if the metadata object doesn't implement a metadata
-     *         interface of the expected package.
+     * @param  metadata     the metadata object to view as a map.
+     * @param  keyPolicy    determines the string representation of map keys.
+     * @param  valuePolicy  whether the entries having null value or empty collection shall be included in the map.
+     * @return a map view over the metadata object.
+     * @throws ClassCastException if the metadata object does not implement a metadata interface of the expected package.
      *
      * @see AbstractMetadata#asMap()
      */
@@ -810,12 +805,10 @@ public class MetadataStandard implements
      * Note that whether the child appears as effectively removed from the node or just cleared
      * (i.e. associated to a null value) depends on the {@code valuePolicy} argument.
      *
-     * @param  metadata The metadata object to view as a tree table.
-     * @param  valuePolicy Whether the property having null value or empty collection shall be
-     *         included in the tree.
-     * @return A tree table representation of the specified metadata.
-     * @throws ClassCastException if the metadata object doesn't implement a metadata
-     *         interface of the expected package.
+     * @param  metadata     the metadata object to view as a tree table.
+     * @param  valuePolicy  whether the property having null value or empty collection shall be included in the tree.
+     * @return a tree table representation of the specified metadata.
+     * @throws ClassCastException if the metadata object does not implement a metadata interface of the expected package.
      *
      * @see AbstractMetadata#asTreeTable()
      */
@@ -854,12 +847,12 @@ public class MetadataStandard implements
      * delegate their work to this {@code standard.equals(\u2026)} method, as {@link AbstractMetadata} does.
      * In the later case, the final result is a deep comparison.
      *
-     * @param metadata1 The first metadata object to compare.
-     * @param metadata2 The second metadata object to compare.
-     * @param mode      The strictness level of the comparison.
+     * @param  metadata1  the first metadata object to compare.
+     * @param  metadata2  the second metadata object to compare.
+     * @param  mode       the strictness level of the comparison.
      * @return {@code true} if the given metadata objects are equals.
-     * @throws ClassCastException if at least one metadata object don't
-     *         implements a metadata interface of the expected package.
+     * @throws ClassCastException if at least one metadata object does not
+     *         implement a metadata interface of the expected package.
      *
      * @see AbstractMetadata#equals(Object, ComparisonMode)
      */
@@ -925,10 +918,9 @@ public class MetadataStandard implements
      * This is a similar contract than {@link java.util.Set#hashCode()} (except for the interface)
      * and ensures that the hash code value is insensitive to the ordering of properties.
      *
-     * @param  metadata The metadata object to compute hash code.
-     * @return A hash code value for the specified metadata, or 0 if the given metadata is null.
-     * @throws ClassCastException if the metadata object doesn't implement a metadata
-     *         interface of the expected package.
+     * @param  metadata  the metadata object to compute hash code.
+     * @return a hash code value for the specified metadata, or 0 if the given metadata is null.
+     * @throws ClassCastException if the metadata object does not implement a metadata interface of the expected package.
      *
      * @see AbstractMetadata#hashCode()
      */
@@ -977,16 +969,16 @@ public class MetadataStandard implements
             field.setAccessible(true);
             field.set(this, new ConcurrentHashMap<>());
         } catch (ReflectiveOperationException e) {
-            throw new AssertionError(e); // Should never happen (tested by MetadataStandardTest).
+            throw new AssertionError(e);                // Should never happen (tested by MetadataStandardTest).
         }
     }
 
     /**
      * Invoked during deserialization for restoring the transient fields.
      *
-     * @param  in The input stream from which to deserialize a metadata standard.
-     * @throws IOException If an I/O error occurred while reading or if the stream contains invalid data.
-     * @throws ClassNotFoundException If the class serialized on the stream is not on the classpath.
+     * @param  in  the input stream from which to deserialize a metadata standard.
+     * @throws IOException if an I/O error occurred while reading or if the stream contains invalid data.
+     * @throws ClassNotFoundException if the class serialized on the stream is not on the classpath.
      */
     private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
         in.defaultReadObject();

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyInformation.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -117,13 +117,13 @@ final class PropertyInformation<E> exten
     /**
      * Creates a new {@code PropertyInformation} instance from the annotations on the given getter method.
      *
-     * @param  standard    The international standard that define the property, or {@code null} if none.
-     * @param  property    The property name as defined by the international {@code standard}.
-     * @param  getter      The getter method defined in the interface.
-     * @param  elementType The value type, either the method return type if not a collection,
-     *                     or the type of elements in the collection otherwise.
-     * @param  range       The range of valid values, or {@code null} if none. This information is associated to the
-     *                     implementation method rather than the interface one, because it is specific to SIS.
+     * @param  standard     the international standard that define the property, or {@code null} if none.
+     * @param  property     the property name as defined by the international {@code standard}.
+     * @param  getter       the getter method defined in the interface.
+     * @param  elementType  the value type, either the method return type if not a collection,
+     *                      or the type of elements in the collection otherwise.
+     * @param  range        the range of valid values, or {@code null} if none. This information is associated to the
+     *                      implementation method rather than the interface one, because it is specific to SIS.
      */
     @SuppressWarnings({"unchecked","rawtypes"})
     PropertyInformation(final Citation standard, final String property, final Method getter,
@@ -348,7 +348,7 @@ final class PropertyInformation<E> exten
     /**
      * Compares the given object with this element information for equality.
      *
-     * @param  obj The object to compare with this element information for equality.
+     * @param  obj  the object to compare with this element information for equality.
      * @return {@code true} if both objects are equal.
      */
     @Override
@@ -378,8 +378,7 @@ final class PropertyInformation<E> exten
     }
 
     /**
-     * Invoked by {@link #toString()} in order to append additional information
-     * after the identifier.
+     * Invoked by {@link #toString()} in order to append additional information after the identifier.
      */
     @Override
     protected void appendToString(final StringBuilder buffer) {

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/SpecialCases.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/SpecialCases.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/SpecialCases.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/SpecialCases.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -43,10 +43,10 @@ final class SpecialCases extends Propert
     /**
      * Creates a new property accessor for the specified metadata implementation.
      *
-     * @param  standard The standard which define the {@code type} interface.
-     * @param  type The interface implemented by the metadata, which must be
-     *         the value returned by {@link #getStandardType(Class, String)}.
-     * @param  implementation The class of metadata implementations, or {@code type} if none.
+     * @param  standard        the standard which define the {@code type} interface.
+     * @param  type            the interface implemented by the metadata, which must be
+     *                         the value returned by {@link #getStandardType(Class, String)}.
+     * @param  implementation  the class of metadata implementations, or {@code type} if none.
      */
     SpecialCases(final Citation standard, final Class<?> type, final Class<?> implementation) {
         super(standard, type, implementation);
@@ -60,7 +60,7 @@ final class SpecialCases extends Propert
     /**
      * Returns {@code true} if the given class is a special case handled by the {@link SpecialCases} class.
      *
-     * @param  type The interface implemented by the metadata.
+     * @param  type  the interface implemented by the metadata.
      * @return {@code true} if the given type is a special case.
      */
     static boolean isSpecialCase(final Class<?> type) {

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -144,8 +144,8 @@ class TreeNode implements Node {
     /**
      * Creates the root node of a new metadata tree table.
      *
-     * @param  table    The table which is creating this root node.
-     * @param  metadata The root metadata object (can not be null).
+     * @param  table     the table which is creating this root node.
+     * @param  metadata  the root metadata object (can not be null).
      */
     TreeNode(final TreeTableView table, final Object metadata) {
         this.table    = table;
@@ -158,8 +158,8 @@ class TreeNode implements Node {
      * This constructor is for the {@link Element} subclass only.
      * Callers must invoke {@link #init()} after construction.
      *
-     * @param  parent   The parent of this node.
-     * @param  metadata The metadata object for which this node will be a value.
+     * @param  parent    the parent of this node.
+     * @param  metadata  the metadata object for which this node will be a value.
      */
     TreeNode(final TreeNode parent, final Object metadata) {
         this.table    = parent.table;
@@ -241,7 +241,7 @@ class TreeNode implements Node {
     /**
      * Sets the metadata value for this node. Subclasses must override this method.
      *
-     * @throws UnsupportedOperationException If the metadata value is not writable.
+     * @throws UnsupportedOperationException if the metadata value is not writable.
      */
     void setUserObject(final Object value) throws UnsupportedOperationException {
         throw new UnsupportedOperationException(unmodifiableCellValue(TableColumn.VALUE));
@@ -286,10 +286,10 @@ class TreeNode implements Node {
          * Creates a new child for a property of the given metadata at the given index.
          * Callers must invoke {@link #init()} after construction.
          *
-         * @param  parent      The parent of this node.
-         * @param  metadata    The metadata object for which this node will be a value.
-         * @param  accessor    Accessor to use for fetching the name, type and value.
-         * @param  indexInData Index to be given to the accessor of fetching the value.
+         * @param  parent       the parent of this node.
+         * @param  metadata     the metadata object for which this node will be a value.
+         * @param  accessor     accessor to use for fetching the name, type and value.
+         * @param  indexInData  index to be given to the accessor of fetching the value.
          */
         Element(final TreeNode parent, final Object metadata,
                 final PropertyAccessor accessor, final int indexInData)
@@ -376,11 +376,11 @@ class TreeNode implements Node {
          * Creates a new node for the given collection element.
          * Callers must invoke {@link #init()} after construction.
          *
-         * @param  parent      The parent of this node.
-         * @param  metadata    The metadata object for which this node will be a value.
-         * @param  accessor    Accessor to use for fetching the name, type and collection.
-         * @param  indexInData Index to be given to the accessor of fetching the collection.
-         * @param  indexInList Index of the element in the collection, in iteration order.
+         * @param  parent       the parent of this node.
+         * @param  metadata     the metadata object for which this node will be a value.
+         * @param  accessor     accessor to use for fetching the name, type and collection.
+         * @param  indexInData  index to be given to the accessor of fetching the collection.
+         * @param  indexInList  index of the element in the collection, in iteration order.
          */
         CollectionElement(final TreeNode parent, final Object metadata,
                 final PropertyAccessor accessor, final int indexInData, final int indexInList)
@@ -520,6 +520,7 @@ class TreeNode implements Node {
      * Only metadata object can have children.
      */
     @Override
+    @SuppressWarnings("ReturnOfCollectionOrArrayField")
     public final Collection<Node> getChildren() {
         /*
          * 'children' is set to LEAF if an only if the node *can not* have children,
@@ -574,7 +575,7 @@ class TreeNode implements Node {
      * Do not keep a reference to the returned node for a long time, since it is only
      * a proxy toward the real node to be created once the identifier is known.
      *
-     * @throws UnsupportedOperationException If this node {@linkplain #isLeaf() is a leaf}.
+     * @throws UnsupportedOperationException if this node {@linkplain #isLeaf() is a leaf}.
      */
     @Override
     public final Node newChild() throws UnsupportedOperationException {
@@ -699,7 +700,7 @@ class TreeNode implements Node {
         if (column == TableColumn.VALUE) {
             if (isLeaf()) {
                 value = cachedValue;
-                cachedValue = null; // Use the cached value only once after iteration.
+                cachedValue = null;                 // Use the cached value only once after iteration.
                 if (value == null) {
                     value = getUserObject();
                 }
@@ -772,8 +773,7 @@ class TreeNode implements Node {
     }
 
     /**
-     * Implementation of {@link #toString()} appending the string representation
-     * in the given buffer.
+     * Implementation of {@link #toString()} appending the string representation in the given buffer.
      */
     final void toString(final StringBuilder buffer) {
         appendIdentifier(buffer.append("Node["));

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -44,6 +44,9 @@ import static org.apache.sis.internal.me
  * @since   0.5
  * @version 0.5
  * @module
+ *
+ * @see org.apache.sis.storage.FeatureNaming
+ * @see org.apache.sis.feature.DefaultFeatureType
  */
 @XmlType(name = "MD_FeatureTypeInfo", propOrder = {
     "featureTypeName",

Modified: sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -52,6 +52,7 @@ import org.junit.BeforeClass;
     org.apache.sis.metadata.MetadataStandardTest.class,
     org.apache.sis.metadata.PrunerTest.class,
     org.apache.sis.metadata.AbstractMetadataTest.class,
+    org.apache.sis.internal.metadata.MergerTest.class,
 
     // XML marshalling.
     org.apache.sis.internal.jaxb.code.EnumMarshallingTest.class,

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/MergedProperties.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -52,8 +52,8 @@ public class MergedProperties extends Ab
     /**
      * Creates a new map which will merge the given properties on the fly.
      *
-     * @param properties The user-supplied properties.
-     * @param defaultProperties Fallback for values not found in {@code properties}.
+     * @param properties         the user-supplied properties.
+     * @param defaultProperties  fallback for values not found in {@code properties}.
      */
     public MergedProperties(final Map<String,?> properties, final Map<String,?> defaultProperties) {
         this.properties = properties;
@@ -64,7 +64,7 @@ public class MergedProperties extends Ab
      * Returns an iterator over the user-supplied properties together with
      * the default properties which were not specified in the user's ones.
      *
-     * @return Iterator over merged properties.
+     * @return iterator over merged properties.
      */
     @Override
     protected EntryIterator<String,Object> entryIterator() {
@@ -81,8 +81,8 @@ public class MergedProperties extends Ab
      * then by looking in the default properties if no value were specified in the user map.
      * If there is no default value, invokes {@link #invisibleEntry(Object)} in last resort.
      *
-     * @param  key The key for which to get the value.
-     * @return The value associated to the given key, or {@code null} if none.
+     * @param  key  the key for which to get the value.
+     * @return the value associated to the given key, or {@code null} if none.
      */
     @Override
     public Object get(final Object key) {
@@ -106,8 +106,8 @@ public class MergedProperties extends Ab
      * of derived or projected CRS (because of the way we implemented derived CRS). But this is somewhat specific to
      * SIS, so we do no want to expose this implementation details.</div>
      *
-     * @param  key The key for which to get the value.
-     * @return The value associated to the given key, or {@code null} if none.
+     * @param  key  the key for which to get the value.
+     * @return the value associated to the given key, or {@code null} if none.
      */
     protected Object invisibleEntry(final Object key) {
         return null;

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -19,6 +19,7 @@ package org.apache.sis.referencing;
 import java.util.Map;
 import java.util.List;
 import java.util.Locale;
+import java.util.Objects;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
@@ -38,9 +39,6 @@ import org.apache.sis.internal.util.Cita
 import org.apache.sis.metadata.iso.ImmutableIdentifier;
 import org.apache.sis.util.ArgumentChecks;
 
-// Branch-dependent imports
-import java.util.Objects;
-
 
 /**
  * An identification of a CRS object which is both a {@link Identifier} and a {@link GenericName}.
@@ -90,6 +88,10 @@ import java.util.Objects;
  * @since   0.4
  * @version 0.7
  * @module
+ *
+ * @see org.apache.sis.metadata.iso.DefaultIdentifier
+ * @see org.apache.sis.util.iso.AbstractName
+ * @see AbstractIdentifiedObject#getName()
  */
 public class NamedIdentifier extends ImmutableIdentifier implements GenericName {
     /**
@@ -117,7 +119,7 @@ public class NamedIdentifier extends Imm
      * {@link #tip()}, {@link #head()}, {@link #scope()} and similar methods will delegate
      * to that name.</p>
      *
-     * @param identifier The identifier to copy.
+     * @param  identifier  the identifier to copy.
      */
     public NamedIdentifier(final Identifier identifier) {
         super(identifier);
@@ -132,7 +134,7 @@ public class NamedIdentifier extends Imm
      * (code, codespace and authority) from the given name. Calls to name-related methods like {@link #tip()},
      * {@link #head()} and {@link #scope()} will delegate to the given name.
      *
-     * @param name The name to wrap.
+     * @param  name  the name to wrap.
      */
     public NamedIdentifier(final GenericName name) {
         super(name instanceof Identifier ? (Identifier) name : new NameToIdentifier(name));
@@ -196,7 +198,7 @@ public class NamedIdentifier extends Imm
      * are optional. If a {@code "name"} property is provided, then calls to name-related methods like
      * {@link #tip()}, {@link #head()} and {@link #scope()} will delegate to the given name.
      *
-     * @param  properties The properties to be given to this identifier.
+     * @param  properties  the properties to be given to this identifier.
      * @throws InvalidParameterValueException if a property has an invalid value.
      * @throws IllegalArgumentException if a property is invalid for some other reason.
      */
@@ -215,17 +217,17 @@ public class NamedIdentifier extends Imm
      * string will be used for the {@link #getName() name} property.</p>
      *
      * @param authority
-     *          Organization or party responsible for definition and maintenance of the code
-     *          space or code, or {@code null} if not available.
+     *          organization or party responsible for definition and maintenance of the code space or code,
+     *          or {@code null} if not available.
      * @param code
-     *          Identifier code or name, optionally from a controlled list or pattern defined by
-     *          the authority. The code can not be null.
+     *          identifier code or name, optionally from a controlled list or pattern defined by the authority.
+     *          The code can not be null.
      */
     public NamedIdentifier(final Citation authority, final CharSequence code) {
         super(authority, Citations.getCodeSpace(authority), toString(code));
         if (code instanceof InternationalString) {
             name = createName(authority, super.getCodeSpace(), code);
-            isNameSupplied = true;      // Because 'code' is an international string.
+            isNameSupplied = true;                              // Because 'code' is an international string.
         }
     }
 
@@ -238,19 +240,19 @@ public class NamedIdentifier extends Imm
      * string will be used for the {@link #getName() name} property.</p>
      *
      * @param authority
-     *          Organization or party responsible for definition and maintenance of the code
-     *          space or code, or {@code null} if not available.
+     *          organization or party responsible for definition and maintenance of the code space or code,
+     *          or {@code null} if not available.
      * @param codeSpace
-     *          Name or identifier of the person or organization responsible for namespace, or
-     *          {@code null} if not available. This is often an abbreviation of the authority name.
+     *          name or identifier of the person or organization responsible for namespace, or {@code null}
+     *          if not available. This is often an abbreviation of the authority name.
      * @param code
-     *          Identifier code or name, optionally from a controlled list or pattern defined by
-     *          a code space. The code can not be null.
+     *          identifier code or name, optionally from a controlled list or pattern defined by a code space.
+     *          The code can not be null.
      * @param version
-     *          The version of the associated code space or code as specified by the code authority,
+     *          the version of the associated code space or code as specified by the code authority,
      *          or {@code null} if none.
      * @param description
-     *          Natural language description of the meaning of the code value, or {@code null} if none.
+     *          natural language description of the meaning of the code value, or {@code null} if none.
      */
     public NamedIdentifier(final Citation authority, final String codeSpace, final CharSequence code,
             final String version, final InternationalString description)
@@ -258,7 +260,7 @@ public class NamedIdentifier extends Imm
         super(authority, codeSpace, toString(code), version, description);
         if (code instanceof InternationalString) {
             name = createName(authority, codeSpace, code);
-            isNameSupplied = true;      // Because 'code' is an international string.
+            isNameSupplied = true;                              // Because 'code' is an international string.
         }
     }
 
@@ -304,10 +306,10 @@ public class NamedIdentifier extends Imm
     /**
      * Constructs a generic name from the specified authority and code.
      *
-     * @param  authority The authority, or {@code null} if none.
-     * @param  codeSpace The code space, or {@code null} if none.
-     * @param  code      The code.
-     * @return A new generic name for the given authority and code.
+     * @param  authority  the authority, or {@code null} if none.
+     * @param  codeSpace  the code space, or {@code null} if none.
+     * @param  code       the code.
+     * @return a new generic name for the given authority and code.
      * @category Generic name
      *
      * @see <a href="https://issues.apache.org/jira/browse/SIS-197">SIS-197</a>
@@ -328,7 +330,7 @@ public class NamedIdentifier extends Imm
      * The last element in the sequence of {@linkplain #getParsedNames() parsed names}.
      * By default, this is the same value than the {@linkplain #getCode() code} provided as a local name.
      *
-     * @return The last element in the list of {@linkplain #getParsedNames() parsed names}.
+     * @return the last element in the list of {@linkplain #getParsedNames() parsed names}.
      *
      * @see #getCode()
      */
@@ -341,7 +343,7 @@ public class NamedIdentifier extends Imm
      * Returns the first element in the sequence of {@linkplain #getParsedNames() parsed names}.
      * By default, this is the same value than the {@linkplain #getCodeSpace() code space} provided as a local name.
      *
-     * @return The first element in the list of {@linkplain #getParsedNames() parsed names}.
+     * @return the first element in the list of {@linkplain #getParsedNames() parsed names}.
      *
      * @see #scope()
      * @see #getCodeSpace()
@@ -358,7 +360,7 @@ public class NamedIdentifier extends Imm
      * @see #head()
      * @see #getAuthority()
      *
-     * @return The scope of this name.
+     * @return the scope of this name.
      */
     @Override
     public NameSpace scope() {
@@ -368,7 +370,7 @@ public class NamedIdentifier extends Imm
     /**
      * Returns the depth of this name within the namespace hierarchy.
      *
-     * @return The depth of this name.
+     * @return the depth of this name.
      */
     @Override
     public int depth() {
@@ -380,7 +382,7 @@ public class NamedIdentifier extends Imm
      * The length of this sequence is the {@linkplain #depth() depth}.
      * It does not include the {@linkplain #scope() scope}.
      *
-     * @return The local names making this generic name, without the {@linkplain #scope() scope}.
+     * @return the local names making this generic name, without the {@linkplain #scope() scope}.
      *         Shall never be {@code null} neither empty.
      */
     @Override
@@ -403,7 +405,7 @@ public class NamedIdentifier extends Imm
     /**
      * Returns a view of this name as a fully-qualified name.
      *
-     * @return The fully-qualified name (never {@code null}).
+     * @return the fully-qualified name (never {@code null}).
      */
     @Override
     public GenericName toFullyQualifiedName() {
@@ -417,7 +419,7 @@ public class NamedIdentifier extends Imm
      * If no international string is available, then this method returns an implementation mapping
      * to {@code toString()} for all locales.
      *
-     * @return A localizable string representation of this name.
+     * @return a localizable string representation of this name.
      */
     @Override
     public InternationalString toInternationalString() {
@@ -429,7 +431,7 @@ public class NamedIdentifier extends Imm
      * is local-independent. It contains all elements listed by {@link #getParsedNames()}
      * separated by a namespace-dependent character (usually {@code :} or {@code /}).
      *
-     * @return A local-independent string representation of this generic name.
+     * @return a local-independent string representation of this generic name.
      *
      * @see IdentifiedObjects#toString(Identifier)
      */
@@ -443,7 +445,7 @@ public class NamedIdentifier extends Imm
      * zero, or a positive integer as this name lexicographically precedes, is equal to,
      * or follows the specified object.
      *
-     * @param object The object to compare with.
+     * @param  object  the object to compare with.
      * @return -1 if this identifier precedes the given object, +1 if it follows it.
      */
     @Override
@@ -454,7 +456,7 @@ public class NamedIdentifier extends Imm
     /**
      * Compares this identifier with the specified object for equality.
      *
-     * @param object The object to compare with this name.
+     * @param  object  the object to compare with this name.
      * @return {@code true} if the given object is equal to this name.
      */
     @Override
@@ -488,8 +490,8 @@ public class NamedIdentifier extends Imm
      * Invoked on serialization for writing the {@linkplain #name} if it was supplied by the user.
      * Otherwise, we will let {@link #getName()} recompute the name only when needed.
      *
-     * @param  out The output stream where to serialize this named identifier.
-     * @throws IOException If an I/O error occurred while writing.
+     * @param  out  the output stream where to serialize this named identifier.
+     * @throws IOException if an I/O error occurred while writing.
      */
     private void writeObject(final ObjectOutputStream out) throws IOException {
         out.defaultWriteObject();
@@ -500,9 +502,9 @@ public class NamedIdentifier extends Imm
      * Invoked on deserialization for reading the name written by {@link #writeObject(ObjectOutputStream)},
      * if any.
      *
-     * @param  in The input stream from which to deserialize a named identifier.
-     * @throws IOException If an I/O error occurred while reading or if the stream contains invalid data.
-     * @throws ClassNotFoundException If the class serialized on the stream is not on the classpath.
+     * @param  in  the input stream from which to deserialize a named identifier.
+     * @throws IOException if an I/O error occurred while reading or if the stream contains invalid data.
+     * @throws ClassNotFoundException if the class serialized on the stream is not on the classpath.
      */
     private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException {
         in.defaultReadObject();

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/jdk8/JDK8.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -278,6 +278,28 @@ public final class JDK8 {
     }
 
     /**
+     * Same as {@link #putIfAbsent(Map, Object, Object)} but using a more conservative strategy
+     * (actually the same one than the default JDK8 implementation). This method is preferred
+     * when the {@code put(\u2026)} operation may have significant side-effect.
+     *
+     * @param  <K>    the type of keys.
+     * @param  <V>    the type of values.
+     * @param  map    the map where to store the value.
+     * @param  key    the key for the value to store.
+     * @param  value  the value to store.
+     * @return the previous value, or {@code null} if none.
+     *
+     * @since 0.8
+     */
+    public static <K,V> V putIfAbsentConservative(final Map<K,V> map, final K key, final V value) {
+        V previous = map.get(key);
+        if (previous == null) {
+            previous = map.put(key, value);
+        }
+        return previous;
+    }
+
+    /**
      * Removes the entry for the given key, provided that it is currently mapped to the given value.
      *
      * @param  <K>    the type of keys.

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ArgumentChecks.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -169,10 +169,10 @@ public final class ArgumentChecks extend
      * If this method does not thrown an exception, then the value can be casted to the class
      * represented by {@code expectedType} without throwing a {@link ClassCastException}.
      *
-     * @param  name  the name of the argument to be checked, used only if an exception is thrown.
-     *         Can be {@code null} if the name is unknown.
-     * @param  expectedType the expected type (class or interface).
-     * @param  value  the value to check, or {@code null}.
+     * @param  name          the name of the argument to be checked, used only if an exception is thrown.
+     *                       Can be {@code null} if the name is unknown.
+     * @param  expectedType  the expected type (class or interface).
+     * @param  value         the value to check, or {@code null}.
      * @throws IllegalArgumentException if {@code value} is non-null and is not assignable to the given type.
      *
      * @see org.apache.sis.util.collection.Containers#property(Map, Object, Class)
@@ -204,8 +204,7 @@ public final class ArgumentChecks extend
      *
      * @param  upper  the maximal index value, exclusive.
      * @param  index  the index to check.
-     * @throws IndexOutOfBoundsException if the given index is negative or not lower than the
-     *         given upper value.
+     * @throws IndexOutOfBoundsException if the given index is negative or not lower than the given upper value.
      *
      * @see #ensurePositive(String, int)
      */

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ObjectConverters.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ObjectConverters.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ObjectConverters.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/ObjectConverters.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -75,9 +75,9 @@ public final class ObjectConverters exte
     /**
      * Returns an identity converter for objects of the given type.
      *
-     * @param  <T>  The object type.
-     * @param  type The object type.
-     * @return An identity converter for objects of the given type.
+     * @param  <T>   the object type.
+     * @param  type  the object type.
+     * @return an identity converter for objects of the given type.
      */
     public static <T> ObjectConverter<T,T> identity(final Class<T> type) {
         ArgumentChecks.ensureNonNull("type", type);
@@ -87,11 +87,11 @@ public final class ObjectConverters exte
     /**
      * Returns a converter for the specified source and target classes.
      *
-     * @param  <S> The source class.
-     * @param  <T> The target class.
-     * @param  source The source class.
-     * @param  target The target class, or {@code Object.class} for any.
-     * @return The converter from the specified source class to the target class.
+     * @param  <S>     the source class.
+     * @param  <T>     the target class.
+     * @param  source  the source class.
+     * @param  target  the target class, or {@code Object.class} for any.
+     * @return the converter from the specified source class to the target class.
      * @throws UnconvertibleObjectException if no converter is found.
      */
     public static <S,T> ObjectConverter<? super S, ? extends T> find(final Class<S> source, final Class<T> target)
@@ -108,10 +108,10 @@ public final class ObjectConverters exte
      * consider invoking {@link #find(Class, Class)} instead in order to reuse the same converter
      * for all values to convert.
      *
-     * @param  <T>    The type of the {@code target} class.
-     * @param  value  The value to convert, or {@code null}.
-     * @param  target The target class.
-     * @return The converted value (may be {@code null}).
+     * @param  <T>     the type of the {@code target} class.
+     * @param  value   the value to convert, or {@code null}.
+     * @param  target  the target class.
+     * @return the converted value (may be {@code null}).
      * @throws UnconvertibleObjectException if the given value can not be converted.
      */
     @SuppressWarnings({"unchecked","rawtypes"})
@@ -132,13 +132,12 @@ public final class ObjectConverters exte
      * {@link Containers#derivedSet Containers.derivedSet(\u2026)}.
      * See the javadoc of the above method for more information.
      *
-     * @param  <S>       The type of elements in the storage (original) set.
-     * @param  <E>       The type of elements in the derived set.
-     * @param  storage   The storage set containing the original elements, or {@code null}.
-     * @param  converter The converter from the elements in the storage set to the elements
-     *                   in the derived set.
-     * @return A view over the {@code storage} set containing all elements converted by the given
-     *         converter, or {@code null} if {@code storage} was null.
+     * @param  <S>        the type of elements in the storage (original) set.
+     * @param  <E>        the type of elements in the derived set.
+     * @param  storage    the storage set containing the original elements, or {@code null}.
+     * @param  converter  the converter from the elements in the storage set to the elements in the derived set.
+     * @return a view over the {@code storage} set containing all elements converted by the given converter, or
+     *         {@code null} if {@code storage} was null.
      *
      * @see Containers#derivedSet(Set, ObjectConverter)
      */
@@ -155,15 +154,15 @@ public final class ObjectConverters exte
      * {@link Containers#derivedMap Containers.derivedMap(\u2026)}.
      * See the javadoc of the above method for more information.
      *
-     * @param <SK>         The type of keys   in the storage map.
-     * @param <SV>         The type of values in the storage map.
-     * @param <K>          The type of keys   in the derived map.
-     * @param <V>          The type of values in the derived map.
-     * @param storage      The storage map containing the original entries, or {@code null}.
-     * @param keyConverter The converter from the keys in the storage map to the keys in the derived map.
-     * @param valueConverter The converter from the values in the storage map to the values in the derived map.
-     * @return A view over the {@code storage} map containing all entries converted by the given
-     *         converters, or {@code null} if {@code storage} was null.
+     * @param  <SK>            the type of keys   in the storage map.
+     * @param  <SV>            the type of values in the storage map.
+     * @param  <K>             the type of keys   in the derived map.
+     * @param  <V>             the type of values in the derived map.
+     * @param  storage         the storage map containing the original entries, or {@code null}.
+     * @param  keyConverter    the converter from the keys in the storage map to the keys in the derived map.
+     * @param  valueConverter  the converter from the values in the storage map to the values in the derived map.
+     * @return a view over the {@code storage} map containing all entries converted by the given converters, or
+     *         {@code null} if {@code storage} was null.
      *
      * @see Containers#derivedMap(Map, ObjectConverter, ObjectConverter)
      */
@@ -183,13 +182,13 @@ public final class ObjectConverters exte
      * {@link Containers#derivedMap Containers.derivedMap(\u2026)}.
      * See the javadoc of the above method for more information.
      *
-     * @param <SK>         The type of keys   in the storage map.
-     * @param <K>          The type of keys   in the derived map.
-     * @param <V>          The type of values in the storage and derived map.
-     * @param storage      The storage map containing the original entries, or {@code null}.
-     * @param keyConverter The converter from the keys in the storage map to the keys in the derived map.
-     * @param valueType    The type of values in the storage and derived map.
-     * @return A view over the {@code storage} map containing all entries with the keys converted
+     * @param  <SK>          the type of keys   in the storage map.
+     * @param  <K>           the type of keys   in the derived map.
+     * @param  <V>           the type of values in the storage and derived map.
+     * @param  storage       the storage map containing the original entries, or {@code null}.
+     * @param  keyConverter  the converter from the keys in the storage map to the keys in the derived map.
+     * @param  valueType     the type of values in the storage and derived map.
+     * @return a view over the {@code storage} map containing all entries with the keys converted
      *         by the given converter, or {@code null} if {@code storage} was null.
      *
      * @see Containers#derivedMap(Map, ObjectConverter, ObjectConverter)
@@ -211,14 +210,14 @@ public final class ObjectConverters exte
      * {@link Containers#derivedMap Containers.derivedMap(\u2026)}.
      * See the javadoc of the above method for more information.
      *
-     * @param <K>          The type of keys in the storage and derived map.
-     * @param <SV>         The type of values in the storage map.
-     * @param <V>          The type of values in the derived map.
-     * @param storage      The storage map containing the original entries, or {@code null}.
-     * @param keyType      The type of keys in the storage and derived map.
-     * @param valueConverter The converter from the values in the storage map to the values in the derived map.
-     * @return A view over the {@code storage} map containing all entries with the values converted
-     *         by the given converter, or {@code null} if {@code storage} was null.
+     * @param  <K>             the type of keys in the storage and derived map.
+     * @param  <SV>            the type of values in the storage map.
+     * @param  <V>             the type of values in the derived map.
+     * @param  storage         the storage map containing the original entries, or {@code null}.
+     * @param  keyType         the type of keys in the storage and derived map.
+     * @param  valueConverter  the converter from the values in the storage map to the values in the derived map.
+     * @return a view over the {@code storage} map containing all entries with the values converted by the given
+     *         converter, or {@code null} if {@code storage} was null.
      *
      * @see Containers#derivedMap(Map, ObjectConverter, ObjectConverter)
      */

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Utilities.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Utilities.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Utilities.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Utilities.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -29,7 +29,7 @@ import org.apache.sis.util.collection.Ch
 /**
  * Static methods for object comparisons in different ways (deeply, approximatively, <i>etc</i>).
  *
- * @author Martin Desruisseaux (IRD, Geomatys)
+ * @author  Martin Desruisseaux (IRD, Geomatys)
  * @since   0.3
  * @version 0.3
  * @module
@@ -220,8 +220,7 @@ public final class Utilities extends Sta
     }
 
     /**
-     * Compares two collections. Order are significant, unless both collections implement the
-     * {@link Set} interface.
+     * Compares two collections. Order are significant, unless both collections implement the {@link Set} interface.
      */
     private static boolean equals(final Iterable<?> object1, final Iterable<?> object2, final ComparisonMode mode) {
         final Iterator<?> it1 = object1.iterator();
@@ -284,7 +283,7 @@ public final class Utilities extends Sta
      * Returns an assertion error message for mismatched types.
      *
      * @param  expected  the expected type.
-     * @param  actual  the actual object (not its type).
+     * @param  actual    the actual object (not its type).
      * @return the error message to use in assertions.
      */
     private static String mismatchedType(final Class<?> expected, final Object actual) {

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/CheckedContainer.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/CheckedContainer.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/CheckedContainer.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/CheckedContainer.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -16,12 +16,14 @@
  */
 package org.apache.sis.util.collection;
 
+import java.util.Collection;
+
 
 /**
  * A container that ensures that all elements are assignable to a given base type.
- * Checked containers are usually {@link java.util.Collection}, but not always.
+ * Checked containers are usually {@link Collection}, but not always.
  *
- * @param <E> The base type of elements in the container.
+ * @param  <E>  the base type of elements in the container.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @since   0.3
@@ -32,7 +34,7 @@ public interface CheckedContainer<E> {
     /**
      * Returns the base type of all elements in this container.
      *
-     * @return The element type.
+     * @return the element type.
      */
     Class<E> getElementType();
 }

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java?rev=1777269&r1=1777268&r2=1777269&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/collection/Containers.java [UTF-8] Wed Jan  4 09:17:26 2017
@@ -54,7 +54,7 @@ public final class Containers extends St
      * pattern. In such cases, null collections (i.e. collections not yet instantiated) are typically
      * considered as {@linkplain Collection#isEmpty() empty}.</p>
      *
-     * @param collection The collection to test, or {@code null}.
+     * @param  collection the collection to test, or {@code null}.
      * @return {@code true} if the given collection is null or empty, or {@code false} otherwise.
      */
     public static boolean isNullOrEmpty(final Collection<?> collection) {
@@ -70,7 +70,7 @@ public final class Containers extends St
      * pattern. In such cases, null maps (i.e. maps not yet instantiated) are typically considered
      * as {@linkplain Map#isEmpty() empty}.</p>
      *
-     * @param map The map to test, or {@code null}.
+     * @param  map  the map to test, or {@code null}.
      * @return {@code true} if the given map is null or empty, or {@code false} otherwise.
      */
     public static boolean isNullOrEmpty(final Map<?,?> map) {
@@ -87,9 +87,9 @@ public final class Containers extends St
      * Because arrays in the Java language are covariant (at the contrary of collections),
      * the list type have to be {@code <? extends E>} instead than {@code <E>}.</p>
      *
-     * @param  <E> The base type of elements in the list.
-     * @param  array The array to wrap, or {@code null} if none.
-     * @return The given array wrapped in an unmodifiable list, or {@code null} if the given array was null.
+     * @param  <E>    the base type of elements in the list.
+     * @param  array  the array to wrap, or {@code null} if none.
+     * @return the given array wrapped in an unmodifiable list, or {@code null} if the given array was null.
      *
      * @see java.util.Arrays#asList(Object[])
      */
@@ -109,12 +109,12 @@ public final class Containers extends St
      * Because arrays in the Java language are covariant (at the contrary of collections),
      * the list type have to be {@code <? extends E>} instead than {@code <E>}.</p>
      *
-     * @param  <E>   The type of elements in the list.
-     * @param  array The array to wrap (can not be null).
-     * @param  lower Low endpoint (inclusive) of the sublist.
-     * @param  upper High endpoint (exclusive) of the sublist.
-     * @return The given array wrapped in an unmodifiable list.
-     * @throws IndexOutOfBoundsException If the lower or upper value are out of bounds.
+     * @param  <E>    the type of elements in the list.
+     * @param  array  the array to wrap (can not be null).
+     * @param  lower  low endpoint (inclusive) of the sublist.
+     * @param  upper  high endpoint (exclusive) of the sublist.
+     * @return the given array wrapped in an unmodifiable list.
+     * @throws IndexOutOfBoundsException if the lower or upper value are out of bounds.
      */
     public static <E> List<? extends E> unmodifiableList(final E[] array, final int lower, final int upper) {
         ArgumentChecks.ensureNonNull("array", array);
@@ -145,11 +145,11 @@ public final class Containers extends St
      * The returned set is not synchronized by itself, but is nevertheless thread-safe if the
      * given set (including its iterator) and converter are thread-safe.</p>
      *
-     * @param  <S>       The type of elements in the storage (original) set.
-     * @param  <E>       The type of elements in the derived set.
-     * @param  storage   The storage set containing the original elements, or {@code null}.
-     * @param  converter The converter from the elements in the storage set to the elements in the derived set.
-     * @return A view over the {@code storage} set containing all elements converted by the given converter,
+     * @param  <S>        the type of elements in the storage (original) set.
+     * @param  <E>        the type of elements in the derived set.
+     * @param  storage    the storage set containing the original elements, or {@code null}.
+     * @param  converter  the converter from the elements in the storage set to the elements in the derived set.
+     * @return a view over the {@code storage} set containing all elements converted by the given converter,
      *         or {@code null} if {@code storage} was null.
      *
      * @see org.apache.sis.util.ObjectConverters#derivedSet(Set, ObjectConverter)
@@ -187,14 +187,14 @@ public final class Containers extends St
      * is not a {@code Collection} sub-type, but the derived map {@linkplain Map#keySet() key set} and
      * {@linkplain Map#entrySet() entry set} do.</p>
      *
-     * @param <SK>         The type of keys   in the storage map.
-     * @param <SV>         The type of values in the storage map.
-     * @param <K>          The type of keys   in the derived map.
-     * @param <V>          The type of values in the derived map.
-     * @param storage      The storage map containing the original entries, or {@code null}.
-     * @param keyConverter The converter from the keys in the storage map to the keys in the derived map.
-     * @param valueConverter The converter from the values in the storage map to the values in the derived map.
-     * @return A view over the {@code storage} map containing all entries converted by the given converters,
+     * @param  <SK>            the type of keys   in the storage map.
+     * @param  <SV>            the type of values in the storage map.
+     * @param  <K>             the type of keys   in the derived map.
+     * @param  <V>             the type of values in the derived map.
+     * @param  storage         the storage map containing the original entries, or {@code null}.
+     * @param  keyConverter    the converter from the keys in the storage map to the keys in the derived map.
+     * @param  valueConverter  the converter from the values in the storage map to the values in the derived map.
+     * @return a view over the {@code storage} map containing all entries converted by the given converters,
      *         or {@code null} if {@code storage} was null.
      *
      * @see org.apache.sis.util.ObjectConverters#derivedMap(Map, ObjectConverter, ObjectConverter)
@@ -224,12 +224,12 @@ public final class Containers extends St
      * kinds, as in the {@link org.apache.sis.referencing.AbstractIdentifiedObject#AbstractIdentifiedObject(Map)
      * AbstractIdentifiedObject} constructor.</p>
      *
-     * @param  <T>        The compile-time value of the {@code type} argument.
-     * @param  properties The map of properties from which to get a value, or {@code null} if none.
-     * @param  key        The key of the property value to return. Can be {@code null} if the map supports null key.
-     * @param  type       The expected type of the property value. Can not be null.
-     * @return The property value for the given key casted to the given type, or {@code null} if none.
-     * @throws IllegalArgumentException If a non-null property value exists for the given key but can
+     * @param  <T>         the compile-time value of the {@code type} argument.
+     * @param  properties  the map of properties from which to get a value, or {@code null} if none.
+     * @param  key         the key of the property value to return. Can be {@code null} if the map supports null key.
+     * @param  type        the expected type of the property value. Can not be null.
+     * @return the property value for the given key casted to the given type, or {@code null} if none.
+     * @throws IllegalArgumentException if a non-null property value exists for the given key but can
      *         not be casted to the given type.
      *
      * @see ArgumentChecks#ensureCanCast(String, Class, Object)
@@ -258,8 +258,8 @@ public final class Containers extends St
      * {@link java.util.HashSet} as well, which are built on top of {@code HashMap}.
      * However it is not needed for {@link java.util.IdentityHashMap}.</p>
      *
-     * @param count The number of elements to be put into the hash map or hash set.
-     * @return The minimal initial capacity to be given to the hash map constructor.
+     * @param  count  the number of elements to be put into the hash map or hash set.
+     * @return the minimal initial capacity to be given to the hash map constructor.
      */
     public static int hashMapCapacity(final int count) {
         int r = count >>> 2;