sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1775003 [1/3] - in /sis/branches/JDK7: ./ core/sis-build-helper/ core/sis-feature/src/main/java/org/apache/sis/feature/ core/sis-feature/src/main/java/org/apache/sis/feature/builder/ core/sis-feature/src/main/java/org/apache/sis/internal/f...
Date Mon, 19 Dec 2016 08:17:04 GMT
Author: desruisseaux
Date: Mon Dec 19 08:17:03 2016
New Revision: 1775003

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

Added:
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/internal/feature/FeatureUtilities.java
      - copied unchanged from r1775000, sis/branches/JDK8/core/sis-feature/src/main/java/org/apache/sis/internal/feature/FeatureUtilities.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/InputFactory.java
      - copied unchanged from r1775000, sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/xml/InputFactory.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/OutputFactory.java
      - copied unchanged from r1775000, sis/branches/JDK8/core/sis-utility/src/main/java/org/apache/sis/xml/OutputFactory.java
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/xml/NamespacesTest.java
      - copied unchanged from r1775000, sis/branches/JDK8/core/sis-utility/src/test/java/org/apache/sis/xml/NamespacesTest.java
Removed:
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/system/XMLInputFactory.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/system/XMLOutputFactory.java
Modified:
    sis/branches/JDK7/   (props changed)
    sis/branches/JDK7/core/sis-build-helper/pom.xml
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/SingletonAttribute.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/StringJoinOperation.java
    sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracy.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultAbsoluteExternalPositionalAccuracy.java
    sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultRelativeInternalPositionalAccuracy.java
    sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/setup/OptionKey.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Version.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/logging/WarningListeners.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/main/java/org/apache/sis/xml/MarshalContext.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/MarshallerPool.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/Namespaces.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/Pooled.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/PooledMarshaller.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/PooledUnmarshaller.java
    sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/xml/XML.java
    sis/branches/JDK7/core/sis-utility/src/test/java/org/apache/sis/test/suite/UtilityTestSuite.java
    sis/branches/JDK7/ide-project/NetBeans/nbproject/cfg_hints.xml
    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/internal/geotiff/Resources.java
    sis/branches/JDK7/storage/sis-geotiff/src/main/java/org/apache/sis/internal/geotiff/Resources.properties
    sis/branches/JDK7/storage/sis-geotiff/src/main/java/org/apache/sis/internal/geotiff/Resources_fr.properties
    sis/branches/JDK7/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/CRSBuilder.java
    sis/branches/JDK7/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStore.java
    sis/branches/JDK7/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/GeoTiffStoreProvider.java
    sis/branches/JDK7/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java
    sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/Decoder.java
    sis/branches/JDK7/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/IOUtilities.java
    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/StorageConnector.java
    sis/branches/JDK7/storage/sis-storage/src/main/java/org/apache/sis/storage/UnsupportedStorageException.java

Propchange: sis/branches/JDK7/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Dec 19 08:17:03 2016
@@ -1,5 +1,5 @@
 /sis/branches/Android:1430670-1480699
 /sis/branches/JDK6:1394913-1508480
-/sis/branches/JDK8:1584960-1773526
+/sis/branches/JDK8:1584960-1775000
 /sis/branches/JDK9:1773327-1773512
 /sis/trunk:1394364-1508466,1519089-1519674

Modified: sis/branches/JDK7/core/sis-build-helper/pom.xml
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-build-helper/pom.xml?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-build-helper/pom.xml (original)
+++ sis/branches/JDK7/core/sis-build-helper/pom.xml Mon Dec 19 08:17:03 2016
@@ -89,7 +89,7 @@ Define Maven Mojos and Javadoc taglets f
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-plugin-plugin</artifactId>
-        <version>3.4</version>
+        <version>3.5</version>
         <executions>
           <execution>
             <id>default-descriptor</id>
@@ -118,7 +118,7 @@ Define Maven Mojos and Javadoc taglets f
     <dependency>
       <groupId>org.apache.maven.plugin-tools</groupId>
       <artifactId>maven-plugin-annotations</artifactId>
-      <version>3.4</version>
+      <version>3.5</version>
       <scope>provided</scope>
     </dependency>
     <dependency>

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -62,9 +62,12 @@ import org.opengis.feature.MultiValuedPr
  *   <li><b>Serialization:</b> serialized objects of this class are not guaranteed to be compatible with future
  *       versions. Serialization should be used only for short term storage or RMI between applications running
  *       the same SIS version.</li>
