sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject svn commit: r1750766 - in /sis/branches/JDK6: ./ application/sis-openoffice/src/main/java/org/apache/sis/openoffice/ core/sis-referencing/src/main/java/org/apache/sis/geometry/ core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/...
Date Thu, 30 Jun 2016 10:21:49 GMT
Author: desruisseaux
Date: Thu Jun 30 10:21:49 2016
New Revision: 1750766

URL: http://svn.apache.org/viewvc?rev=1750766&view=rev
Log:
Merge from JDK7 branch.

Added:
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java
      - copied, changed from r1750764, sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java
    sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/geometry/Shapes2DTest.java
      - copied unchanged from r1750764, sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/geometry/Shapes2DTest.java
    sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/geometry/TransformTestCase.java
      - copied unchanged from r1750764, sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/geometry/TransformTestCase.java
    sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java
      - copied, changed from r1750764, sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java
Modified:
    sis/branches/JDK6/   (props changed)
    sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java
    sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/ReferencingFunctions.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ShapeUtilities.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ProjectionException.java
    sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
    sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/geometry/EnvelopesTest.java
    sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/TransverseMercatorTest.java
    sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/system/XMLInputFactory.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
    sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/xml/XML.java
    sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
    sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
    sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java
    sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/IOUtilities.java
    sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/xml/Store.java
    sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java

Propchange: sis/branches/JDK6/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jun 30 10:21:49 2016
@@ -1,4 +1,4 @@
 /sis/branches/Android:1430670-1480699
-/sis/branches/JDK7:1394913-1748694
-/sis/branches/JDK8:1584960-1748692
+/sis/branches/JDK7:1394913-1750764
+/sis/branches/JDK8:1584960-1750763
 /sis/trunk:1394364-1508466,1519089-1519674

Modified: sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java [UTF-8] (original)
+++ sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -16,7 +16,6 @@
  */
 package org.apache.sis.openoffice;
 
-import java.util.Arrays;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.logging.LogRecord;
@@ -185,24 +184,6 @@ public abstract class CalcAddins extends
     }
 
     /**
-     * Returns a table filled with {@link Double#NaN} values.
-     * This method is invoked when an operation failed for a whole table.
-     *
-     * @param  rows  the number of rows.
-     * @param  cols  the number of columns.
-     * @return A table of the given size filled with NaN values.
-     */
-    static double[][] getFailure(final int rows, final int cols) {
-        final double[][] dummy = new double[rows][];
-        for (int i=0; i<rows; i++) {
-            final double[] row = new double[cols];
-            Arrays.fill(row, Double.NaN);
-            dummy[i] = row;
-        }
-        return dummy;
-    }
-
-    /**
      * Reports an exception. This is used if an exception occurred in a method that can not return
      * a {@link String} instance. This method logs the stack trace at {@link Level#WARNING}.
      *

Modified: sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/ReferencingFunctions.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/ReferencingFunctions.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/ReferencingFunctions.java [UTF-8] (original)
+++ sis/branches/JDK6/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/ReferencingFunctions.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -280,7 +280,7 @@ public class ReferencingFunctions extend
             }
         }
         if (area == null) {
-            return getFailure(2,2);
+            return new double[][] {};
         }
         return new double[][] {
             new double[] {area.getNorthBoundLatitude(), area.getWestBoundLongitude()},
@@ -366,7 +366,7 @@ public class ReferencingFunctions extend
             result  = tr.transform(points);
             warning = tr.warning;
         } catch (Exception exception) {
-            result  = getFailure(points.length, 2);
+            result  = new double[][] {};
             warning = exception;
         }
         if (warning != null) {
@@ -385,14 +385,12 @@ public class ReferencingFunctions extend
      */
     @Override
     public double[][] transformEnvelope(String sourceCRS, String targetCRS, double[][] envelope) {
-        if (envelope == null || envelope.length == 0) {
-            return new double[][] {};
-        } else try {
+        if (envelope != null && envelope.length != 0) try {
             return new Transformer(this, getCRS(sourceCRS), targetCRS, envelope).transformEnvelope(envelope);
         } catch (Exception exception) {
             reportException("transformEnvelope", exception);
-            return getFailure(envelope.length, 2);
         }
+        return new double[][] {};
     }
 
     /**

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -44,7 +44,7 @@ import org.apache.sis.internal.jdk7.Obje
 
 
 /**
- * Base class for {@link DirectPosition} implementations.
+ * Default implementations of some {@code DirectPosition} methods, leaving the data storage to subclasses.
  * A direct position holds the coordinates for a position within some
  * {@linkplain org.apache.sis.referencing.crs.AbstractCRS coordinate reference system}.
  * This base class provides default implementations for {@link #toString()},

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -53,7 +53,7 @@ import org.apache.sis.internal.jdk7.Obje
 
 
 /**
- * Base class for {@link Envelope} implementations.
+ * Default implementations of most {@code Envelope} methods, leaving the data storage to subclasses.
  * This base class does not hold any state and does not implement the {@link java.io.Serializable}
  * or {@link Cloneable} interfaces. The internal representation, and the choice to be cloneable or
  * serializable, is left to subclasses.

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -33,7 +33,7 @@ import org.apache.sis.internal.jdk7.Obje
 
 
 /**
- * A two-dimensional position on top of {@link Point2D}.
+ * A two-dimensional position on top of Java2D point.
  * This implementation is provided for inter-operability between Java2D and GeoAPI.
  *
  * <p>This class inherits {@linkplain #x x} and {@linkplain #y y} fields.

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelope2D.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -54,7 +54,7 @@ import org.apache.sis.internal.jdk7.Obje
 
 
 /**
- * A two-dimensional envelope on top of {@link Rectangle2D}.
+ * A two-dimensional envelope on top of Java2D rectangle.
  * This implementation is provided for inter-operability between Java2D and GeoAPI.
  *
  * <p>This class inherits {@linkplain #x x} and {@linkplain #y y} fields.

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -103,7 +103,7 @@ public final class Envelopes extends Sta
     /**
      * Returns {@code true} if the given axis is of kind "Wrap Around".
      */
-    private static boolean isWrapAround(final CoordinateSystemAxis axis) {
+    static boolean isWrapAround(final CoordinateSystemAxis axis) {
         return RangeMeaning.WRAPAROUND.equals(axis.getRangeMeaning());
     }
 
@@ -111,8 +111,8 @@ public final class Envelopes extends Sta
      * Invoked when a recoverable exception occurred. Those exceptions must be minor enough
      * that they can be silently ignored in most cases.
      */
-    private static void recoverableException(final TransformException exception) {
-        Logging.recoverableException(Logging.getLogger(Loggers.GEOMETRY), Envelopes.class, "transform", exception);
+    static void recoverableException(final Class<? extends Static> caller, final TransformException exception) {
+        Logging.recoverableException(Logging.getLogger(Loggers.GEOMETRY), caller, "transform", exception);
     }
 
     /**
@@ -129,7 +129,7 @@ public final class Envelopes extends Sta
      * @throws TransformException If the point can not be transformed
      *         or if a problem occurred while calculating the derivative.
      */
-    private static Matrix derivativeAndTransform(final MathTransform transform, final double[] srcPts,
+    static Matrix derivativeAndTransform(final MathTransform transform, final double[] srcPts,
             final double[] dstPts, final int dstOff, final boolean derivate) throws TransformException
     {
         if (transform instanceof AbstractMathTransform) {
@@ -296,7 +296,7 @@ public final class Envelopes extends Sta
                 }
                 isDerivativeSupported = false;
                 transform.transform(sourcePt, 0, ordinates, offset, 1);
-                recoverableException(e);        // Log only if the above call was successful.
+                recoverableException(Envelopes.class, e);       // Log only if the above call was successful.
             }
             /*
              * The transformed point has been saved for future reuse after the enclosing
@@ -554,7 +554,7 @@ public final class Envelopes extends Sta
          *    step. That ordinate is set to the minimal and maximal values of that axis.
          *
          *    Example: If the above steps found that the point (90°S, 30°W) need to be included,
-         *             then this step #3 will also test phe points (90°S, 180°W) and (90°S, 180°E).
+         *             then this step #3 will also test the points (90°S, 180°W) and (90°S, 180°E).
          *
          * NOTE: we test (-180°, centerY), (180°, centerY), (centerX, -90°) and (centerX, 90°)
          * at step #1 before to test (-180°, -90°), (180°, -90°), (-180°, 90°) and (180°, 90°)
@@ -604,7 +604,7 @@ public final class Envelopes extends Sta
                          * lost dimensions. So we don't log any warning in this case.
                          */
                         if (dimension >= mt.getSourceDimensions()) {
-                            recoverableException(exception);
+                            recoverableException(Envelopes.class, exception);
                         }
                         return transformed;
                     }
@@ -720,7 +720,7 @@ public final class Envelopes extends Sta
             }
         }
         if (warning != null) {
-            recoverableException(warning);
+            recoverableException(Envelopes.class, warning);
         }
         return transformed;
     }

Copied: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java (from r1750764, sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java?p2=sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java&p1=sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java&r1=1750764&r2=1750766&rev=1750766&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -492,8 +492,6 @@ public final class Shapes2D extends Stat
             } catch (TransformException exception) {
                 if (warning == null) {
                     warning = exception;
-                } else {
-                    warning.addSuppressed(exception);
                 }
                 continue;
             }
@@ -558,8 +556,6 @@ public final class Shapes2D extends Stat
                 } catch (TransformException exception) {
                     if (warning == null) {
                         warning = exception;
-                    } else {
-                        warning.addSuppressed(exception);
                     }
                     continue;
                 }

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -45,6 +45,12 @@
  *   </tr>
  * </table>
  *
+ * <div class="section">Java2D dependency</div>
+ * All classes having a name that ends with "2D" are designed for inter-operability with Java2D.
+ * All other classes have no dependency to Java2D.
+ * This clear separation aims to make easier to use Apache SIS on platforms that do not support Java2D
+ * (for example Android) or to avoid loading Java2D classes when only JavaFX is desired.
+ *
  * <div class="section">Envelopes spanning the anti-meridian of a Geographic CRS</div>
  * The Web Coverage Service (WCS) 1.1 specification uses an extended interpretation
  * of the bounding box definition. In a WCS 1.1 data structure, the
@@ -77,7 +83,7 @@
  *
  * @author Martin Desruisseaux (IRD, Geomatys)
  * @since   0.3
- * @version 0.3
+ * @version 0.8
  * @module
  */
 package org.apache.sis.geometry;

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ShapeUtilities.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ShapeUtilities.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ShapeUtilities.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ShapeUtilities.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -63,9 +63,7 @@ public final class ShapeUtilities extend
      * @param  by2 <var>y</var> value of the last  point on the second line.
      * @return The intersection point, or {@code null} if none.
      *
-     * @todo This method is used by Geotk (a sandbox for code that may migrate to SIS), but not yet by SIS.
-     *       We temporarily keep this code here, but may delete or move it elsewhere in a future SIS version
-     *       depending whether we port to SIS the sandbox code.
+     * @see org.apache.sis.geometry.Shapes2D#intersectionPoint(Line2D, Line2D)
      */
     public static Point2D.Double intersectionPoint(final double ax1, final double ay1, double ax2, double ay2,
                                                    final double bx1, final double by1, double bx2, double by2)
@@ -118,9 +116,7 @@ public final class ShapeUtilities extend
      *
      * @see #colinearPoint(double,double , double,double , double,double , double)
      *