+ *   <li><b>Cloning:</b> despite providing a public {@link #clone()} method, this base class is <strong>not</strong>
+ *       cloneable by default. Subclasses shall implement the {@link Cloneable} interface themselves if they choose
+ *       to support cloning.</li>
  * </ul>
  *
- * @param <V> The type of attribute values.
+ * @param  <V>  the type of attribute values.
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
@@ -75,7 +78,8 @@ import org.opengis.feature.MultiValuedPr
  * @see AbstractFeature
  * @see DefaultAttributeType
  */
-public abstract class AbstractAttribute<V> extends Field<V> implements Attribute<V>, Cloneable, Serializable {
+@SuppressWarnings("CloneInNonCloneableClass")       // Decision left to subclasses - see javadoc
+public abstract class AbstractAttribute<V> extends Field<V> implements Attribute<V>, Serializable {
     /**
      * For cross-version compatibility.
      */
@@ -478,8 +482,10 @@ public abstract class AbstractAttribute<
     }
 
     /**
-     * Returns a copy of this attribute.
-     * The default implementation returns a <em>shallow</em> copy:
+     * Returns a copy of this attribute if cloning is supported.
+     * The decision to support cloning or not is left to subclasses. If the subclass does not implement
+     * the {@link Cloneable} interface, then this method throws a {@link CloneNotSupportedException}.
+     * Otherwise the default implementation returns a <em>shallow</em> copy of this {@code Attribute}:
      * the attribute {@linkplain #getValue() value} and {@linkplain #characteristics() characteristics}
      * are <strong>not</strong> cloned.
      * However subclasses may choose to do otherwise.

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -20,6 +20,7 @@ import java.util.Arrays;
 import java.util.Set;
 import java.util.Map;
 import java.util.LinkedHashMap;
+import java.util.Objects;
 import org.opengis.util.GenericName;
 import org.opengis.util.FactoryException;
 import org.opengis.geometry.Envelope;
@@ -29,6 +30,7 @@ import org.opengis.referencing.crs.Coord
 import org.opengis.referencing.operation.CoordinateOperation;
 import org.opengis.referencing.operation.TransformException;
 import org.apache.sis.internal.feature.AttributeConvention;
+import org.apache.sis.internal.feature.FeatureUtilities;
 import org.apache.sis.internal.feature.Geometries;
 import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.geometry.Envelopes;
@@ -37,7 +39,6 @@ import org.apache.sis.referencing.CRS;
 import org.apache.sis.util.resources.Errors;
 
 // Branch-dependent imports
-import java.util.Objects;
 import org.opengis.feature.Attribute;
 import org.opengis.feature.AttributeType;
 import org.opengis.feature.Feature;
@@ -81,7 +82,7 @@ final class EnvelopeOperation extends Ab
     /**
      * The parameter descriptor for the "Envelope" operation, which does not take any parameter.
      */
-    private static final ParameterDescriptorGroup EMPTY_PARAMS = LinkOperation.parameters("Envelope", 1);
+    private static final ParameterDescriptorGroup EMPTY_PARAMS = FeatureUtilities.parameters("Envelope");
 
     /**
      * The names of all properties containing a geometry object.
@@ -118,9 +119,9 @@ final class EnvelopeOperation extends Ab
     /**
      * Creates a new operation computing the envelope of features of the given type.
      *
-     * @param identification     the name and other information to be given to this operation.
-     * @param crs                the coordinate reference system of envelopes to computes, or {@code null}.
-     * @param geometryAttributes the operation or attribute type from which to get geometry values.
+     * @param identification      the name and other information to be given to this operation.
+     * @param crs                 the coordinate reference system of envelopes to computes, or {@code null}.
+     * @param geometryAttributes  the operation or attribute type from which to get geometry values.
      */
     EnvelopeOperation(final Map<String,?> identification, CoordinateReferenceSystem crs,
             final PropertyType[] geometryAttributes) throws FactoryException

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/LinkOperation.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -18,15 +18,11 @@ package org.apache.sis.feature;
 
 import java.util.Set;
 import java.util.Map;
-import java.util.HashMap;
 import java.util.Collections;
 import java.io.IOException;
-import org.opengis.metadata.Identifier;
 import org.opengis.parameter.ParameterValueGroup;
-import org.opengis.parameter.ParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
-import org.apache.sis.parameter.DefaultParameterDescriptorGroup;
-import org.apache.sis.metadata.iso.citation.Citations;
+import org.apache.sis.internal.feature.FeatureUtilities;
 import org.apache.sis.util.ArgumentChecks;
 
 // Branch-dependent imports
@@ -42,7 +38,7 @@ import org.opengis.feature.PropertyType;
  *
  * @author  Johann Sorel (Geomatys)
  * @since   0.6
- * @version 0.6
+ * @version 0.8
  * @module
  */
 final class LinkOperation extends AbstractOperation {
@@ -52,28 +48,9 @@ final class LinkOperation extends Abstra
     private static final long serialVersionUID = 765096861589501215L;
 
     /**
-     * Creates a parameter descriptor in the Apache SIS namespace. This convenience method shall
-     * not be in public API, because users should define operations in their own namespace.
-     *
-     * <div class="note"><b>Note:</b>
-     * this method is shared by other operations in this package, but is declared here in order to delay
-     * {@link org.apache.sis.parameter} classes loading until we need to instantiate an operation like this
-     * {@code LinkOperation}. Since {@code LinkOperation} is very light and often used, the cost for other
-     * operations of loading this class is considered negligible.</div>
-     */
-    static ParameterDescriptorGroup parameters(final String name, final int minimumOccurs,
-            final ParameterDescriptor<?>... parameters)
-    {
-        final Map<String,Object> properties = new HashMap<>(4);
-        properties.put(ParameterDescriptorGroup.NAME_KEY, name);
-        properties.put(Identifier.AUTHORITY_KEY, Citations.SIS);
-        return new DefaultParameterDescriptorGroup(properties, minimumOccurs, 1);
-    }
-
-    /**
      * The parameter descriptor for the "Link" operation, which does not take any parameter.
      */
-    private static final ParameterDescriptorGroup EMPTY_PARAMS = parameters("Link", 1);
+    private static final ParameterDescriptorGroup EMPTY_PARAMS = FeatureUtilities.parameters("Link");
 
     /**
      * The type of the result.

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/MultiValuedAttribute.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -41,19 +41,21 @@ import org.opengis.feature.MultiValuedPr
  *   <li><b>Serialization:</b> serialized objects of this class are not guaranteed to be compatible with future
  *       versions. Serialization should be used only for short term storage or RMI between applications running
  *       the same SIS version.</li>
+ *   <li><b>Cloning:</b> this class support <em>shallow</em> cloning only:
+ *       the attribute is cloned, but not the {@linkplain #getValues() value} elements.</li>
  * </ul>
  *
- * @param <V> The type of the attribute values.
+ * @param  <V>  the type of the attribute values.
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.5
- * @version 0.6
+ * @version 0.8
  * @module
  *
  * @see DefaultAttributeType
  */
-final class MultiValuedAttribute<V> extends AbstractAttribute<V> {
+final class MultiValuedAttribute<V> extends AbstractAttribute<V> implements Cloneable {
     /**
      * For cross-version compatibility.
      */

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/SingletonAttribute.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/SingletonAttribute.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/SingletonAttribute.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/SingletonAttribute.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -31,19 +31,22 @@ import org.opengis.feature.AttributeType
  * <ul>
  *   <li><b>Multi-threading:</b> {@code SingletonAttribute} instances are <strong>not</strong> thread-safe.
  *       Synchronization, if needed, shall be done externally by the caller.</li>
+ *   <li><b>Cloning:</b> this class support <em>shallow</em> cloning only:
+ *       the attribute is cloned, but not its {@linkplain #getValue() value}.</li>
  * </ul>
  *
- * @param <V> The type of the attribute value.
+ * @param  <V>  the type of the attribute value.
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.5
- * @version 0.5
+ * @version 0.8
  * @module
  *
  * @see DefaultAttributeType
  */
-final class SingletonAttribute<V> extends AbstractAttribute<V> {
+@SuppressWarnings("CloneableClassWithoutClone")     // Nothing to add compared to subclass.
+final class SingletonAttribute<V> extends AbstractAttribute<V> implements Cloneable {
     /**
      * For cross-version compatibility.
      */
@@ -58,7 +61,7 @@ final class SingletonAttribute<V> extend
      * Creates a new attribute of the given type initialized to the
      * {@linkplain DefaultAttributeType#getDefaultValue() default value}.
      *
-     * @param type Information about the attribute (base Java class, domain of values, <i>etc.</i>).
+     * @param type  information about the attribute (base Java class, domain of values, <i>etc.</i>).
      */
     public SingletonAttribute(final AttributeType<V> type) {
         super(type);
@@ -70,8 +73,8 @@ final class SingletonAttribute<V> extend
      * Creates a new attribute of the given type initialized to the given value.
      * Note that a {@code null} value may not be the same as the default value.
      *
-     * @param type  Information about the attribute (base Java class, domain of values, <i>etc.</i>).
-     * @param value The initial value (may be {@code null}).
+     * @param type   information about the attribute (base Java class, domain of values, <i>etc.</i>).
+     * @param value  the initial value (may be {@code null}).
      */
     SingletonAttribute(final AttributeType<V> type, final Object value) {
         super(type);
@@ -82,7 +85,7 @@ final class SingletonAttribute<V> extend
     /**
      * Returns the attribute value.
      *
-     * @return The attribute value (may be {@code null}).
+     * @return the attribute value (may be {@code null}).
      */
     @Override
     public V getValue() {
@@ -92,7 +95,7 @@ final class SingletonAttribute<V> extend
     /**
      * Sets the attribute value.
      *
-     * @param value The new value.
+     * @param value the new value.
      */
     @Override
     public void setValue(final V value) {
@@ -102,7 +105,7 @@ final class SingletonAttribute<V> extend
     /**
      * Returns a hash code value for this attribute.
      *
-     * @return A hash code value.
+     * @return a hash code value.
      */
     @Override
     public int hashCode() {

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/StringJoinOperation.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/StringJoinOperation.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/StringJoinOperation.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/StringJoinOperation.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -19,11 +19,13 @@ package org.apache.sis.feature;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.Set;
+import java.util.Objects;
 import java.io.IOException;
 import org.opengis.parameter.ParameterDescriptorGroup;
 import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.util.GenericName;
 import org.apache.sis.internal.util.CollectionsExt;
+import org.apache.sis.internal.feature.FeatureUtilities;
 import org.apache.sis.internal.feature.Resources;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.ObjectConverter;
@@ -34,7 +36,6 @@ import org.apache.sis.util.CharSequences
 import org.apache.sis.util.Classes;
 
 // Branch-dependent imports
-import java.util.Objects;
 import org.opengis.feature.AttributeType;
 import org.opengis.feature.Feature;
 import org.opengis.feature.IdentifiedType;
@@ -74,7 +75,7 @@ final class StringJoinOperation extends
     /**
      * The parameter descriptor for the "String join" operation, which does not take any parameter.
      */
-    private static final ParameterDescriptorGroup EMPTY_PARAMS = LinkOperation.parameters("StringJoin", 1);
+    private static final ParameterDescriptorGroup EMPTY_PARAMS = FeatureUtilities.parameters("StringJoin");
 
     /**
      * The name of the properties (attributes of operations producing attributes)

Modified: sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Locale;
 import java.util.Set;
+import java.util.Objects;
 import org.opengis.util.GenericName;
 import org.opengis.util.NameFactory;
 import org.opengis.util.FactoryException;
@@ -38,7 +39,6 @@ import org.apache.sis.util.resources.Err
 import org.apache.sis.util.ArraysExt;
 
 // Branch-dependent imports
-import java.util.Objects;
 import org.apache.sis.internal.jdk8.JDK8;
 import org.opengis.feature.AttributeType;
 import org.opengis.feature.Feature;

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -301,8 +301,8 @@ public class AbstractElement extends ISO
     /**
      * Creates an element initialized to the given result.
      *
-     * @param result The value obtained from applying a data quality measure against a specified
-     *               acceptable conformance quality level.
+     * @param result  the value obtained from applying a data quality measure against a specified
+     *                acceptable conformance quality level.
      */
     public AbstractElement(final Result result) {
         results = singleton(result, Result.class);
@@ -313,7 +313,7 @@ public class AbstractElement extends ISO
      * This is a <cite>shallow</cite> copy constructor, since the other metadata contained in the
      * given object are not recursively copied.
      *
-     * @param object The metadata to copy values from, or {@code null} if none.
+     * @param object  the metadata to copy values from, or {@code null} if none.
      *
      * @see #castOrCopy(Element)
      */
@@ -351,8 +351,8 @@ public class AbstractElement extends ISO
      *       metadata contained in the given object are not recursively copied.</li>
      * </ul>
      *
-     * @param  object The object to get as a SIS implementation, or {@code null} if none.
-     * @return A SIS implementation containing the values of the given object (may be the
+     * @param  object  the object to get as a SIS implementation, or {@code null} if none.
+     * @return a SIS implementation containing the values of the given object (may be the
      *         given object itself), or {@code null} if the argument was null.
      */
     public static AbstractElement castOrCopy(final Element object) {
@@ -384,7 +384,7 @@ public class AbstractElement extends ISO
     /**
      * Returns the name of the test applied to the data.
      *
-     * @return Name of the test applied to the data.
+     * @return name of the test applied to the data.
      */
     @Override
     @XmlElement(name = "nameOfMeasure")
@@ -395,7 +395,7 @@ public class AbstractElement extends ISO
     /**
      * Sets the name of the test applied to the data.
      *
-     * @param newValues The new name of measures.
+     * @param  newValues  the new name of measures.
      */
     public void setNamesOfMeasure(final Collection<? extends InternationalString> newValues) {
         namesOfMeasure = writeCollection(newValues, namesOfMeasure, InternationalString.class);
@@ -404,7 +404,7 @@ public class AbstractElement extends ISO
     /**
      * Returns the code identifying a registered standard procedure, or {@code null} if none.
      *
-     * @return Code identifying a registered standard procedure, or {@code null}.
+     * @return code identifying a registered standard procedure, or {@code null}.
      */
     @Override
     @XmlElement(name = "measureIdentification")
@@ -415,7 +415,7 @@ public class AbstractElement extends ISO
     /**
      * Sets the code identifying a registered standard procedure.
      *
-     * @param newValue The new measure identification.
+     * @param  newValue  the new measure identification.
      */
     public void setMeasureIdentification(final Identifier newValue)  {
         checkWritePermission();
@@ -425,7 +425,7 @@ public class AbstractElement extends ISO
     /**
      * Returns the description of the measure being determined.
      *
-     * @return Description of the measure being determined, or {@code null}.
+     * @return description of the measure being determined, or {@code null}.
      */
     @Override
     @XmlElement(name = "measureDescription")
@@ -436,7 +436,7 @@ public class AbstractElement extends ISO
     /**
      * Sets the description of the measure being determined.
      *
-     * @param newValue The new measure description.
+     * @param  newValue  the new measure description.
      */
     public void setMeasureDescription(final InternationalString newValue)  {
         checkWritePermission();
@@ -446,7 +446,7 @@ public class AbstractElement extends ISO
     /**
      * Returns the type of method used to evaluate quality of the dataset.
      *
-     * @return Type of method used to evaluate quality, or {@code null}.
+     * @return type of method used to evaluate quality, or {@code null}.
      */
     @Override
     @XmlElement(name = "evaluationMethodType")
@@ -457,7 +457,7 @@ public class AbstractElement extends ISO
     /**
      * Sets the type of method used to evaluate quality of the dataset.
      *
-     * @param newValue The new evaluation method type.
+     * @param  newValue  the new evaluation method type.
      */
     public void setEvaluationMethodType(final EvaluationMethodType newValue)  {
         checkWritePermission();
@@ -467,7 +467,7 @@ public class AbstractElement extends ISO
     /**
      * Returns the description of the evaluation method.
      *
-     * @return Description of the evaluation method, or {@code null}.
+     * @return description of the evaluation method, or {@code null}.
      */
     @Override
     @XmlElement(name = "evaluationMethodDescription")
@@ -478,7 +478,7 @@ public class AbstractElement extends ISO
     /**
      * Sets the description of the evaluation method.
      *
-     * @param newValue The new evaluation method description.
+     * @param  newValue  the new evaluation method description.
      */
     public void setEvaluationMethodDescription(final InternationalString newValue)  {
         checkWritePermission();
@@ -488,7 +488,7 @@ public class AbstractElement extends ISO
     /**
      * Returns the reference to the procedure information, or {@code null} if none.
      *
-     * @return Reference to the procedure information, or {@code null}.
+     * @return reference to the procedure information, or {@code null}.
      */
     @Override
     @XmlElement(name = "evaluationProcedure")
@@ -499,7 +499,7 @@ public class AbstractElement extends ISO
     /**
      * Sets the reference to the procedure information.
      *
-     * @param newValue The new evaluation procedure.
+     * @param  newValue  the new evaluation procedure.
      */
     public void setEvaluationProcedure(final Citation newValue) {
         checkWritePermission();
@@ -511,7 +511,7 @@ public class AbstractElement extends ISO
      * The collection size is 1 for a single date, or 2 for a range.
      * Returns an empty collection if this information is not available.
      *
-     * @return Date or range of dates on which a data quality measure was applied.
+     * @return date or range of dates on which a data quality measure was applied.
      */
     @Override
     @XmlElement(name = "dateTime")
@@ -530,7 +530,7 @@ public class AbstractElement extends ISO
      * Sets the date or range of dates on which a data quality measure was applied.
      * The collection size is 1 for a single date, or 2 for a range.
      *
-     * @param newValues The new dates, or {@code null}.
+     * @param  newValues  the new dates, or {@code null}.
      */
     public void setDates(final Collection<? extends Date> newValues) {
         checkWritePermission();
@@ -559,7 +559,7 @@ public class AbstractElement extends ISO
      * the out come of evaluating the obtained value (or set of values) against a specified
      * acceptable conformance quality level.
      *
-     * @return Set of values obtained from applying a data quality measure.
+     * @return set of values obtained from applying a data quality measure.
      */
     @Override
     @XmlElement(name = "result", required = true)
@@ -572,7 +572,7 @@ public class AbstractElement extends ISO
      * the out come of evaluating the obtained value (or set of values) against a specified
      * acceptable conformance quality level.
      *
-     * @param newValues The new results.
+     * @param  newValues  the new results.
      */
     public void setResults(final Collection<? extends Result> newValues) {
         results = writeCollection(newValues, results, Result.class);

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracy.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracy.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracy.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractPositionalAccuracy.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -66,8 +66,8 @@ public class AbstractPositionalAccuracy
     /**
      * Creates an positional accuracy initialized to the given result.
      *
-     * @param result The value obtained from applying a data quality measure against a specified
-     *               acceptable conformance quality level.
+     * @param result  the value obtained from applying a data quality measure against a specified
+     *                acceptable conformance quality level.
      */
     public AbstractPositionalAccuracy(final Result result) {
         super(result);
@@ -78,7 +78,7 @@ public class AbstractPositionalAccuracy
      * This is a <cite>shallow</cite> copy constructor, since the other metadata contained in the
      * given object are not recursively copied.
      *
-     * @param object The metadata to copy values from, or {@code null} if none.
+     * @param object  the metadata to copy values from, or {@code null} if none.
      *
      * @see #castOrCopy(PositionalAccuracy)
      */
@@ -105,8 +105,8 @@ public class AbstractPositionalAccuracy
      *       metadata contained in the given object are not recursively copied.</li>
      * </ul>
      *
-     * @param  object The object to get as a SIS implementation, or {@code null} if none.
-     * @return A SIS implementation containing the values of the given object (may be the
+     * @param  object  the object to get as a SIS implementation, or {@code null} if none.
+     * @return a SIS implementation containing the values of the given object (may be the
      *         given object itself), or {@code null} if the argument was null.
      */
     public static AbstractPositionalAccuracy castOrCopy(final PositionalAccuracy object) {

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultAbsoluteExternalPositionalAccuracy.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultAbsoluteExternalPositionalAccuracy.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultAbsoluteExternalPositionalAccuracy.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultAbsoluteExternalPositionalAccuracy.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -59,8 +59,8 @@ public class DefaultAbsoluteExternalPosi
     /**
      * Creates an positional accuracy initialized to the given result.
      *
-     * @param result The value obtained from applying a data quality measure against a specified
-     *               acceptable conformance quality level.
+     * @param result  the value obtained from applying a data quality measure against a specified
+     *                acceptable conformance quality level.
      */
     public DefaultAbsoluteExternalPositionalAccuracy(final Result result) {
         super(result);
@@ -71,7 +71,7 @@ public class DefaultAbsoluteExternalPosi
      * This is a <cite>shallow</cite> copy constructor, since the other metadata contained in the
      * given object are not recursively copied.
      *
-     * @param object The metadata to copy values from, or {@code null} if none.
+     * @param  object  the metadata to copy values from, or {@code null} if none.
      *
      * @see #castOrCopy(AbsoluteExternalPositionalAccuracy)
      */
@@ -93,8 +93,8 @@ public class DefaultAbsoluteExternalPosi
      *       metadata contained in the given object are not recursively copied.</li>
      * </ul>
      *
-     * @param  object The object to get as a SIS implementation, or {@code null} if none.
-     * @return A SIS implementation containing the values of the given object (may be the
+     * @param  object  the object to get as a SIS implementation, or {@code null} if none.
+     * @return a SIS implementation containing the values of the given object (may be the
      *         given object itself), or {@code null} if the argument was null.
      */
     public static DefaultAbsoluteExternalPositionalAccuracy castOrCopy(final AbsoluteExternalPositionalAccuracy object) {

Modified: sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultRelativeInternalPositionalAccuracy.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultRelativeInternalPositionalAccuracy.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultRelativeInternalPositionalAccuracy.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultRelativeInternalPositionalAccuracy.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -61,7 +61,7 @@ public class DefaultRelativeInternalPosi
      * This is a <cite>shallow</cite> copy constructor, since the other metadata contained in the
      * given object are not recursively copied.
      *
-     * @param object The metadata to copy values from, or {@code null} if none.
+     * @param object  the metadata to copy values from, or {@code null} if none.
      *
      * @see #castOrCopy(RelativeInternalPositionalAccuracy)
      */
@@ -83,8 +83,8 @@ public class DefaultRelativeInternalPosi
      *       metadata contained in the given object are not recursively copied.</li>
      * </ul>
      *
-     * @param  object The object to get as a SIS implementation, or {@code null} if none.
-     * @return A SIS implementation containing the values of the given object (may be the
+     * @param  object  the object to get as a SIS implementation, or {@code null} if none.
+     * @return a SIS implementation containing the values of the given object (may be the
      *         given object itself), or {@code null} if the argument was null.
      */
     public static DefaultRelativeInternalPositionalAccuracy castOrCopy(final RelativeInternalPositionalAccuracy object) {

Modified: sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -21,9 +21,11 @@ package org.apache.sis.geometry;
  * support Java2D (e.g. Android),  or applications that do not need it may want to avoid to
  * force installation of the Java2D module (e.g. JavaFX/SWT).
  */
+import java.util.Objects;
 import java.io.Serializable;
 import javax.measure.Unit;
 import javax.measure.IncommensurableException;
+import javax.xml.bind.annotation.XmlTransient;
 import org.opengis.geometry.Envelope;
 import org.opengis.geometry.DirectPosition;
 import org.opengis.geometry.MismatchedDimensionException;
@@ -48,9 +50,6 @@ import static org.apache.sis.math.MathFu
 import static org.apache.sis.math.MathFunctions.isNegative;
 import static org.apache.sis.math.MathFunctions.isPositive;
 
-// Branch-dependent imports
-import java.util.Objects;
-
 
 /**
  * Default implementations of most {@code Envelope} methods, leaving the data storage to subclasses.
@@ -113,6 +112,7 @@ import java.util.Objects;
  * @version 0.8
  * @module
  */
+@XmlTransient
 public abstract class AbstractEnvelope implements Envelope, Emptiable {
     /**
      * An empty array of envelopes, to be returned by {@link #toSimpleEnvelopes()}
@@ -132,8 +132,8 @@ public abstract class AbstractEnvelope i
      * then it is returned unchanged. Otherwise the coordinate values and the CRS
      * of the given envelope are copied in a new envelope.
      *
-     * @param  envelope The envelope to cast, or {@code null}.
-     * @return The values of the given envelope as an {@code AbstractEnvelope} instance.
+     * @param  envelope  the envelope to cast, or {@code null}.
+     * @return the values of the given envelope as an {@code AbstractEnvelope} instance.
      *
      * @see GeneralEnvelope#castOrCopy(Envelope)
      * @see ImmutableEnvelope#castOrCopy(Envelope)
@@ -163,9 +163,9 @@ public abstract class AbstractEnvelope i
     /**
      * Returns the common CRS of specified points.
      *
-     * @param  lowerCorner The first position.
-     * @param  upperCorner The second position.
-     * @return Their common CRS, or {@code null} if none.
+     * @param  lowerCorner  the first position.
+     * @param  upperCorner  the second position.
+     * @return their common CRS, or {@code null} if none.
      * @throws MismatchedReferenceSystemException if the two positions don't use equal CRS.
      */
     static CoordinateReferenceSystem getCommonCRS(final DirectPosition lowerCorner,
@@ -190,9 +190,9 @@ public abstract class AbstractEnvelope i
      * Returns the axis of the given coordinate reference system for the given dimension,
      * or {@code null} if none.
      *
-     * @param  crs The envelope CRS, or {@code null}.
-     * @param  dimension The dimension for which to get the axis.
-     * @return The axis at the given dimension, or {@code null}.
+     * @param  crs        the envelope CRS, or {@code null}.
+     * @param  dimension  the dimension for which to get the axis.
+     * @return the axis at the given dimension, or {@code null}.
      */
     static CoordinateSystemAxis getAxis(final CoordinateReferenceSystem crs, final int dimension) {
         if (crs != null) {
@@ -208,8 +208,8 @@ public abstract class AbstractEnvelope i
      * Returns {@code true} if the axis for the given dimension has the
      * {@link RangeMeaning#WRAPAROUND WRAPAROUND} range meaning.
      *
-     * @param  crs The envelope CRS, or {@code null}.
-     * @param  dimension The dimension for which to get the axis.
+     * @param  crs        the envelope CRS, or {@code null}.
+     * @param  dimension  the dimension for which to get the axis.
      * @return {@code true} if the range meaning is {@code WRAPAROUND}.
      */
     static boolean isWrapAround(final CoordinateReferenceSystem crs, final int dimension) {
@@ -221,8 +221,8 @@ public abstract class AbstractEnvelope i
      * If the range meaning of the given axis is "wraparound", returns the spanning of that axis.
      * Otherwise returns {@link Double#NaN}.
      *
-     * @param  axis The axis for which to get the spanning.
-     * @return The spanning of the given axis.
+     * @param  axis  the axis for which to get the spanning.
+     * @return the spanning of the given axis.
      */
     static double getSpan(final CoordinateSystemAxis axis) {
         if (axis != null && RangeMeaning.WRAPAROUND.equals(axis.getRangeMeaning())) {
@@ -265,7 +265,7 @@ public abstract class AbstractEnvelope i
      * lower corner longitude greater than the upper corner longitude. Such extended interpretation applies
      * mostly to axes having {@code WRAPAROUND} range meaning.</div>
      *
-     * @return A view over the lower corner, typically (but not necessarily) containing minimal ordinate values.
+     * @return a view over the lower corner, typically (but not necessarily) containing minimal ordinate values.
      */
     @Override
     public DirectPosition getLowerCorner() {
@@ -290,7 +290,7 @@ public abstract class AbstractEnvelope i
      * upper corner longitude less than the lower corner longitude. Such extended interpretation applies
      * mostly to axes having {@code WRAPAROUND} range meaning.</div>
      *
-     * @return A view over the upper corner, typically (but not necessarily) containing maximal ordinate values.
+     * @return a view over the upper corner, typically (but not necessarily) containing maximal ordinate values.
      */
     @Override
     public DirectPosition getUpperCorner() {
@@ -304,7 +304,7 @@ public abstract class AbstractEnvelope i
      * The default implementation returns a view over the {@link #getMedian(int)} method,
      * so changes in this envelope will be immediately reflected in the returned direct position.
      *
-     * @return The median coordinates.
+     * @return the median coordinates.
      */
     public DirectPosition getMedian() {
         // We do not cache the object because it is very cheap to create and we
@@ -317,9 +317,9 @@ public abstract class AbstractEnvelope i
      * This is usually the algebraic {@linkplain #getMinimum(int) minimum}, except if this envelope
      * spans the anti-meridian.
      *
-     * @param  dimension The dimension for which to obtain the ordinate value.
-     * @return The starting ordinate value at the given dimension.
-     * @throws IndexOutOfBoundsException If the given index is negative or is equals or greater
+     * @param  dimension  the dimension for which to obtain the ordinate value.
+     * @return the starting ordinate value at the given dimension.
+     * @throws IndexOutOfBoundsException if the given index is negative or is equals or greater
      *         than the {@linkplain #getDimension() envelope dimension}.
      */
     public abstract double getLower(int dimension) throws IndexOutOfBoundsException;
@@ -329,9 +329,9 @@ public abstract class AbstractEnvelope i
      * This is usually the algebraic {@linkplain #getMaximum(int) maximum}, except if this envelope
      * spans the anti-meridian.
      *
-     * @param  dimension The dimension for which to obtain the ordinate value.
-     * @return The starting ordinate value at the given dimension.
-     * @throws IndexOutOfBoundsException If the given index is negative or is equals or greater
+     * @param  dimension  the dimension for which to obtain the ordinate value.
+     * @return the starting ordinate value at the given dimension.
+     * @throws IndexOutOfBoundsException if the given index is negative or is equals or greater
      *         than the {@linkplain #getDimension() envelope dimension}.
      */
     public abstract double getUpper(int dimension) throws IndexOutOfBoundsException;
@@ -342,9 +342,9 @@ public abstract class AbstractEnvelope i
      * {@link #getLower(int)} value verbatim. In the case of envelope spanning the anti-meridian,
      * this method returns the {@linkplain CoordinateSystemAxis#getMinimumValue() axis minimum value}.
      *
-     * @param  dimension The dimension for which to obtain the ordinate value.
-     * @return The minimal ordinate value at the given dimension.
-     * @throws IndexOutOfBoundsException If the given index is negative or is equals or greater
+     * @param  dimension  the dimension for which to obtain the ordinate value.
+     * @return the minimal ordinate value at the given dimension.
+     * @throws IndexOutOfBoundsException if the given index is negative or is equals or greater
      *         than the {@linkplain #getDimension() envelope dimension}.
      */
     @Override
@@ -363,9 +363,9 @@ public abstract class AbstractEnvelope i
      * {@link #getUpper(int)} value verbatim. In the case of envelope spanning the anti-meridian,
      * this method returns the {@linkplain CoordinateSystemAxis#getMaximumValue() axis maximum value}.
      *
-     * @param  dimension The dimension for which to obtain the ordinate value.
-     * @return The maximal ordinate value at the given dimension.
-     * @throws IndexOutOfBoundsException If the given index is negative or is equals or greater
+     * @param  dimension  the dimension for which to obtain the ordinate value.
+     * @return the maximal ordinate value at the given dimension.
+     * @throws IndexOutOfBoundsException if the given index is negative or is equals or greater
      *         than the {@linkplain #getDimension() envelope dimension}.
      */
     @Override
@@ -396,9 +396,9 @@ public abstract class AbstractEnvelope i
      * space. If the axis range meaning is not {@code WRAPAROUND}, then this method returns
      * {@link Double#NaN NaN}.
      *
-     * @param  dimension The dimension for which to obtain the ordinate value.
-     * @return The median ordinate at the given dimension, or {@link Double#NaN}.
-     * @throws IndexOutOfBoundsException If the given index is negative or is equals or greater
+     * @param  dimension  the dimension for which to obtain the ordinate value.
+     * @return the median ordinate at the given dimension, or {@link Double#NaN}.
+     * @throws IndexOutOfBoundsException if the given index is negative or is equals or greater
      *         than the {@linkplain #getDimension() envelope dimension}.
      */
     @Override
@@ -445,9 +445,9 @@ public abstract class AbstractEnvelope i
      * longitude) to the span. If the result is a positive number, it is returned. Otherwise
      * this method returns {@link Double#NaN NaN}.
      *
-     * @param  dimension The dimension for which to obtain the span.
-     * @return The span (typically width or height) at the given dimension, or {@link Double#NaN}.
-     * @throws IndexOutOfBoundsException If the given index is negative or is equals or greater
+     * @param  dimension  the dimension for which to obtain the span.
+     * @return the span (typically width or height) at the given dimension, or {@link Double#NaN}.
+     * @throws IndexOutOfBoundsException if the given index is negative or is equals or greater
      *         than the {@linkplain #getDimension() envelope dimension}.
      */
     @Override
@@ -463,9 +463,9 @@ public abstract class AbstractEnvelope i
      * Transforms a negative span into a valid value if the axis range meaning is "wraparound".
      * Returns {@code NaN} otherwise.
      *
-     * @param  axis The axis for the span dimension, or {@code null}.
-     * @param  span The negative span.
-     * @return A positive span, or NaN if the span can not be fixed.
+     * @param  axis  the axis for the span dimension, or {@code null}.
+     * @param  span  the negative span.
+     * @return a positive span, or NaN if the span can not be fixed.
      */
     static double fixSpan(final CoordinateSystemAxis axis, double span) {
         if (axis != null && RangeMeaning.WRAPAROUND.equals(axis.getRangeMeaning())) {
@@ -484,10 +484,10 @@ public abstract class AbstractEnvelope i
      * Returns the envelope span along the specified dimension, in terms of the given units.
      * The default implementation invokes {@link #getSpan(int)} and converts the result.
      *
-     * @param  dimension The dimension to query.
-     * @param  unit The unit for the return value.
-     * @return The span in terms of the given unit.
-     * @throws IndexOutOfBoundsException If the given index is out of bounds.
+     * @param  dimension  the dimension to query.
+     * @param  unit  the unit for the return value.
+     * @return the span in terms of the given unit.
+     * @throws IndexOutOfBoundsException if the given index is out of bounds.
      * @throws IncommensurableException if the length can't be converted to the specified units.
      */
     public double getSpan(final int dimension, final Unit<?> unit)
@@ -525,7 +525,7 @@ public abstract class AbstractEnvelope i
      *       represents this envelope as 2ⁿ separated simple envelopes.
      * </ul>
      *
-     * @return A representation of this envelope as an array of non-empty envelope.
+     * @return a representation of this envelope as an array of non-empty envelope.
      *
      * @see Envelope2D#toRectangles()
      * @see GeneralEnvelope#simplify()
@@ -692,10 +692,10 @@ public abstract class AbstractEnvelope i
      * inside the envelope interior, this method tests if the given point is <em>outside</em> the
      * envelope <em>exterior</em>.
      *
-     * @param  position The point to text.
+     * @param  position  the point to text.
      * @return {@code true} if the specified coordinate is inside the boundary of this envelope; {@code false} otherwise.
      * @throws MismatchedDimensionException if the specified point doesn't have the expected dimension.
-     * @throws AssertionError If assertions are enabled and the envelopes have mismatched CRS.
+     * @throws AssertionError if assertions are enabled and the envelopes have mismatched CRS.
      */
     public boolean contains(final DirectPosition position) throws MismatchedDimensionException {
         ensureNonNull("position", position);
@@ -741,10 +741,10 @@ public abstract class AbstractEnvelope i
      *
      * <p><img src="doc-files/Contains.png" alt="Examples of envelope inclusions"></p>
      *
-     * @param  envelope The envelope to test for inclusion.
+     * @param  envelope  the envelope to test for inclusion.
      * @return {@code true} if this envelope completely encloses the specified one.
      * @throws MismatchedDimensionException if the specified envelope doesn't have the expected dimension.
-     * @throws AssertionError If assertions are enabled and the envelopes have mismatched CRS.
+     * @throws AssertionError if assertions are enabled and the envelopes have mismatched CRS.
      *
      * @see #intersects(Envelope)
      * @see #equals(Envelope, double, boolean)
@@ -768,11 +768,11 @@ public abstract class AbstractEnvelope i
      * For API stability, use the {@link #contains(Envelope)} method instead.
      * See <a href="http://issues.apache.org/jira/browse/SIS-172">SIS-172</a> for more information.</div>
      *
-     * @param  envelope The envelope to test for inclusion.
+     * @param  envelope  the envelope to test for inclusion.
      * @param  edgesInclusive {@code true} if this envelope edges are inclusive.
      * @return {@code true} if this envelope completely encloses the specified one.
      * @throws MismatchedDimensionException if the specified envelope doesn't have the expected dimension.
-     * @throws AssertionError If assertions are enabled and the envelopes have mismatched CRS.
+     * @throws AssertionError if assertions are enabled and the envelopes have mismatched CRS.
      *
      * @see #intersects(Envelope, boolean)
      */
@@ -856,10 +856,10 @@ public abstract class AbstractEnvelope i
      * <div class="section">Spanning the anti-meridian of a Geographic CRS</div>
      * This method can handle envelopes spanning the anti-meridian.
      *
-     * @param  envelope The envelope to test for intersection.
+     * @param  envelope  the envelope to test for intersection.
      * @return {@code true} if this envelope intersects the specified one.
      * @throws MismatchedDimensionException if the specified envelope doesn't have the expected dimension.
-     * @throws AssertionError If assertions are enabled and the envelopes have mismatched CRS.
+     * @throws AssertionError if assertions are enabled and the envelopes have mismatched CRS.
      *
      * @see #contains(Envelope, boolean)
      * @see #equals(Envelope, double, boolean)
@@ -882,11 +882,11 @@ public abstract class AbstractEnvelope i
      * For API stability, use the {@link #intersects(Envelope)} method instead.
      * See <a href="http://issues.apache.org/jira/browse/SIS-172">SIS-172</a> for more information.</div>
      *
-     * @param  envelope The envelope to test for intersection.
+     * @param  envelope  the envelope to test for intersection.
      * @param  edgesInclusive {@code true} if this envelope edges are inclusive.
      * @return {@code true} if this envelope intersects the specified one.
      * @throws MismatchedDimensionException if the specified envelope doesn't have the expected dimension.
-     * @throws AssertionError If assertions are enabled and the envelopes have mismatched CRS.
+     * @throws AssertionError if assertions are enabled and the envelopes have mismatched CRS.
      *
      * @see #contains(Envelope, boolean)
      * @see #equals(Envelope, double, boolean)
@@ -992,10 +992,10 @@ public abstract class AbstractEnvelope i
      * ignoring metadata}. If at least one envelope has a null CRS, then the CRS are ignored and the
      * ordinate values are compared as if the CRS were equal.
      *
-     * @param  other The envelope to compare with.
-     * @param  eps   The tolerance value to use for numerical comparisons.
-     * @param  epsIsRelative {@code true} if the tolerance value should be relative to
-     *         axis length, or {@code false} if it is an absolute value.
+     * @param  other          the envelope to compare with.
+     * @param  eps            the tolerance value to use for numerical comparisons.
+     * @param  epsIsRelative  {@code true} if the tolerance value should be relative to axis length,
+     *                        or {@code false} if it is an absolute value.
      * @return {@code true} if the given object is equal to this envelope up to the given tolerance value.
      *
      * @see #contains(Envelope)
@@ -1036,7 +1036,7 @@ public abstract class AbstractEnvelope i
      * This implementation requires that the provided {@code object} argument is of the same class than this envelope.
      * We do not relax this rule since not every implementations in the SIS code base follow the same contract.</div>
      *
-     * @param object The object to compare with this envelope.
+     * @param  object  the object to compare with this envelope.
      * @return {@code true} if the given object is equal to this envelope.
      */
     @Override
@@ -1105,7 +1105,7 @@ public abstract class AbstractEnvelope i
      * The string returned by this method can be {@linkplain GeneralEnvelope#GeneralEnvelope(CharSequence) parsed}
      * by the {@code GeneralEnvelope} constructor.
      *
-     * @return This envelope as a {@code BOX} or {@code BOX3D} (most typical dimensions) element.
+     * @return this envelope as a {@code BOX} or {@code BOX3D} (most typical dimensions) element.
      */
     @Override
     public String toString() {
@@ -1236,12 +1236,12 @@ public abstract class AbstractEnvelope i
      * since this class intentionally have no public setter methods. This is necessary for
      * preserving the immutable aspect of {@link ImmutableEnvelope} subclass among others.</p>
      *
-     * @param  dimension The dimension to set.
+     * @param  dimension  the dimension to set.
      * @param  lower     The limit in the direction of decreasing ordinate values.
      * @param  upper     The limit in the direction of increasing ordinate values.
-     * @throws UnmodifiableGeometryException If this envelope is not modifiable.
-     * @throws IndexOutOfBoundsException If the given index is out of bounds.
-     * @throws IllegalArgumentException If {@code lower > upper}, this envelope has a CRS
+     * @throws UnmodifiableGeometryException if this envelope is not modifiable.
+     * @throws IndexOutOfBoundsException if the given index is out of bounds.
+     * @throws IllegalArgumentException if {@code lower > upper}, this envelope has a CRS
      *         and the axis range meaning at the given dimension is not "wraparound".
      */
     void setRange(final int dimension, final double lower, final double upper)

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -32,7 +32,7 @@ import org.apache.sis.internal.system.De
  * @author  Martin Desruisseaux (Geomatys)
  * @author  Guilhem Legal (Geomatys)
  * @since   0.3
- * @version 0.3
+ * @version 0.8
  * @module
  */
 public final class TemporalUtilities extends Static {
@@ -56,8 +56,8 @@ public final class TemporalUtilities ext
     /**
      * Returns a temporal factory if available.
      *
-     * @return The temporal factory.
-     * @throws UnsupportedOperationException If the temporal factory is not available on the classpath.
+     * @return the temporal factory.
+     * @throws UnsupportedOperationException if the temporal factory is not available on the classpath.
      */
     public static TemporalFactory getTemporalFactory() throws UnsupportedOperationException {
         final TemporalFactory factory = DefaultFactories.forClass(TemporalFactory.class);
@@ -77,12 +77,12 @@ public final class TemporalUtilities ext
     /**
      * Creates an instant for the given date.
      *
-     * @param  time The date for which to create instant.
-     * @return The instant.
-     * @throws UnsupportedOperationException If the temporal factory is not available on the classpath.
+     * @param  time  the date for which to create instant, or {@code null}.
+     * @return the instant, or {@code null} if the given time was null.
+     * @throws UnsupportedOperationException if the temporal factory is not available on the classpath.
      */
     public static Instant createInstant(final Date time) throws UnsupportedOperationException {
-        return createInstant(getTemporalFactory(), time);
+        return (time != null) ? createInstant(getTemporalFactory(), time) : null;
     }
 
     /**
@@ -90,10 +90,10 @@ public final class TemporalUtilities ext
      * {@link TemporalFactory#createPosition(Date)} method accepts null dates, which stand for
      * undetermined position.
      *
-     * @param  begin The begin date, inclusive.
-     * @param  end The end date, inclusive.
-     * @return The period.
-     * @throws UnsupportedOperationException If the temporal factory is not available on the classpath.
+     * @param  begin  the begin date, inclusive.
+     * @param  end    the end date, inclusive.
+     * @return the period.
+     * @throws UnsupportedOperationException if the temporal factory is not available on the classpath.
      */
     public static Period createPeriod(final Date begin, final Date end) throws UnsupportedOperationException {
         final TemporalFactory factory = getTemporalFactory();

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/internal/util/UnmodifiableArrayList.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -19,13 +19,12 @@ package org.apache.sis.internal.util;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
+import java.util.Objects;
+import java.util.RandomAccess;
 import java.lang.reflect.Array;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.collection.CheckedContainer;
 
-// Branch-dependent imports
-import java.util.Objects;
-
 
 /**
  * An unmodifiable view of an array. Invoking
@@ -55,14 +54,14 @@ import java.util.Objects;
  * <p>Note that the public API, {@link org.apache.sis.util.collection.Containers#unmodifiableList(Object[])},
  * returns {@code List<? extends E>}, which is okay.</p>
  *
- * @param <E> The type of elements in the list.
+ * @param  <E>  the type of elements in the list.
  *
  * @author  Martin Desruisseaux (IRD)
  * @since   0.3
  * @version 0.3
  * @module
  */
-public class UnmodifiableArrayList<E> extends AbstractList<E> implements CheckedContainer<E>, Serializable {
+public class UnmodifiableArrayList<E> extends AbstractList<E> implements RandomAccess, CheckedContainer<E>, Serializable {
     /**
      * For compatibility with different versions.
      */
@@ -89,7 +88,7 @@ public class UnmodifiableArrayList<E> ex
      * Callers <strong>must</strong> ensure that the type of array elements in exactly {@code E},
      * not a subtype of {@code E}. See class javadoc for more information.
      *
-     * @param array The array to wrap.
+     * @param array the array to wrap.
      */
     protected UnmodifiableArrayList(final E[] array) {                          // NOT "E..." - see javadoc.
         this.array = Objects.requireNonNull(array);
@@ -110,10 +109,9 @@ public class UnmodifiableArrayList<E> ex
      * the caller to instantiate the array explicitely, in order to make sure that the array type is
      * the intended one.</p>
      *
-     * @param  <E> The 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 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.
      */
     public static <E> UnmodifiableArrayList<E> wrap(final E[] array) {          // NOT "E..." - see javadoc.
         return (array != null) ? new UnmodifiableArrayList<>(array) : null;
@@ -134,11 +132,11 @@ public class UnmodifiableArrayList<E> ex
      * should use {@link org.apache.sis.util.collection.Containers#unmodifiableList(Object[])} instead.
      * See class javadoc for more information.
      *
-     * @param  <E>   The type of elements in the list.
-     * @param  array The array to wrap.
-     * @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.
+     * @param  <E>    the type of elements in the list.
+     * @param  array  the array to wrap.
+     * @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.
      */
     public static <E> UnmodifiableArrayList<E> wrap(final E[] array, final int lower, final int upper) {
         if (lower == 0 && upper == array.length) {
@@ -151,7 +149,7 @@ public class UnmodifiableArrayList<E> ex
      * Returns the element type of the wrapped array. The default implementation returns
      * <code>array.getClass().{@linkplain Class#getComponentType() getComponentType()}</code>.
      *
-     * @return The type of elements in the list.
+     * @return the type of elements in the list.
      */
     @Override
     public Class<E> getElementType() {
@@ -170,7 +168,7 @@ public class UnmodifiableArrayList<E> ex
     /**
      * Returns the list size.
      *
-     * @return The size of this list.
+     * @return the size of this list.
      */
     @Override
     public int size() {
@@ -188,7 +186,7 @@ public class UnmodifiableArrayList<E> ex
      * greater value is not necessarily more memory consuming, since the backing array
      * may be shared by many sublists.</p>
      *
-     * @return The length of the backing array.
+     * @return the length of the backing array.
      */
     public final int arraySize() {
         return array.length;
@@ -197,8 +195,8 @@ public class UnmodifiableArrayList<E> ex
     /**
      * Returns the element at the specified index.
      *
-     * @param  index The index of the element to get.
-     * @return The element at the given index.
+     * @param  index  the index of the element to get.
+     * @return the element at the given index.
      */
     @Override
     public E get(final int index) {
@@ -209,8 +207,8 @@ public class UnmodifiableArrayList<E> ex
      * Returns the index in this list of the first occurrence of the specified element,
      * or -1 if the list does not contain the element.
      *
-     * @param object The element to search for.
-     * @return The index of the first occurrence of the given object, or {@code -1}.
+     * @param  object  the element to search for.
+     * @return the index of the first occurrence of the given object, or {@code -1}.
      */
     @Override
     public int indexOf(final Object object) {
@@ -236,8 +234,8 @@ public class UnmodifiableArrayList<E> ex
      * Returns the index in this list of the last occurrence of the specified element,
      * or -1 if the list does not contain the element.
      *
-     * @param object The element to search for.
-     * @return The index of the last occurrence of the given object, or {@code -1}.
+     * @param  object  the element to search for.
+     * @return the index of the last occurrence of the given object, or {@code -1}.
      */
     @Override
     public int lastIndexOf(final Object object) {
@@ -262,7 +260,7 @@ public class UnmodifiableArrayList<E> ex
     /**
      * Returns {@code true} if this list contains the specified element.
      *
-     * @param object The element to check for existence.
+     * @param  object  the element to check for existence.
      * @return {@code true} if this collection contains the given element.
      */
     @Override
@@ -289,10 +287,10 @@ public class UnmodifiableArrayList<E> ex
      * Returns a view of the portion of this list between the specified
      * {@code lower}, inclusive, and {@code upper}, exclusive.
      *
-     * @param  lower Low endpoint (inclusive) of the sublist.
-     * @param  upper High endpoint (exclusive) of the sublist.
-     * @return A view of the specified range within this list.
-     * @throws IndexOutOfBoundsException If the lower or upper value are out of bounds.
+     * @param  lower  low endpoint (inclusive) of the sublist.
+     * @param  upper  high endpoint (exclusive) of the sublist.
+     * @return a view of the specified range within this list.
+     * @throws IndexOutOfBoundsException if the lower or upper value are out of bounds.
      *
      * @see #wrap(Object[], int, int)
      */
@@ -307,7 +305,7 @@ public class UnmodifiableArrayList<E> ex
     /**
      * A view over a portion of {@link UnmodifiableArrayList}.
      *
-     * @param <E> The type of elements in the list.
+     * @param  <E>  the type of elements in the list.
      *
      * @author  Martin Desruisseaux (Geomatys)
      * @since   0.3
@@ -377,7 +375,7 @@ public class UnmodifiableArrayList<E> ex
      * This is not what {@code ArrayList} does, but is not forbidden by {@link java.util.List#toArray()} javadoc
      * neither.
      *
-     * @return A copy of the wrapped array.
+     * @return a copy of the wrapped array.
      */
     @Override
     public E[] toArray() {
@@ -388,9 +386,9 @@ public class UnmodifiableArrayList<E> ex
      * Copies the backing array in the given one if the list fits in the given array.
      * If the list does not fit in the given array, returns the collection in a new array.
      *
-     * @param  <T>   The type of array element.
-     * @param  dest  The array where to copy the elements if the list can fits in the array.
-     * @return The given array, or a newly created array if this list is larger than the given array.
+     * @param  <T>   the type of array element.
+     * @param  dest  the array where to copy the elements if the list can fits in the array.
+     * @return the given array, or a newly created array if this list is larger than the given array.
      */
     @Override
     @SuppressWarnings("unchecked")
@@ -406,7 +404,7 @@ public class UnmodifiableArrayList<E> ex
                  */
                 dest = (T[]) Array.newInstance(dest.getClass().getComponentType(), size);
             } else {
-                dest[size] = null; // Required by Collection.toArray(T[]) javadoc.
+                dest[size] = null;              // Required by Collection.toArray(T[]) javadoc.
             }
         }
         System.arraycopy(array, lower(), dest, 0, size);
@@ -416,7 +414,7 @@ public class UnmodifiableArrayList<E> ex
     /**
      * Compares this list with the given object for equality.
      *
-     * @param  object The object to compare with this list.
+     * @param  object  the object to compare with this list.
      * @return {@code true} if the given object is equal to this list.
      */
     @Override

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/setup/OptionKey.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/setup/OptionKey.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/setup/OptionKey.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/setup/OptionKey.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -20,16 +20,16 @@ import java.util.Map;
 import java.util.HashMap;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
+import java.nio.file.OpenOption;
+import java.nio.file.StandardOpenOption;
 import java.io.Serializable;
 import java.io.ObjectStreamException;
+import java.util.Locale;
+import java.util.TimeZone;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.logging.Logging;
 import org.apache.sis.internal.system.Modules;
 
-// Branch-dependent imports
-import java.nio.file.OpenOption;
-import java.nio.file.StandardOpenOption;
-
 
 /**
  * Keys in a map of options for configuring various services
@@ -64,7 +64,7 @@ import java.nio.file.StandardOpenOption;
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3
- * @version 0.4
+ * @version 0.8
  * @module
  */
 public class OptionKey<T> implements Serializable {
@@ -74,13 +74,44 @@ public class OptionKey<T> implements Ser
     private static final long serialVersionUID = -7580514229639750246L;
 
     /**
+     * The locale to use for locale-sensitive data. This option determines the language to use for writing
+     * {@link org.apache.sis.util.iso.AbstractInternationalString international strings} when the target
+     * storage support only one language. It may also control number and date patterns in some file formats
+     * like Comma Separated Values (CSV). However most data formats will ignore this locale.
+     *
+     * <p>This option is <strong>not</strong> for the locale of logging or warning messages. Messages
+     * locale is rather controlled by {@link org.apache.sis.storage.DataStore#setLocale(Locale)}.</p>
+     *
+     * @see org.apache.sis.xml.XML#LOCALE
+     *
+     * @since 0.8
+     */
+    public static final OptionKey<Locale> LOCALE = new OptionKey<>("LOCALE", Locale.class);
+
+    /**
+     * The timezone to use when parsing or formatting dates and times without explicit timezone.
+     * If this option is not provided, then the default value is format specific.
+     * That default is often, but not necessarily, the {@linkplain TimeZone#getDefault() platform default}.
+     *
+     * <div class="warning"><b>Upcoming API change — Java time API</b><br>
+     * The type may be changed to {@link java.time.ZoneId} when Apache SIS will target Java 8.
+     * This change may be applied in synchronization with GeoAPI 4.0.
+     * </div>
+     *
+     * @see org.apache.sis.xml.XML#TIMEZONE
+     *
+     * @since 0.8
+     */
+    public static final OptionKey<TimeZone> TIMEZONE = new OptionKey<>("TIMEZONE", TimeZone.class);
+
+    /**
      * The character encoding of document content.
      * This option can be used when the file to read does not describe itself its encoding.
      * For example this option can be used when reading plain text files, but is ignored when
      * reading XML files having a {@code <?xml version="1.0" encoding="…"?>} declaration.
      *
      * <p>If this option is not provided, then the default value is format specific.
-     * That default is often, but not necessarily, the {@link Charset#defaultCharset() platform default}.</p>
+     * That default is often, but not necessarily, the {@linkplain Charset#defaultCharset() platform default}.</p>
      *
      * @since 0.4
      */
@@ -273,7 +304,7 @@ public class OptionKey<T> implements Ser
      * Resolves this option key on deserialization. This method is invoked
      * only for instance of the exact {@code OptionKey} class, not subclasses.
      *
-     * @return  the unique {@code OptionKey} instance.
+     * @return the unique {@code OptionKey} instance.
      * @throws ObjectStreamException required by specification but should never be thrown.
      */
     private Object readResolve() throws ObjectStreamException {

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Version.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Version.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Version.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/Version.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -96,7 +96,7 @@ public class Version implements CharSequ
     /**
      * Creates a new version object from the supplied string.
      *
-     * @param version The version as a string.
+     * @param version  the version as a string.
      */
     public Version(final String version) {
         ArgumentChecks.ensureNonNull("version", version);
@@ -114,8 +114,8 @@ public class Version implements CharSequ
      *   <li>Other elements (if any) will be appended to the {@link #toString() string value}.</li>
      * </ul>
      *
-     * @param  components The major number, optionally followed by minor, revision or other numbers.
-     * @return A new or existing instance of {@code Version} for the given numbers.
+     * @param  components  the major number, optionally followed by minor, revision or other numbers.
+     * @return a new or existing instance of {@code Version} for the given numbers.
      *
      * @since 0.4
      */
@@ -156,7 +156,7 @@ public class Version implements CharSequ
      * Returns the major version number. This method returns an {@link Integer} if possible,
      * or a {@link String} otherwise.
      *
-     * @return The major version number.
+     * @return the major version number.
      */
     public Comparable<?> getMajor() {
         return getComponent(0);
@@ -167,7 +167,7 @@ public class Version implements CharSequ
      * or a {@link String} otherwise. If there is no minor version number, then this method
      * returns {@code null}.
      *
-     * @return The minor version number, or {@code null} if none.
+     * @return the minor version number, or {@code null} if none.
      */
     public Comparable<?> getMinor() {
         return getComponent(1);
@@ -178,7 +178,7 @@ public class Version implements CharSequ
      * or a {@link String} otherwise. If there is no revision number, then this method
      * returns {@code null}.
      *
-     * @return The revision number, or {@code null} if none.
+     * @return the revision number, or {@code null} if none.
      */
     public Comparable<?> getRevision() {
         return getComponent(2);
@@ -193,8 +193,8 @@ public class Version implements CharSequ
      * or a {@link String} otherwise. If there is no component at the specified index,
      * then this method returns {@code null}.</p>
      *
-     * @param  index The index of the component to fetch.
-     * @return The value at the specified index, or {@code null} if none.
+     * @param  index  the index of the component to fetch.
+     * @return the value at the specified index, or {@code null} if none.
      * @throws IndexOutOfBoundsException if {@code index} is negative.
      */
     final synchronized Comparable<?> getComponent(final int index) {
@@ -245,10 +245,10 @@ public class Version implements CharSequ
      * The comparisons are performed as {@link Integer} object if possible, or as {@link String}
      * otherwise.
      *
-     * @param  other The other version object to compare with.
-     * @param  limit The maximum number of components to compare.
-     * @return A negative value if this version is lower than the supplied version, a positive
-     *         value if it is higher, or 0 if they are equal.
+     * @param  other  the other version object to compare with.
+     * @param  limit  the maximum number of components to compare.
+     * @return a negative value if this version is lower than the supplied version,
+     *         a positive value if it is higher, or 0 if they are equal.
      */
     public int compareTo(final Version other, final int limit) {
         ArgumentChecks.ensureNonNull ("other", other);
@@ -295,8 +295,8 @@ public class Version implements CharSequ
      * Compares this version with an other version object. This method performs the same
      * comparison than {@link #compareTo(Version, int)} with no limit.
      *
-     * @param  other The other version object to compare with.
-     * @return A negative value if this version is lower than the supplied version,
+     * @param  other  the other version object to compare with.
+     * @return a negative value if this version is lower than the supplied version,
      *         a positive value if it is higher, or 0 if they are equal.
      */
     @Override
@@ -308,7 +308,7 @@ public class Version implements CharSequ
      * Compare this version string with the specified object for equality. Two version are
      * considered equal if <code>{@linkplain #compareTo(Object) compareTo}(other) == 0</code>.
      *
-     * @param other The object to compare with this version for equality.
+     * @param other  the object to compare with this version for equality.
      */
     @Override
     public boolean equals(final Object other) {

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/logging/WarningListeners.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/logging/WarningListeners.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/logging/WarningListeners.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/logging/WarningListeners.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -16,6 +16,8 @@
  */
 package org.apache.sis.util.logging;
 
+import java.util.Collections;
+import java.util.List;
 import java.util.Locale;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -25,6 +27,7 @@ import org.apache.sis.util.Localized;
 import org.apache.sis.util.Exceptions;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
+import org.apache.sis.internal.util.UnmodifiableArrayList;
 
 
 /**
@@ -278,6 +281,22 @@ public class WarningListeners<S> impleme
     }
 
     /**
+     * Returns all registered warning listeners, or an empty list if none.
+     * This method returns an unmodifiable snapshot of the listener list at the time this method is invoked.
+     *
+     * @return immutable list of all registered warning listeners.
+     *
+     * @since 0.8
+     */
+    public List<WarningListener<? super S>> getListeners() {
+        final WarningListener<? super S>[] current;
+        synchronized (this) {
+            current = listeners;
+        }
+        return (current != null) ? UnmodifiableArrayList.wrap(current) : Collections.<WarningListener<? super S>>emptyList();
+    }
+
+    /**
      * Returns {@code true} if this object contains at least one listener.
      *
      * @return {@code true} if this object contains at least one listener, {@code false} otherwise.

Modified: sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1775003&r1=1775002&r2=1775003&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] (original)
+++ sis/branches/JDK7/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] Mon Dec 19 08:17:03 2016
@@ -166,6 +166,11 @@ public final class Errors extends Indexe
         public static final short ClosedReader_1 = 19;
 
         /**
+         * This {0} writer is closed.
+         */
+        public static final short ClosedWriter_1 = 166;
+
+        /**
          * Database error while creating a ‘{0}’ object for the “{1}” identifier.
          */
         public static final short DatabaseError_2 = 20;
@@ -358,6 +363,11 @@ public final class Errors extends Indexe
         public static final short IllegalOrdinateRange_3 = 57;
 
         /**
+         * The {0} writer does not accept outputs of type ‘{1}’.
+         */
+        public static final short IllegalOutputTypeForWriter_2 = 165;
+
+        /**
          * Property “{0}” does not accept instances of ‘{1}’.
          */
         public static final short IllegalPropertyValueClass_2 = 58;
@@ -535,6 +545,11 @@ public final class Errors extends Indexe
         public static final short NegativeArrayLength_1 = 91;
 
         /**
+         * Nested “{0}” elements are not allowed.
+         */
+        public static final short NestedElementNotAllowed_1 = 167;
+
+        /**
          * No value is associated to “{0}”.
          */
         public static final short NoSuchValue_1 = 92;



Mime
View raw message