-     * @todo This method is used by Geotk (a sandbox for code that may migrate to SIS), but not yet by SIS.
-     *       We temporarily keep this code here, but may delete or move it elsewhere in a future SIS version
-     *       depending whether we port to SIS the sandbox code.
+     * @see org.apache.sis.geometry.Shapes2D#nearestColinearPoint(Line2D, Point2D)
      */
     public static Point2D.Double nearestColinearPoint(final double x1, final double y1,
                                                       final double x2, final double y2,
@@ -179,9 +175,7 @@ public final class ShapeUtilities extend
      *
      * @see #nearestColinearPoint(double,double , double,double , double,double)
      *
-     * @todo This method is used by Geotk (a sandbox for code that may migrate to SIS), but not yet by SIS.
-     *       We temporarily keep this code here, but may delete or move it elsewhere in a future SIS version
-     *       depending whether we port to SIS the sandbox code.
+     * @see org.apache.sis.geometry.Shapes2D#colinearPoint(Line2D, Point2D, double)
      */
     public static Point2D.Double colinearPoint(double x1, double y1, double x2, double y2,
                                                double x, double y, double distance)
@@ -323,10 +317,10 @@ public final class ShapeUtilities extend
         x2 -= x1;
         y2 -= y1;
         if (horizontal) {
-            final double a = (y2 - py*x2/px) / (x2-px); // Actually "a*x2"
+            final double a = (y2 - py*x2/px) / (x2-px);     // Actually "a*x2"
             final double check = abs(a);
-            if (!(check <= 1/EPS)) return null; // Two points have the same coordinates.
-            if (!(check >=   EPS)) return null; // The three points are co-linear.
+            if (!(check <= 1/EPS)) return null;             // Two points have the same coordinates.
+            if (!(check >=   EPS)) return null;             // The three points are co-linear.
             final double b = y2/x2 - a;
             px = (1 + b/(2*a))*x2 - y2/(2*a);
             py = y1 + b*px;
@@ -339,18 +333,18 @@ public final class ShapeUtilities extend
             final double rx2 = x2;
             final double ry2 = y2;
             x2 = hypot(x2,y2);
-            y2 = (px*rx2 + py*ry2) / x2; // use 'y2' as a temporary variable for 'x1'
+            y2 = (px*rx2 + py*ry2) / x2;                    // use 'y2' as a temporary variable for 'x1'
             py = (py*rx2 - px*ry2) / x2;
             px = y2;
-            y2 = 0; // set as a matter of principle (but not used).
+            y2 = 0;                                         // set as a matter of principle (but not used).
             /*
              * Now compute the control point coordinates in our new coordinate system axis.
              */
-            final double x = 0.5;                       // Actually "x/x2"
-            final double y = (py*x*x2) / (px*(x2-px));  // Actually "y/y2"
+            final double x = 0.5;                           // Actually "x/x2"
+            final double y = (py*x*x2) / (px*(x2-px));      // Actually "y/y2"
             final double check = abs(y);
-            if (!(check <= 1/EPS)) return null; // Two points have the same coordinates.
-            if (!(check >=   EPS)) return null; // The three points are co-linear.
+            if (!(check <= 1/EPS)) return null;             // Two points have the same coordinates.
+            if (!(check >=   EPS)) return null;             // The three points are co-linear.
             /*
              * Applies the inverse rotation then a translation to bring
              * us back to the original coordinate system.
@@ -362,7 +356,7 @@ public final class ShapeUtilities extend
     }
 
     /**
-     * Returns a circle passing by the 3 given points. The distance between the returned
+     * Returns the center of a circle passing by the 3 given points. The distance between the returned
      * point and any of the given points will be constant; it is the circle radius.
      *
      * @param  x1 <var>x</var> value of the first  point.
@@ -371,11 +365,9 @@ public final class ShapeUtilities extend
      * @param  y2 <var>y</var> value of the second point.
      * @param  x3 <var>x</var> value of the third  point.
      * @param  y3 <var>y</var> value of the third  point.
-     * @return A circle passing by the given points.
+     * @return The center of a circle passing by the given points.
      *
-     * @todo This method is used by Geotk (a sandbox for code that may migrate to SIS), but not yet by SIS.
-     *       We temporarily keep this code here, but may delete or move it elsewhere in a future SIS version
-     *       depending whether we port to SIS the sandbox code.
+     * @see org.apache.sis.geometry.Shapes2D#circle(Point2D, Point2D, Point2D)
      */
     public static Point2D.Double circleCentre(double x1, double y1,
                                               double x2, double y2,

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -148,8 +148,8 @@ final class AuthorityCodes extends Abstr
             for (int i=0; i<table.subTypes.length; i++) {
                 final Class<?> candidate = table.subTypes[i];
                 if (candidate.isAssignableFrom(type)) {
-                    buffer.append(" WHERE (").append(table.typeColumn)
-                          .append(" LIKE '").append(table.typeNames[i]).append("%')");
+                    buffer.append(" WHERE (CAST(").append(table.typeColumn).append(" AS ").append(TableInfo.ENUM_REPLACEMENT)
+                          .append(") LIKE '").append(table.typeNames[i]).append("%')");
                     hasWhere = true;
                     tableType = candidate;
                     break;

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -3326,7 +3326,7 @@ next:               while (r.next()) {
                     "SELECT COORD_REF_SYS_CODE" +
                     " FROM [Coordinate Reference System]" +
                     " WHERE PROJECTION_CONV_CODE = ?" +
-                      " AND COORD_REF_SYS_KIND LIKE 'projected%'", code);
+                      " AND CAST(COORD_REF_SYS_KIND AS " + TableInfo.ENUM_REPLACEMENT + ") LIKE 'projected%'", code);
             try {
                 projection = result.next();
             } finally {

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGInstaller.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -162,9 +162,9 @@ final class EPSGInstaller extends Script
             prependNamespace(schema);
         }
         if (!isEnumTypeSupported) {
-            addReplacement(SQLTranslator.TABLE_PREFIX + "datum_kind", "VARCHAR(24)");
-            addReplacement(SQLTranslator.TABLE_PREFIX + "crs_kind",   "VARCHAR(24)");
-            addReplacement(SQLTranslator.TABLE_PREFIX + "cs_kind",    "VARCHAR(24)");
+            addReplacement(SQLTranslator.TABLE_PREFIX + "datum_kind", TableInfo.ENUM_REPLACEMENT);
+            addReplacement(SQLTranslator.TABLE_PREFIX + "crs_kind",   TableInfo.ENUM_REPLACEMENT);
+            addReplacement(SQLTranslator.TABLE_PREFIX + "cs_kind",    TableInfo.ENUM_REPLACEMENT);
             addReplacement(SQLTranslator.TABLE_PREFIX + "table_name", "VARCHAR(80)");
         }
     }

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -162,10 +162,17 @@ final class TableInfo {
 
     /**
      * Column type for the type (usually with the {@code "_TYPE"} suffix), or {@code null}.
+     * {@link EPSGDataAccess} and {@link AuthorityCodes} assumes that values in this column
+     * have the maximal length described in the {@value #ENUM_REPLACEMENT} statement.
      */
     final String typeColumn;
 
     /**
+     * The SQL type to use as a replacement for enumerated values on databases that do not support enumerations.
+     */
+    static final String ENUM_REPLACEMENT = "VARCHAR(24)";
+
+    /**
      * Sub-interfaces of {@link #type} to handle, or {@code null} if none.
      */
     final Class<?>[] subTypes;

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -355,8 +355,10 @@ public class Mercator extends ConformalP
                 final double a = abs(φ);
                 if (a < PI/2) {
                     y = log(expOfNorthing(φ, eccentricity * sinφ));     // Snyder (7-7)
+                } else if (a <= (PI/2 + ANGULAR_TOLERANCE)) {
+                    y = copySign(POSITIVE_INFINITY, φ);
                 } else {
-                    y = copySign(a <= (PI/2 + ANGULAR_TOLERANCE) ? POSITIVE_INFINITY : NaN, φ);
+                    y = NaN;
                 }
             }
             dstPts[dstOff  ] = srcPts[srcOff];   // Scale will be applied by the denormalization matrix.
@@ -396,8 +398,10 @@ public class Mercator extends ConformalP
                     final double y;
                     if (a < PI/2) {
                         y = log(expOfNorthing(φ, eccentricity * sin(φ)));
+                    } else if (a <= (PI/2 + ANGULAR_TOLERANCE)) {
+                        y = copySign(POSITIVE_INFINITY, φ);
                     } else {
-                        y = copySign(a <= (PI/2 + ANGULAR_TOLERANCE) ? POSITIVE_INFINITY : NaN, φ);
+                        y = NaN;
                     }
                     dstPts[dstOff] = y;
                 }
@@ -485,8 +489,10 @@ public class Mercator extends ConformalP
                     final double a = abs(φ);
                     if (a < PI/2) {
                         y = log(tan(PI/4 + 0.5*φ));    // Part of Snyder (7-2)
+                    } else if (a <= (PI/2 + ANGULAR_TOLERANCE)) {
+                        y = copySign(POSITIVE_INFINITY, φ);
                     } else {
-                        y = copySign(a <= (PI/2 + ANGULAR_TOLERANCE) ? POSITIVE_INFINITY : NaN, φ);
+                        y = NaN;
                     }
                 }
                 dstPts[dstOff  ] = srcPts[srcOff];
@@ -519,8 +525,10 @@ public class Mercator extends ConformalP
                         final double y;
                         if (a < PI/2) {
                             y = log(tan(PI/4 + 0.5*φ));     // Part of Snyder (7-2)
+                        } else if (a <= (PI/2 + ANGULAR_TOLERANCE)) {
+                            y = copySign(POSITIVE_INFINITY, φ);
                         } else {
-                            y = copySign(a <= (PI/2 + ANGULAR_TOLERANCE) ? POSITIVE_INFINITY : NaN, φ);
+                            y = NaN;
                         }
                         dstPts[dstOff] = y;
                     }

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ProjectionException.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ProjectionException.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ProjectionException.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ProjectionException.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -78,14 +78,4 @@ public class ProjectionException extends
     ProjectionException(final short code) {
         this(Errors.format(code));
     }
-
-    /**
-     * Constructs a new exception with the specified detail message.
-     *
-     * @param code One of the constants suitable for {@link Errors#format(short)}.
-     * @param value An argument value to be formatted.
-     */
-    ProjectionException(final short code, final Object value) {
-        this(Errors.format(code, value));
-    }
 }

Modified: sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -59,7 +59,7 @@ import static org.apache.sis.internal.re
  * @author  Martin Desruisseaux (Geomatys)
  * @author  Rémi Maréchal (Geomatys)
  * @since   0.6
- * @version 0.7
+ * @version 0.8
  * @module
  *
  * @see Mercator
@@ -314,13 +314,34 @@ public class TransverseMercator extends
                             final double[] dstPts, final int dstOff,
                             final boolean derivate) throws ProjectionException
     {
-        final double λ     = srcPts[srcOff  ];
+        final double λ = srcPts[srcOff];
+        if (abs(λ) >= (0.9*PI/2)) {
+            /*
+             * The Transverse Mercator projection is conceptually a Mercator projection rotated by 90°.
+             * In Mercator projection, y values tend toward infinity for latitudes close to ±90°.
+             * In Transverse Mercator, x values tend toward infinity for longitudes close to ±90°
+             * at equator and after subtraction of central meridian. After we pass the 90° limit,
+             * the Transverse Mercator results at (90° + Δ) are the same as for (90° - Δ).
+             *
+             * Problem is that 90° is an ordinary longitude value, not even close to the limit of longitude
+             * values range (±180°). So having f(π/2+Δ, φ) = f(π/2-Δ, φ) results in wrong behavior in some
+             * algorithms like the one used by Envelopes.transform(CoordinateOperation, Envelope).
+             * Since a distance of 90° from central meridian is far outside the Transverse Mercator
+             * domain of validity anyway, we do not let the user go further.
+             *
+             * In the particular case of ellipsoidal formulas, we put a limit of 81° instead of 90°
+             * because experience shows that results close to equator become chaotic after 85° when
+             * using WGS84 ellipsoid. We do not need to reduce the limit for the spherical formulas,
+             * because the mathematic are simpler and the function still smooth until 90°.
+             */
+            throw new ProjectionException(Errors.Keys.OutsideDomainOfValidity);
+        }
         final double φ     = srcPts[srcOff+1];
         final double sinλ  = sin(λ);
         final double ℯsinφ = sin(φ) * eccentricity;
         final double Q     = asinh(tan(φ)) - atanh(ℯsinφ) * eccentricity;
-        final double coshQ = cosh(Q);
-        final double η0    = atanh(sinλ / coshQ);
+        final double coshQ = cosh(Q);                                       // Can not be smaller than 1.
+        final double η0    = atanh(sinλ / coshQ);                           // Tends toward ±∞ if λ → ±90°.
         /*
          * Original formula: η0 = atanh(sin(λ) * cos(β)) where
          * cos(β) = cos(atan(sinh(Q)))
@@ -596,7 +617,11 @@ public class TransverseMercator extends
                                 final double[] dstPts, final int dstOff,
                                 final boolean derivate) throws ProjectionException
         {
-            final double λ    = srcPts[srcOff  ];
+            final double λ = srcPts[srcOff  ];
+            if (abs(λ) > PI/2) {
+                // See comment in the overridden class.
+                throw new ProjectionException(Errors.Keys.OutsideDomainOfValidity);
+            }
             final double φ    = srcPts[srcOff+1];
             final double sinλ = sin(λ);
             final double cosλ = cos(λ);

Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/geometry/EnvelopesTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/geometry/EnvelopesTest.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/geometry/EnvelopesTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/geometry/EnvelopesTest.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -16,34 +16,87 @@
  */
 package org.apache.sis.geometry;
 
+import java.util.Collections;
 import org.opengis.geometry.Envelope;
 import org.opengis.util.FactoryException;
-import org.apache.sis.test.TestCase;
+import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.operation.CoordinateOperation;
+import org.opengis.referencing.operation.MathTransform2D;
+import org.opengis.referencing.operation.TransformException;
+import org.apache.sis.referencing.crs.DefaultCompoundCRS;
+import org.apache.sis.referencing.crs.HardCodedCRS;
+import org.apache.sis.referencing.operation.transform.MathTransformWrapper;
 import org.apache.sis.test.DependsOn;
 import org.junit.Test;
 
-import static org.apache.sis.test.Assert.*;
+import static org.apache.sis.test.ReferencingAssert.*;
 import static org.opengis.test.Validators.validate;
 
 
 /**
  * Tests the {@link Envelopes} class.
+ * This class inherits the test methods defined in {@link TransformTestCase}.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @since   0.3
- * @version 0.3
+ * @version 0.8
  * @module
  */
 @DependsOn({
     GeneralEnvelopeTest.class,
     CurveExtremumTest.class
 })
-public final strictfp class EnvelopesTest extends TestCase {
+public final strictfp class EnvelopesTest extends TransformTestCase<GeneralEnvelope> {
+    /**
+     * Creates an envelope for the given CRS and coordinate values.
+     */
+    @Override
+    GeneralEnvelope createFromExtremums(CoordinateReferenceSystem crs, double xmin, double ymin, double xmax, double ymax) {
+        final GeneralEnvelope env = new GeneralEnvelope(crs);
+        env.setRange(0, xmin, xmax);
+        env.setRange(1, ymin, ymax);
+        return env;
+    }
 
-    /*
-     * Tests of the 'transform' methods are not yet ported because they need more MathTransform
-     * implementations. Those tests will be ported in a future Apache SIS version.
+    /**
+     * Transforms an envelope using the given math transform.
+     * This transformation can not handle poles.
+     *
+     * <p>This method wraps the math transform into an opaque object for hiding the fact that the given
+     * transform implement the {@link MathTransform2D} interface. The intend is to disable optimization
+     * paths (if any), in order to test the generic path.</p>
      */
+    @Override
+    GeneralEnvelope transform(CoordinateReferenceSystem targetCRS, MathTransform2D transform, GeneralEnvelope envelope) throws TransformException {
+        final GeneralEnvelope env = Envelopes.transform(new MathTransformWrapper(transform), envelope);
+        env.setCoordinateReferenceSystem(targetCRS);
+        return env;
+    }
+
+    /**
+     * Transforms an envelope using the given operation.
+     * This transformation can handle poles.
+     */
+    @Override
+    GeneralEnvelope transform(CoordinateOperation operation, GeneralEnvelope envelope) throws TransformException {
+        return Envelopes.transform(operation, envelope);
+    }
+
+    /**
+     * Returns {@code true} if the outer envelope contains the inner one.
+     */
+    @Override
+    boolean contains(GeneralEnvelope outer, GeneralEnvelope inner) {
+        return outer.contains(inner);
+    }
+
+    /**
+     * Asserts that the given envelope is equals to the expected value.
+     */
+    @Override
+    void assertGeometryEquals(GeneralEnvelope expected, GeneralEnvelope actual, double tolx, double toly) {
+        assertEnvelopeEquals(expected, actual, tolx, toly);
+    }
 
     /**
      * Tests {@link Envelopes#fromWKT(CharSequence)}. This test is provided as a matter of principle,
@@ -83,4 +136,39 @@ public final strictfp class EnvelopesTes
         envelope.setRange(1, 20, 25);
         assertEquals("POLYGON((40 20, 40 25, 50 25, 50 20, 40 20))", Envelopes.toPolygonWKT(envelope));
     }
+
+    /**
+     * Tests the transformation of an envelope from a 4D CRS to a 2D CRS
+     * where the ordinates in one dimension are NaN.
+     *
+     * @throws TransformException if an error occurred while transforming the envelope.
+     *
+     * @since 0.8
+     */
+    @Test
+    public void testTransform4to2D() throws TransformException {
+        final CoordinateReferenceSystem targetCRS = HardCodedCRS.WGS84;
+        final CoordinateReferenceSystem sourceCRS = new DefaultCompoundCRS(
+                Collections.singletonMap(DefaultCompoundCRS.NAME_KEY, "4D CRS"),
+                HardCodedCRS.WGS84,
+                HardCodedCRS.GRAVITY_RELATED_HEIGHT,
+                HardCodedCRS.TIME);
+
+        final GeneralEnvelope env = new GeneralEnvelope(sourceCRS);
+        env.setRange(0, -170, 170);
+        env.setRange(1, -80,   80);
+        env.setRange(2, -50,  -50);
+        env.setRange(3, Double.NaN, Double.NaN);
+        assertFalse("isAllNaN", env.isAllNaN());        // Opportunist test (not really the topic of this method).
+        assertTrue ("isEmpty",  env.isEmpty());         // Opportunist test (not really the topic of this method).
+        /*
+         * If the referencing framework has selected the CopyTransform implementation
+         * as expected, then the envelope ordinates should not be NaN.
+         */
+        final Envelope env2D = Envelopes.transform(env, targetCRS);
+        assertEquals(-170, env2D.getMinimum(0), 0);
+        assertEquals( 170, env2D.getMaximum(0), 0);
+        assertEquals( -80, env2D.getMinimum(1), 0);
+        assertEquals(  80, env2D.getMaximum(1), 0);
+    }
 }

Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/TransverseMercatorTest.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/TransverseMercatorTest.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/TransverseMercatorTest.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/projection/TransverseMercatorTest.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -158,6 +158,10 @@ public final strictfp class TransverseMe
          */
         final double[] source = CoordinateDomain.GEOGRAPHIC_RADIANS_HALF_λ.generateRandomInput(new Random(5346144739450824145L), 2, 10);
         final double[] target = new double[source.length];
+        for (int i=0; i<source.length; i+=2) {
+            // A longitude range of [-90 … +90]° is still too wide for Transverse Mercator. Reduce to [-45 … +45]°.
+            source[i] /= 2;
+        }
         transform.transform(source, 0, target, 0, 10);
         transform = assertSerializedEquals(transform);
         tolerance = Formulas.LINEAR_TOLERANCE;

Copied: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java (from r1750764, sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java)
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java?p2=sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java&p1=sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java&r1=1750764&r2=1750766&rev=1750766&view=diff
==============================================================================
--- sis/branches/JDK7/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/transform/MathTransformWrapper.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -29,7 +29,7 @@ import org.apache.sis.io.wkt.Formattable
 import org.apache.sis.io.wkt.UnformattableObjectException;
 
 // Branch-dependent imports
-import java.util.Objects;
+import org.apache.sis.internal.jdk7.Objects;
 
 
 /**

Modified: sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-referencing/src/test/java/org/apache/sis/test/suite/ReferencingTestSuite.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -26,7 +26,7 @@ import org.junit.BeforeClass;
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3
- * @version 0.7
+ * @version 0.8
  * @module
  */
 @Suite.SuiteClasses({
@@ -233,6 +233,7 @@ import org.junit.BeforeClass;
     org.apache.sis.geometry.ImmutableEnvelopeTest.class,
     org.apache.sis.geometry.Envelope2DTest.class,
     org.apache.sis.geometry.CurveExtremumTest.class,
+    org.apache.sis.geometry.Shapes2DTest.class,                 // Simpler than EnvelopesTest.
     org.apache.sis.geometry.EnvelopesTest.class,
     org.apache.sis.internal.referencing.ServicesForMetadataTest.class,
 

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/system/XMLInputFactory.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/system/XMLInputFactory.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/system/XMLInputFactory.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/internal/system/XMLInputFactory.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -37,7 +37,7 @@ import org.apache.sis.util.Static;
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.4
- * @version 0.4
+ * @version 0.8
  * @module
  */
 public final class XMLInputFactory extends Static {
@@ -52,6 +52,31 @@ public final class XMLInputFactory exten
     private XMLInputFactory() {
     }
 
+    /**
+     * Creates a new reader for the given object. The given object should be one of the types
+     * expected by a {@code createXMLStreamReader(…)} method defined in this class.
+     *
+     * <p>Note that this method does <strong>not</strong> open streams from files, paths or URLs.
+     * Creating input streams and closing them after usage are caller's responsibility.</p>
+     *
+     * @param  in where to read from.
+     * @return the reader, or {@code null} if the given file where not recognized.
+     * @throws XMLStreamException if the type of the given input is one recognized types,
+     *         but despite that the reader can not be created.
+     *
+     * @since 0.8
+     */
+    public static XMLStreamReader createFromAny(final Object in) throws XMLStreamException {
+        if (in instanceof XMLStreamReader) return                      ((XMLStreamReader) in);
+        if (in instanceof XMLEventReader)  return createXMLStreamReader((XMLEventReader)  in);
+        if (in instanceof InputSource)     return createXMLStreamReader((InputSource)     in);
+        if (in instanceof InputStream)     return createXMLStreamReader((InputStream)     in);
+        if (in instanceof Reader)          return createXMLStreamReader((Reader)          in);
+        if (in instanceof Source)          return createXMLStreamReader((Source)          in);
+        if (in instanceof Node)            return createXMLStreamReader((Node)            in);
+        return null;
+    }
+
     /*
      * Do not provide convenience method for java.io.File, because the caller needs to close the created
      * input stream himself (this is not done by XMLInputFactory.close(), despite its method name).
@@ -60,9 +85,9 @@ public final class XMLInputFactory exten
     /**
      * Creates a new reader for the given stream.
      *
-     * @param  in Where to read from.
-     * @return The reader.
-     * @throws XMLStreamException If the reader can not be created.
+     * @param  in where to read from.
+     * @return the reader.
+     * @throws XMLStreamException if the reader can not be created.
      */
     public static XMLStreamReader createXMLStreamReader(final InputStream in) throws XMLStreamException {
         return FACTORY.createXMLStreamReader(in);
@@ -71,9 +96,9 @@ public final class XMLInputFactory exten
     /**
      * Creates a new reader for the given stream.
      *
-     * @param  in Where to read from.
-     * @return The reader.
-     * @throws XMLStreamException If the reader can not be created.
+     * @param  in where to read from.
+     * @return the reader.
+     * @throws XMLStreamException if the reader can not be created.
      */
     public static XMLStreamReader createXMLStreamReader(final Reader in) throws XMLStreamException {
         return FACTORY.createXMLStreamReader(in);
@@ -82,9 +107,9 @@ public final class XMLInputFactory exten
     /**
      * Creates a new reader for the given source.
      *
-     * @param  in Where to read from.
-     * @return The reader.
-     * @throws XMLStreamException If the reader can not be created.
+     * @param  in where to read from.
+     * @return the reader.
+     * @throws XMLStreamException if the reader can not be created.
      */
     public static XMLStreamReader createXMLStreamReader(final InputSource in) throws XMLStreamException {
         return FACTORY.createXMLStreamReader(new SAXSource(in));
@@ -93,9 +118,9 @@ public final class XMLInputFactory exten
     /**
      * Creates a new reader for the given source.
      *
-     * @param  in Where to read from.
-     * @return The reader.
-     * @throws XMLStreamException If the reader can not be created.
+     * @param  in where to read from.
+     * @return the reader.
+     * @throws XMLStreamException if the reader can not be created.
      */
     public static XMLStreamReader createXMLStreamReader(final XMLEventReader in) throws XMLStreamException {
         return FACTORY.createXMLStreamReader(new StAXSource(in));
@@ -104,9 +129,9 @@ public final class XMLInputFactory exten
     /**
      * Creates a new reader for the given source.
      *
-     * @param  in Where to read from.
-     * @return The reader.
-     * @throws XMLStreamException If the reader can not be created.
+     * @param  in where to read from.
+     * @return the reader.
+     * @throws XMLStreamException if the reader can not be created.
      */
     public static XMLStreamReader createXMLStreamReader(final Node in) throws XMLStreamException {
         return FACTORY.createXMLStreamReader(new DOMSource(in));
@@ -115,9 +140,9 @@ public final class XMLInputFactory exten
     /**
      * Creates a new reader for the given source.
      *
-     * @param  in Where to read from.
-     * @return The reader.
-     * @throws XMLStreamException If the reader can not be created.
+     * @param  in where to read from.
+     * @return the reader.
+     * @throws XMLStreamException if the reader can not be created.
      */
     public static XMLStreamReader createXMLStreamReader(final Source in) throws XMLStreamException {
         return FACTORY.createXMLStreamReader(in);

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -201,6 +201,11 @@ public final class Errors extends Indexe
         public static final short CloneNotSupported_1 = 13;
 
         /**
+         * This {0} reader is closed.
+         */
+        public static final short ClosedReader_1 = 231;
+
+        /**
          * Axis directions {0} and {1} are colinear.
          */
         public static final short ColinearAxisDirections_2 = 14;
@@ -408,6 +413,11 @@ public final class Errors extends Indexe
         public static final short IllegalIdentifierForCodespace_2 = 208;
 
         /**
+         * The {0} reader does not accept inputs of type ‘{1}’.
+         */
+        public static final short IllegalInputTypeForReader_2 = 230;
+
+        /**
          * The “{0}” language is not recognized.
          */
         public static final short IllegalLanguageCode_1 = 36;

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors.properties [ISO-8859-1] Thu Jun 30 10:21:49 2016
@@ -51,6 +51,7 @@ CanNotUseGeodeticParameters_2     = Can
 CircularReference                 = Circular reference.
 ClassNotFinal_1                   = Class \u2018{0}\u2019 is not final.
 CloneNotSupported_1               = Can not clone an object of type \u2018{0}\u2019.
+ClosedReader_1                    = This {0} reader is closed.
 ColinearAxisDirections_2          = Axis directions {0} and {1} are colinear.
 CoordinateOperationNotFound_2     = Coordinate conversion of transformation from system \u201c{0}\u201d to \u201c{1}\u201d has not been found.
 DatabaseError_2                   = Database error while creating a \u2018{0}\u2019 object for code \u201c{1}\u201d.
@@ -91,6 +92,7 @@ IllegalCoordinateSystem_1         = Coor
 IllegalCRSType_1                  = Coordinate reference system can not be of type \u2018{0}\u2019.
 IllegalFormatPatternForClass_2    = The \u201c{1}\u201d pattern can not be applied to formating of objects of type \u2018{0}\u2019.
 IllegalIdentifierForCodespace_2   = \u201c{1}\u201d is not a valid identifier for the \u201c{0}\u201d code space.
+IllegalInputTypeForReader_2       = The {0} reader does not accept inputs of type \u2018{1}\u2019.
 IllegalLanguageCode_1             = The \u201c{0}\u201d language is not recognized.
 IllegalMemberType_2               = Member \u201c{0}\u201d can not be associated to type \u201c{1}\u201d.
 IllegalOperationDimension_3       = Dimensions of \u201c{0}\u201d operation can not be ({1} \u2192 {2}).

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/util/resources/Errors_fr.properties [ISO-8859-1] Thu Jun 30 10:21:49 2016
@@ -48,6 +48,7 @@ CanNotUseGeodeticParameters_2     = Ne p
 CircularReference                 = R\u00e9f\u00e9rence circulaire.
 ClassNotFinal_1                   = La classe \u2018{0}\u2019 n\u2019est pas finale.
 CloneNotSupported_1               = Un objet de type \u2018{0}\u2019 ne peut pas \u00eatre clon\u00e9.
+ClosedReader_1                    = Ce lecteur {0} est ferm\u00e9.
 ColinearAxisDirections_2          = Les directions d\u2019axes {0} et {1} sont colin\u00e9aires.
 CoordinateOperationNotFound_2     = La conversion ou transformation des coordonn\u00e9es du syst\u00e8me \u00ab\u202f{0}\u202f\u00bb vers \u00ab\u202f{1}\u202f\u00bb n\u2019a pas \u00e9t\u00e9 trouv\u00e9e.
 DatabaseError_2                   = Erreur de base de donn\u00e9es lors de la cr\u00e9ation d\u2019un objet \u2018{0}\u2019 pour le code \u00ab\u202f{1}\u202f\u00bb.
@@ -88,6 +89,7 @@ IllegalCoordinateSystem_1         = Le s
 IllegalCRSType_1                  = Le syst\u00e8me de r\u00e9f\u00e9rence des coordonn\u00e9es ne peut pas \u00eatre de type \u2018{0}\u2019.
 IllegalFormatPatternForClass_2    = Le mod\u00e8le \u00ab\u202f{1}\u202f\u00bb ne peut pas \u00eatre appliqu\u00e9 au formatage d\u2019objets de type \u2018{0}\u2019.
 IllegalIdentifierForCodespace_2   = \u00ab\u202f{1}\u202f\u00bb n\u2019est pas un identifiant valide pour l\u2019espace de codes \u00ab\u202f{0}\u202f\u00bb.
+IllegalInputTypeForReader_2       = Le lecteur {0} n\u2019accepte pas des entr\u00e9s de type \u2018{1}\u2019.
 IllegalLanguageCode_1             = Le code de langue \u00ab\u202f{0}\u202f\u00bb n\u2019est pas reconnu.
 IllegalMemberType_2               = Le membre \u00ab\u202f{0}\u202f\u00bb ne peut pas \u00eatre associ\u00e9 au type \u00ab\u202f{1}\u202f\u00bb.
 IllegalOperationDimension_3       = Les dimensions de l\u2019op\u00e9ration \u00ab\u202f{0}\u202f\u00bb ne peuvent pas \u00eatre ({1} \u2192 {2}).

Modified: sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/xml/XML.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/xml/XML.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/xml/XML.java [UTF-8] (original)
+++ sis/branches/JDK6/core/sis-utility/src/main/java/org/apache/sis/xml/XML.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -63,7 +63,7 @@ import static org.apache.sis.util.Argume
  * @author  Cédric Briançon (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3
- * @version 0.4
+ * @version 0.8
  * @module
  */
 public final class XML extends Static {
@@ -353,7 +353,7 @@ public final class XML extends Static {
      *
      * @param  object The root of content tree to be marshalled.
      * @return The XML representation of the given object.
-     * @throws JAXBException If an error occurred during the marshalling.
+     * @throws JAXBException if an error occurred during the marshalling.
      */
     public static String marshal(final Object object) throws JAXBException {
         ensureNonNull("object", object);
@@ -370,7 +370,7 @@ public final class XML extends Static {
      *
      * @param  object The root of content tree to be marshalled.
      * @param  output The stream where to write.
-     * @throws JAXBException If an error occurred during the marshalling.
+     * @throws JAXBException if an error occurred during the marshalling.
      */
     public static void marshal(final Object object, final OutputStream output) throws JAXBException {
         ensureNonNull("object", object);
@@ -386,7 +386,7 @@ public final class XML extends Static {
      *
      * @param  object The root of content tree to be marshalled.
      * @param  output The file to be written.
-     * @throws JAXBException If an error occurred during the marshalling.
+     * @throws JAXBException if an error occurred during the marshalling.
      */
     public static void marshal(final Object object, final File output) throws JAXBException {
         ensureNonNull("object", object);
@@ -409,7 +409,7 @@ public final class XML extends Static {
      * @param  object The root of content tree to be marshalled.
      * @param  output The file to be written.
      * @param  properties An optional map of properties to give to the marshaller, or {@code null} if none.
-     * @throws JAXBException If a property has an illegal value, or if an error occurred during the marshalling.
+     * @throws JAXBException if a property has an illegal value, or if an error occurred during the marshalling.
      *
      * @since 0.4
      */
@@ -434,7 +434,7 @@ public final class XML extends Static {
      *
      * @param  xml The XML representation of an object.
      * @return The object unmarshalled from the given input.
-     * @throws JAXBException If an error occurred during the unmarshalling.
+     * @throws JAXBException if an error occurred during the unmarshalling.
      */
     public static Object unmarshal(final String xml) throws JAXBException {
         ensureNonNull("input", xml);
@@ -451,7 +451,7 @@ public final class XML extends Static {
      *
      * @param  input The stream from which to read a XML representation.
      * @return The object unmarshalled from the given input.
-     * @throws JAXBException If an error occurred during the unmarshalling.
+     * @throws JAXBException if an error occurred during the unmarshalling.
      */
     public static Object unmarshal(final InputStream input) throws JAXBException {
         ensureNonNull("input", input);
@@ -467,7 +467,7 @@ public final class XML extends Static {
      *
      * @param  input The URL from which to read a XML representation.
      * @return The object unmarshalled from the given input.
-     * @throws JAXBException If an error occurred during the unmarshalling.
+     * @throws JAXBException if an error occurred during the unmarshalling.
      */
     public static Object unmarshal(final URL input) throws JAXBException {
         ensureNonNull("input", input);
@@ -483,7 +483,7 @@ public final class XML extends Static {
      *
      * @param  input The file from which to read a XML representation.
      * @return The object unmarshalled from the given input.
-     * @throws JAXBException If an error occurred during the unmarshalling.
+     * @throws JAXBException if an error occurred during the unmarshalling.
      */
     public static Object unmarshal(final File input) throws JAXBException {
         ensureNonNull("input", input);
@@ -506,7 +506,7 @@ public final class XML extends Static {
      * @param  input The file from which to read a XML representation.
      * @param  properties An optional map of properties to give to the unmarshaller, or {@code null} if none.
      * @return The object unmarshalled from the given input.
-     * @throws JAXBException If a property has an illegal value, or if an error occurred during the unmarshalling.
+     * @throws JAXBException if a property has an illegal value, or if an error occurred during the unmarshalling.
      *
      * @since 0.4
      */

Modified: sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/MetadataReader.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -188,8 +188,8 @@ final class MetadataReader {
 
     /**
      * Invoked when a non-fatal exception occurred while reading metadata.
-     * This method will send a record to the registered listeners if any,
-     * or will log the record otherwise.
+     * This method sends a record to the registered listeners if any,
+     * or logs the record otherwise.
      */
     private void warning(final Exception e) {
         decoder.listeners.warning(null, e);

Modified: sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStore.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -19,7 +19,9 @@ package org.apache.sis.storage.netcdf;
 import java.io.IOException;
 import org.opengis.metadata.Metadata;
 import org.apache.sis.util.Debug;
+import org.apache.sis.util.Classes;
 import org.apache.sis.util.ArgumentChecks;
+import org.apache.sis.util.resources.Errors;
 import org.apache.sis.storage.DataStore;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.StorageConnector;
@@ -33,7 +35,7 @@ import org.apache.sis.metadata.Modifiabl
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   0.3
- * @version 0.3
+ * @version 0.8
  * @module
  *
  * @see NetcdfStoreProvider
@@ -56,7 +58,7 @@ public class NetcdfStore extends DataSto
      * needed resource.
      *
      * @param  storage Information about the storage (URL, stream, {@link ucar.nc2.NetcdfFile} instance, <i>etc</i>).
-     * @throws DataStoreException If an error occurred while opening the NetCDF file.
+     * @throws DataStoreException if an error occurred while opening the NetCDF file.
      */
     public NetcdfStore(final StorageConnector storage) throws DataStoreException {
         ArgumentChecks.ensureNonNull("storage", storage);
@@ -65,6 +67,10 @@ public class NetcdfStore extends DataSto
         } catch (IOException e) {
             throw new DataStoreException(e);
         }
+        if (decoder == null) {
+            throw new DataStoreException(Errors.format(Errors.Keys.IllegalInputTypeForReader_2,
+                    "NetCDF", Classes.getClass(storage.getStorage())));
+        }
     }
 
     /**
@@ -73,7 +79,7 @@ public class NetcdfStore extends DataSto
      * data quality, usage constraints and more.
      *
      * @return Information about the dataset.
-     * @throws DataStoreException If an error occurred while reading the data.
+     * @throws DataStoreException if an error occurred while reading the data.
      */
     @Override
     public Metadata getMetadata() throws DataStoreException {
@@ -92,7 +98,7 @@ public class NetcdfStore extends DataSto
     /**
      * Closes this NetCDF store and releases any underlying resources.
      *
-     * @throws DataStoreException If an error occurred while closing the NetCDF file.
+     * @throws DataStoreException if an error occurred while closing the NetCDF file.
      */
     @Override
     public void close() throws DataStoreException {

Modified: sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-netcdf/src/main/java/org/apache/sis/storage/netcdf/NetcdfStoreProvider.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -202,7 +202,7 @@ public class NetcdfStoreProvider extends
      *
      * @param  storage Information about the storage (URL, stream, {@link ucar.nc2.NetcdfFile} instance, <i>etc</i>).
      * @return A data store implementation associated with this provider for the given storage.
-     * @throws DataStoreException If an error occurred while creating the data store instance.
+     * @throws DataStoreException if an error occurred while creating the data store instance.
      */
     @Override
     public DataStore open(final StorageConnector storage) throws DataStoreException {
@@ -215,9 +215,9 @@ public class NetcdfStoreProvider extends
      *
      * @param  listeners Where to send the warnings.
      * @param  storage Information about the input (file, input stream, <i>etc.</i>)
-     * @return The decoder for the given input.
-     * @throws IOException If an error occurred while opening the NetCDF file.
-     * @throws DataStoreException If a logical error (other than I/O) occurred.
+     * @return The decoder for the given input, or {@code null} if the input type is not recognized.
+     * @throws IOException if an error occurred while opening the NetCDF file.
+     * @throws DataStoreException if a logical error (other than I/O) occurred.
      */
     static Decoder decoder(final WarningListeners<?> listeners, final StorageConnector storage)
             throws IOException, DataStoreException
@@ -252,9 +252,9 @@ public class NetcdfStoreProvider extends
      * @param  input  The NetCDF file object of filename string from which to read data.
      * @param  isUCAR {@code true} if {@code input} is an instance of the UCAR {@link ucar.nc2.NetcdfFile} object,
      *                or {@code false} if it is the filename as a {@code String}.
-     * @return The {@link DecoderWrapper} instance for the given input.
-     * @throws IOException If an error occurred while opening the NetCDF file.
-     * @throws DataStoreException If a logical error (other than I/O) occurred.
+     * @return The {@link DecoderWrapper} instance for the given input, or {@code null} if the input type is not recognized.
+     * @throws IOException if an error occurred while opening the NetCDF file.
+     * @throws DataStoreException if a logical error (other than I/O) occurred.
      */
     private static Decoder createByReflection(final WarningListeners<?> listeners, final Object input, final boolean isUCAR)
             throws IOException, DataStoreException

Modified: sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/IOUtilities.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/IOUtilities.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/IOUtilities.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/IOUtilities.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -390,7 +390,7 @@ public final class IOUtilities extends S
          */
         final Set<Object> optionSet;
         if (options == null || options.length == 0) {
-            optionSet = Collections.emptySet();
+            optionSet = Collections.<Object>singleton(StandardOpenOption.READ);
         } else {
             optionSet = new HashSet<Object>(Arrays.asList(options));
             optionSet.add(StandardOpenOption.READ);

Modified: sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/xml/Store.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/xml/Store.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/xml/Store.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/xml/Store.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -144,7 +144,7 @@ final class Store extends DataStore {
     private void unmarshal() throws DataStoreException {
         final StreamSource s = source;
         final Closeable in = input(s);
-        source = null; // Cleared first in case of error.
+        source = null;                          // Cleared first in case of error.
         if (in != null) try {
             try {
                 object = XML.unmarshal(s, properties());
@@ -197,7 +197,7 @@ final class Store extends DataStore {
     public void close() throws DataStoreException {
         object = null;
         final Closeable in = input(source);
-        source = null; // Cleared first in case of failure.
+        source = null;                          // Cleared first in case of failure.
         if (in != null) try {
             in.close();
         } catch (IOException e) {

Modified: sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java
URL: http://svn.apache.org/viewvc/sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java?rev=1750766&r1=1750765&r2=1750766&view=diff
==============================================================================
--- sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java [UTF-8] (original)
+++ sis/branches/JDK6/storage/sis-storage/src/main/java/org/apache/sis/storage/DataStore.java [UTF-8] Thu Jun 30 10:21:49 2016
@@ -94,7 +94,7 @@ public abstract class DataStore implemen
      * or distributor, data quality, update frequency, usage constraints and more.
      *
      * @return Information about the dataset, or {@code null} if none.
-     * @throws DataStoreException If an error occurred while reading the data.
+     * @throws DataStoreException if an error occurred while reading the data.
      */
     public abstract Metadata getMetadata() throws DataStoreException;
 
@@ -122,7 +122,7 @@ public abstract class DataStore implemen
      * }
      *
      * @param  listener The listener to add.
-     * @throws IllegalArgumentException If the given listener is already registered in this data store.
+     * @throws IllegalArgumentException if the given listener is already registered in this data store.
      */
     public void addWarningListener(final WarningListener<? super DataStore> listener)
             throws IllegalArgumentException
@@ -134,7 +134,7 @@ public abstract class DataStore implemen
      * Removes a previously registered listener.
      *
      * @param  listener The listener to remove.
-     * @throws NoSuchElementException If the given listener is not registered in this data store.
+     * @throws NoSuchElementException if the given listener is not registered in this data store.
      */
     public void removeWarningListener(final WarningListener<? super DataStore> listener)
             throws NoSuchElementException
@@ -145,7 +145,7 @@ public abstract class DataStore implemen
     /**
      * Closes this data store and releases any underlying resources.
      *
-     * @throws DataStoreException If an error occurred while closing this data store.
+     * @throws DataStoreException if an error occurred while closing this data store.
      */
     public abstract void close() throws DataStoreException;
 }



Mime
View raw message