You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2022/12/10 17:08:39 UTC

[sis] branch geoapi-4.0 updated (929bc5d9c1 -> c33f347075)

This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a change to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git


    from 929bc5d9c1 Delete some placeholder defined in the `JDK9` internal class, now replaced by their standard Java 11 counterparts.
     new 4108d96770 Replace more `JDK9` placeholder. Those replacements are more risky because they introduce slight behavioral changes (range checks in `Arrays.equals(…)`, different iteration order in `Set` and `Map`).
     new c33f347075 Rename `JDK9` as `JDK17` since it is now a placeholder for methods defined after Java 11.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/sis/internal/gui/ImageConverter.java    |   5 +-
 .../sis/coverage/grid/GridCoordinatesView.java     |   5 +-
 .../java/org/apache/sis/image/BandSelectImage.java |   3 +-
 .../sis/image/PositionalConsistencyImage.java      |   3 +-
 .../org/apache/sis/image/SourceAlignedImage.java   |   3 +-
 .../internal/coverage/j2d/BatchComputedImage.java  |   4 +-
 .../sis/internal/coverage/j2d/TiledImage.java      |   4 +-
 .../apache/sis/internal/feature/j2d/Wrapper.java   |   4 +-
 .../sis/internal/feature/jts/ShapeConverter.java   |   5 +-
 .../apache/sis/internal/filter/sqlmm/Registry.java |   4 +-
 .../apache/sis/coverage/grid/GridExtentTest.java   |   4 +-
 .../org/apache/sis/geometry/CoordinateFormat.java  |   3 +-
 .../internal/referencing/CoordinateOperations.java |   3 +-
 .../java/org/apache/sis/io/wkt/WKTDictionary.java  |   3 +-
 .../java/org/apache/sis/referencing/CommonCRS.java |   3 +-
 .../sis/internal/referencing/WKTKeywordsTest.java  |   5 +-
 .../operation/HardCodedConversions.java            |   5 +-
 .../sis/internal/{jdk9 => jdk17}/HexFormat.java    |   2 +-
 .../java/org/apache/sis/internal/jdk17/JDK17.java  |  72 ++++++
 .../sis/internal/{jdk9 => jdk17}/package-info.java |   2 +-
 .../java/org/apache/sis/internal/jdk9/JDK9.java    | 258 ---------------------
 .../main/java/org/apache/sis/math/ArrayVector.java |  13 +-
 .../src/main/java/org/apache/sis/math/Vector.java  |  36 +--
 .../apache/sis/util/collection/IntegerList.java    |   3 +-
 .../storage/inflater/HorizontalPredictor.java      |   4 +-
 .../storage/inflater/PredictorChannel.java         |   4 +-
 .../sis/internal/netcdf/impl/VariableInfo.java     |   3 +-
 .../sis/internal/netcdf/ucar/VariableWrapper.java  |   4 +-
 .../sis/internal/sql/feature/BinaryEncoding.java   |   2 +-
 .../sis/internal/storage/StoreUtilities.java       |   3 +-
 .../sis/internal/storage/esri/CharactersView.java  |   6 +-
 .../apache/sis/storage/event/StoreListeners.java   |   3 +-
 32 files changed, 138 insertions(+), 343 deletions(-)
 rename core/sis-utility/src/main/java/org/apache/sis/internal/{jdk9 => jdk17}/HexFormat.java (98%)
 create mode 100644 core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/JDK17.java
 rename core/sis-utility/src/main/java/org/apache/sis/internal/{jdk9 => jdk17}/package-info.java (96%)
 delete mode 100644 core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java


[sis] 01/02: Replace more `JDK9` placeholder. Those replacements are more risky because they introduce slight behavioral changes (range checks in `Arrays.equals(…)`, different iteration order in `Set` and `Map`).

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 4108d967709f51b953627a789a63536856120f7f
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Sat Dec 10 18:00:58 2022 +0100

    Replace more `JDK9` placeholder.
    Those replacements are more risky because they introduce slight behavioral changes
    (range checks in `Arrays.equals(…)`, different iteration order in `Set` and `Map`).
---
 .../apache/sis/internal/gui/ImageConverter.java    |   5 +-
 .../sis/coverage/grid/GridCoordinatesView.java     |   5 +-
 .../java/org/apache/sis/image/BandSelectImage.java |   3 +-
 .../sis/image/PositionalConsistencyImage.java      |   3 +-
 .../org/apache/sis/image/SourceAlignedImage.java   |   3 +-
 .../internal/coverage/j2d/BatchComputedImage.java  |   4 +-
 .../sis/internal/coverage/j2d/TiledImage.java      |   4 +-
 .../apache/sis/internal/feature/j2d/Wrapper.java   |   4 +-
 .../sis/internal/feature/jts/ShapeConverter.java   |   5 +-
 .../apache/sis/coverage/grid/GridExtentTest.java   |   4 +-
 .../org/apache/sis/geometry/CoordinateFormat.java  |   3 +-
 .../internal/referencing/CoordinateOperations.java |   3 +-
 .../java/org/apache/sis/io/wkt/WKTDictionary.java  |   3 +-
 .../java/org/apache/sis/referencing/CommonCRS.java |   3 +-
 .../sis/internal/referencing/WKTKeywordsTest.java  |   5 +-
 .../operation/HardCodedConversions.java            |   5 +-
 .../java/org/apache/sis/internal/jdk9/JDK9.java    | 185 ---------------------
 .../main/java/org/apache/sis/math/ArrayVector.java |  13 +-
 .../src/main/java/org/apache/sis/math/Vector.java  |  36 ++--
 .../apache/sis/util/collection/IntegerList.java    |   3 +-
 .../sis/internal/netcdf/impl/VariableInfo.java     |   3 +-
 .../sis/internal/netcdf/ucar/VariableWrapper.java  |   4 +-
 .../sis/internal/storage/StoreUtilities.java       |   3 +-
 .../apache/sis/storage/event/StoreListeners.java   |   3 +-
 24 files changed, 54 insertions(+), 258 deletions(-)

diff --git a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ImageConverter.java b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ImageConverter.java
index 77bed28dd8..6a80e6b18c 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ImageConverter.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/ImageConverter.java
@@ -39,7 +39,6 @@ import org.apache.sis.internal.coverage.j2d.ColorModelFactory;
 import org.apache.sis.internal.coverage.j2d.ImageUtilities;
 import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.internal.util.Numerics;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.util.logging.Logging;
 import org.apache.sis.measure.NumberRange;
 import org.apache.sis.math.Statistics;
@@ -70,7 +69,7 @@ final class ImageConverter extends Task<Statistics[]> {
      * Colors to apply on the mask image when that image is overlay on top of another image.
      * Current value is a transparent yellow color.
      */
-    private static final Map<NumberRange<?>,Color[]> MASK_TRANSPARENCY = JDK9.mapOf(
+    private static final Map<NumberRange<?>,Color[]> MASK_TRANSPARENCY = Map.of(
             NumberRange.create(0, true, 0, true), new Color[] {ColorModelFactory.TRANSPARENT},
             NumberRange.create(1, true, 1, true), new Color[] {new Color(0x30FFFF00, true)});
 
@@ -187,7 +186,7 @@ final class ImageConverter extends Task<Statistics[]> {
          */
         final ImageProcessor processor  = new ImageProcessor();
         final Statistics[]   statistics = processor.valueOfStatistics(source, sourceAOI, (DoubleUnaryOperator[]) null);
-        final RenderedImage  image      = processor.stretchColorRamp(source, JDK9.mapOf("multStdDev", 3, "statistics", statistics));
+        final RenderedImage  image      = processor.stretchColorRamp(source, Map.of("multStdDev", 3, "statistics", statistics));
         final RenderedImage  mask       = getMask(processor);
         final BufferedImage  buffer     = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
         final Graphics2D     graphics   = buffer.createGraphics();
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoordinatesView.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoordinatesView.java
index 77afa5611c..92d67f4201 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoordinatesView.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoordinatesView.java
@@ -20,7 +20,6 @@ import java.util.Arrays;
 import org.opengis.coverage.grid.GridCoordinates;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.ArgumentChecks;
-import org.apache.sis.internal.jdk9.JDK9;
 
 
 /**
@@ -129,8 +128,8 @@ final class GridCoordinatesView implements GridCoordinates {
          */
         if (object instanceof GridCoordinatesView) {
             final GridCoordinatesView that = (GridCoordinatesView) object;
-            return JDK9.equals(this.coordinates, this.offset, this.offset + this.getDimension(),
-                               that.coordinates, that.offset, that.offset + that.getDimension());
+            return Arrays.equals(this.coordinates, this.offset, this.offset + this.getDimension(),
+                                 that.coordinates, that.offset, that.offset + that.getDimension());
         }
         return false;
     }
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java
index 6d07a4e589..bc8c529794 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java
@@ -30,7 +30,6 @@ import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.internal.coverage.j2d.ImageUtilities;
 import org.apache.sis.internal.coverage.j2d.ColorModelFactory;
-import org.apache.sis.internal.jdk9.JDK9;
 
 
 /**
@@ -48,7 +47,7 @@ final class BandSelectImage extends SourceAlignedImage {
      *
      * @see #getProperty(String)
      */
-    private static final Set<String> INHERITED_PROPERTIES = JDK9.setOf(
+    private static final Set<String> INHERITED_PROPERTIES = Set.of(
             GRID_GEOMETRY_KEY, POSITIONAL_ACCURACY_KEY,         // Properties to forward as-is.
             SAMPLE_RESOLUTIONS_KEY, STATISTICS_KEY);            // Properties to forward after band reduction.
 
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/PositionalConsistencyImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/PositionalConsistencyImage.java
index 69c0b3988b..f6d684fecf 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/PositionalConsistencyImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/PositionalConsistencyImage.java
@@ -23,7 +23,6 @@ import java.awt.image.WritableRaster;
 import org.opengis.referencing.operation.MathTransform;
 import org.opengis.referencing.operation.TransformException;
 import org.apache.sis.internal.coverage.j2d.ColorModelFactory;
-import org.apache.sis.internal.jdk9.JDK9;
 
 
 /**
@@ -42,7 +41,7 @@ final class PositionalConsistencyImage extends SourceAlignedImage {
      *
      * @see #getPropertyNames()
      */
-    private static final Set<String> INHERITED_PROPERTIES = JDK9.setOf(
+    private static final Set<String> INHERITED_PROPERTIES = Set.of(
             GRID_GEOMETRY_KEY, POSITIONAL_ACCURACY_KEY, MASK_KEY);
 
     /**
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/SourceAlignedImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/SourceAlignedImage.java
index 907a701d1a..519b9a1545 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/SourceAlignedImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/SourceAlignedImage.java
@@ -25,7 +25,6 @@ import java.awt.image.RenderedImage;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.Disposable;
 import org.apache.sis.util.Workaround;
-import org.apache.sis.internal.jdk9.JDK9;
 
 
 /**
@@ -57,7 +56,7 @@ abstract class SourceAlignedImage extends ComputedImage {
      * May be used as the {@code inherit} argument in {@link #filterPropertyNames(String[], Set, String[])}.
      * Inheriting those properties make sense for operations that do not change pixel coordinates.
      */
-    static final Set<String> POSITIONAL_PROPERTIES = JDK9.setOf(GRID_GEOMETRY_KEY,
+    static final Set<String> POSITIONAL_PROPERTIES = Set.of(GRID_GEOMETRY_KEY,
             POSITIONAL_ACCURACY_KEY, ResampledImage.POSITIONAL_CONSISTENCY_KEY);
 
     /**
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java
index 616affc40f..33a002a98c 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java
@@ -17,7 +17,6 @@
 package org.apache.sis.internal.coverage.j2d;
 
 import java.util.Map;
-import java.util.Collections;
 import java.awt.Rectangle;
 import java.awt.Image;
 import java.awt.image.Raster;
@@ -26,7 +25,6 @@ import java.awt.image.RenderedImage;
 import java.awt.image.SampleModel;
 import java.awt.image.ImagingOpException;
 import org.apache.sis.image.ComputedImage;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.util.Disposable;
 import org.apache.sis.util.resources.Errors;
 
@@ -96,7 +94,7 @@ public abstract class BatchComputedImage extends ComputedImage {
      */
     protected BatchComputedImage(final SampleModel sampleModel, final Map<String,Object> properties, final RenderedImage... sources) {
         super(sampleModel, sources);
-        this.properties = (properties != null) ? JDK9.copyOf(properties) : Collections.emptyMap();
+        this.properties = (properties != null) ? Map.copyOf(properties) : Map.of();
     }
 
     /**
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TiledImage.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TiledImage.java
index 4d6d65b3a1..c850435090 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TiledImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TiledImage.java
@@ -17,13 +17,11 @@
 package org.apache.sis.internal.coverage.j2d;
 
 import java.util.Map;
-import java.util.Collections;
 import java.awt.Image;
 import java.awt.image.Raster;
 import java.awt.image.ColorModel;
 import java.awt.image.SampleModel;
 import org.apache.sis.image.PlanarImage;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
 
@@ -95,7 +93,7 @@ public class TiledImage extends PlanarImage {
         this.minTileX   = minTileX;
         this.minTileY   = minTileY;
         this.tiles      = tiles;
-        this.properties = (properties != null) ? JDK9.copyOf(properties) : Collections.emptyMap();
+        this.properties = (properties != null) ? Map.copyOf(properties) : Map.of();
     }
 
     /**
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Wrapper.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Wrapper.java
index 33b9a44b62..63b7f46d6e 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Wrapper.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Wrapper.java
@@ -17,6 +17,7 @@
 package org.apache.sis.internal.feature.j2d;
 
 import java.util.List;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.function.BiPredicate;
 import java.awt.Shape;
@@ -35,7 +36,6 @@ import org.apache.sis.internal.feature.GeometryWrapper;
 import org.apache.sis.internal.filter.sqlmm.SQLMM;
 import org.apache.sis.internal.referencing.j2d.ShapeUtilities;
 import org.apache.sis.internal.referencing.j2d.AbstractShape;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.Debug;
 
@@ -328,7 +328,7 @@ add:    for (;;) {
                         case PathIterator.SEG_QUADTO: n=4; break;
                         default: n=6; break;
                     }
-                    if (!JDK9.equals(p1, 0, n, p2, 0, n)) {
+                    if (!Arrays.equals(p1, 0, n, p2, 0, n)) {
                         return false;
                     }
                 }
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java
index c98cdad3dd..dd2ec5992f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/ShapeConverter.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import java.util.ArrayList;
 import java.awt.geom.PathIterator;
 import java.awt.geom.IllegalPathStateException;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.internal.referencing.j2d.AbstractShape;
 import org.locationtech.jts.geom.Geometry;
 import org.locationtech.jts.geom.GeometryFactory;
@@ -162,7 +161,7 @@ abstract class ShapeConverter {
 
         /** Returns a copy of current coordinate values as a JTS coordinate sequence. */
         @Override PackedCoordinateSequence toSequence(final boolean close) {
-            if (close && !JDK9.equals(buffer, 0, 2, buffer, length - 2, length)) {
+            if (close && !Arrays.equals(buffer, 0, 2, buffer, length - 2, length)) {
                 addPoint(buffer);
             }
             return new PackedCoordinateSequence.Double(buffer, length);
@@ -208,7 +207,7 @@ abstract class ShapeConverter {
 
         /** Returns a copy of current coordinate values as a JTS coordinate sequence. */
         @Override PackedCoordinateSequence toSequence(final boolean close) {
-            if (close && !JDK9.equals(buffer, 0, 2, buffer, length - 2, length)) {
+            if (close && !Arrays.equals(buffer, 0, 2, buffer, length - 2, length)) {
                 addPoint(buffer);
             }
             return new PackedCoordinateSequence.Float(buffer, length);
diff --git a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridExtentTest.java b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridExtentTest.java
index 30c198236c..bc401d52fb 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridExtentTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridExtentTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.sis.coverage.grid;
 
+import java.util.Map;
 import java.util.Locale;
 import java.io.IOException;
 import org.opengis.geometry.Envelope;
@@ -35,7 +36,6 @@ import org.apache.sis.referencing.operation.matrix.Matrix3;
 import org.apache.sis.referencing.crs.HardCodedCRS;
 import org.apache.sis.util.resources.Vocabulary;
 import org.apache.sis.internal.util.Numerics;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.test.TestCase;
 import org.junit.Test;
 
@@ -357,7 +357,7 @@ public final strictfp class GridExtentTest extends TestCase {
     @Test
     public void testGetSubspaceDimensions() {
         final GridExtent extent = new GridExtent(null, new long[] {100, 5, 200, 40}, new long[] {500, 5, 800, 40}, true);
-        assertMapEquals(JDK9.mapOf(1, 5L, 3, 40L), extent.getSliceCoordinates());
+        assertMapEquals(Map.of(1, 5L, 3, 40L), extent.getSliceCoordinates());
         assertArrayEquals(new int[] {0,  2  }, extent.getSubspaceDimensions(2));
         assertArrayEquals(new int[] {0,1,2  }, extent.getSubspaceDimensions(3));
         assertArrayEquals(new int[] {0,1,2,3}, extent.getSubspaceDimensions(4));
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
index 70df514e1d..ebd28b8b9d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
@@ -52,7 +52,6 @@ import org.apache.sis.internal.referencing.ReferencingUtilities;
 import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.internal.util.LocalizedParseException;
 import org.apache.sis.internal.util.Numerics;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.math.DecimalFunctions;
 import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.resources.Errors;
@@ -135,7 +134,7 @@ public class CoordinateFormat extends CompoundFormat<DirectPosition> {
      * For example if the unit of measurement of an axis is meter but the precision is 1000 metres,
      * then {@code CoordinateFormat} will automatically uses kilometres units instead of metres.
      */
-    private static final Set<Unit<?>> SCALABLES = JDK9.setOf(Units.METRE, Units.PASCAL);
+    private static final Set<Unit<?>> SCALABLES = Set.of(Units.METRE, Units.PASCAL);
 
     /**
      * The separator between each coordinate values to be formatted.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
index daeef71fe4..018b5db1c0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
@@ -42,7 +42,6 @@ import org.apache.sis.internal.system.DefaultFactories;
 import org.apache.sis.internal.system.Modules;
 import org.apache.sis.internal.system.SystemListener;
 import org.apache.sis.internal.util.Numerics;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.util.Deprecable;
 import org.apache.sis.util.collection.Containers;
 
@@ -293,7 +292,7 @@ public final class CoordinateOperations extends SystemListener {
             indices[i] = dim;
             r &= ~(1L << dim);
         }
-        final Set<Integer> dimensions = JDK9.setOf(indices);
+        final Set<Integer> dimensions = Set.of(indices);
         if (useCache) {
             synchronized (CACHE) {
                 final Set<Integer> existing = CACHE[(int) changes];
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
index 050fd37a5c..a3397abd62 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
@@ -46,7 +46,6 @@ import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.internal.util.Constants;
 import org.apache.sis.internal.util.Strings;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.metadata.iso.DefaultIdentifier;
 import org.apache.sis.metadata.iso.citation.Citations;
 import org.apache.sis.util.CharSequences;
@@ -883,7 +882,7 @@ public class WKTDictionary extends GeodeticAuthorityFactory {
     public Set<String> getCodeSpaces() {
         lock.readLock().lock();
         try {
-            return JDK9.copyOf(codespaces);
+            return Set.copyOf(codespaces);
         } finally {
             lock.readLock().unlock();
         }
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
index a8e33e6ddd..ed26242904 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
@@ -75,7 +75,6 @@ import org.apache.sis.internal.system.SystemListener;
 import org.apache.sis.internal.system.Modules;
 import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.internal.util.Constants;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.util.OptionalCandidate;
 import org.apache.sis.util.resources.Vocabulary;
 import org.apache.sis.util.resources.Errors;
@@ -1869,7 +1868,7 @@ public enum CommonCRS {
          *   <tr><th>Unit:</th> <td>{@link Units#PIXEL}</td></tr>
          * </table></blockquote>
          */
-        GEODISPLAY(new DefaultEngineeringDatum(JDK9.mapOf(
+        GEODISPLAY(new DefaultEngineeringDatum(Map.of(
                 EngineeringDatum.NAME_KEY, "Computer display",
                 EngineeringDatum.ANCHOR_POINT_KEY, "Origin is in upper left."))),
 
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/WKTKeywordsTest.java b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/WKTKeywordsTest.java
index 88c7aa0a88..1cbab2ca1a 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/WKTKeywordsTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/WKTKeywordsTest.java
@@ -21,7 +21,6 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import org.opengis.referencing.crs.*;
 import org.opengis.referencing.datum.*;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.test.TestCase;
 import org.junit.Test;
 
@@ -83,10 +82,10 @@ public final strictfp class WKTKeywordsTest extends TestCase {
      */
     @SafeVarargs
     private static <T> void verifyTypeHierarchy(final Class<T> base, final Class<? extends T>... subtypes) {
-        final Set<String> all = JDK9.setOf(WKTKeywords.forType(base));
+        final Set<String> all = Set.of(WKTKeywords.forType(base));
         assertNotNull(base.getName(), all);
         for (final Class<? extends T> subtype : subtypes) {
-            final Set<String> specialized = JDK9.setOf(WKTKeywords.forType(subtype));
+            final Set<String> specialized = Set.of(WKTKeywords.forType(subtype));
             final String name = subtype.getName();
             assertNotNull(name, specialized);
             assertTrue(name, all.size() > specialized.size());
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/HardCodedConversions.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/HardCodedConversions.java
index 5d65d9e0d4..db00e7f5f4 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/HardCodedConversions.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/HardCodedConversions.java
@@ -18,7 +18,6 @@ package org.apache.sis.referencing.operation;
 
 import java.util.Map;
 import java.util.Collections;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.referencing.crs.GeographicCRS;
 import org.opengis.referencing.crs.ProjectedCRS;
@@ -182,8 +181,8 @@ public final strictfp class HardCodedConversions {
         final DefaultConversion c = create("Lambert Conic Conformal", method, pg);
         final ImmutableIdentifier id = new ImmutableIdentifier(Citations.ESRI, "ESRI", "102110");
         return new DefaultProjectedCRS(
-                JDK9.mapOf(ProjectedCRS.NAME_KEY, "RGF 1993 Lambert",
-                           ProjectedCRS.IDENTIFIERS_KEY, id),
+                Map.of(ProjectedCRS.NAME_KEY, "RGF 1993 Lambert",
+                       ProjectedCRS.IDENTIFIERS_KEY, id),
                 HardCodedCRS.GRS80, c, HardCodedCS.PROJECTED);
     }
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java
index 8d89029b27..8a370de64c 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java
@@ -17,16 +17,8 @@
 package org.apache.sis.internal.jdk9;
 
 import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.Set;
 import java.util.List;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
 import java.util.stream.Stream;
-import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 
 
@@ -46,57 +38,6 @@ public final class JDK9 {
     private JDK9() {
     }
 
-    /**
-     * Placeholder for {@code Set.of(...)}.
-     *
-     * @param  <E>       type of elements.
-     * @param  elements  the elements to put in an unmodifiable set.
-     * @return an unmodifiable set of the given elements.
-     */
-    @SafeVarargs
-    public static <E> Set<E> setOf(final E... elements) {
-        switch (elements.length) {
-            case 0:  return Collections.emptySet();
-            case 1:  return Collections.singleton(elements[0]);
-        }
-        final Set<E> c = new LinkedHashSet<>(Arrays.asList(elements));
-        if (c.size() != elements.length) {
-            throw new IllegalArgumentException("Duplicated elements.");
-        }
-        return Collections.unmodifiableSet(c);
-    }
-
-    /**
-     * Placeholder for {@code Map.of(...)}.
-     */
-    public static <K,V> Map<K,V> mapOf(final Object... entries) {
-        final Map map = new HashMap();
-        for (int i=0; i<entries.length;) {
-            if (map.put(entries[i++], entries[i++]) != null) {
-                throw new IllegalArgumentException("Duplicated elements.");
-            }
-        }
-        return map;
-    }
-
-    /**
-     * Placeholder for {@code Set.copyOf(...)} (actually a JDK10 method).
-     */
-    public static <V> Set<V> copyOf(final Set<V> set) {
-        switch (set.size()) {
-            case 0:  return Collections.emptySet();
-            case 1:  return Collections.singleton(set.iterator().next());
-            default: return new HashSet<>(set);
-        }
-    }
-
-    /**
-     * Placeholder for {@code Map.copyOf(...)} (actually a JDK10 method).
-     */
-    public static <K,V> Map<K,V> copyOf(final Map<K,V> map) {
-        return map.size() < 2 ? CollectionsExt.compact(map) : new HashMap<>(map);
-    }
-
     /**
      * Place holder for {@code ByteBuffer.get(int, byte[])}.
      *
@@ -123,132 +64,6 @@ public final class JDK9 {
         }
     }
 
-    /**
-     * Place holder for {@link java.util.Arrays} method added in JDK9.
-     * This placeholder does not perform range check (JDK9 method does).
-     */
-    public static boolean equals(final char[] a, int ai, final int aUp,
-                                 final char[] b, int bi, final int bUp)
-    {
-        if (aUp - ai != bUp - bi) {
-            return false;
-        }
-        while (ai < aUp) {
-            if (a[ai++] != b[bi++]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Place holder for {@link java.util.Arrays} method added in JDK9.
-     * This placeholder does not perform range check (JDK9 method does).
-     */
-    public static boolean equals(final byte[] a, int ai, final int aUp,
-                                 final byte[] b, int bi, final int bUp)
-    {
-        if (aUp - ai != bUp - bi) {
-            return false;
-        }
-        while (ai < aUp) {
-            if (a[ai++] != b[bi++]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Place holder for {@link java.util.Arrays} method added in JDK9.
-     * This placeholder does not perform range check (JDK9 method does).
-     */
-    public static boolean equals(final short[] a, int ai, final int aUp,
-                                 final short[] b, int bi, final int bUp)
-    {
-        if (aUp - ai != bUp - bi) {
-            return false;
-        }
-        while (ai < aUp) {
-            if (a[ai++] != b[bi++]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Place holder for {@link java.util.Arrays} method added in JDK9.
-     * This placeholder does not perform range check (JDK9 method does).
-     */
-    public static boolean equals(final int[] a, int ai, final int aUp,
-                                 final int[] b, int bi, final int bUp)
-    {
-        if (aUp - ai != bUp - bi) {
-            return false;
-        }
-        while (ai < aUp) {
-            if (a[ai++] != b[bi++]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Place holder for {@link java.util.Arrays} method added in JDK9.
-     * This placeholder does not perform range check (JDK9 method does).
-     */
-    public static boolean equals(final long[] a, int ai, final int aUp,
-                                 final long[] b, int bi, final int bUp)
-    {
-        if (aUp - ai != bUp - bi) {
-            return false;
-        }
-        while (ai < aUp) {
-            if (a[ai++] != b[bi++]) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Place holder for {@link java.util.Arrays} method added in JDK9.
-     * This placeholder does not perform range check (JDK9 method does).
-     */
-    public static boolean equals(final float[] a, int ai, final int aUp,
-                                 final float[] b, int bi, final int bUp)
-    {
-        if (aUp - ai != bUp - bi) {
-            return false;
-        }
-        while (ai < aUp) {
-            if (Float.floatToIntBits(a[ai++]) != Float.floatToIntBits(b[bi++])) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Place holder for {@link java.util.Arrays} method added in JDK9.
-     * This placeholder does not perform range check (JDK9 method does).
-     */
-    public static boolean equals(final double[] a, int ai, final int aUp,
-                                 final double[] b, int bi, final int bUp)
-    {
-        if (aUp - ai != bUp - bi) {
-            return false;
-        }
-        while (ai < aUp) {
-            if (Double.doubleToLongBits(a[ai++]) != Double.doubleToLongBits(b[bi++])) {
-                return false;
-            }
-        }
-        return true;
-    }
-
     /**
      * Place holder for {@link Stream#toList()} method added in JDK16.
      */
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/ArrayVector.java b/core/sis-utility/src/main/java/org/apache/sis/math/ArrayVector.java
index a2c32d8043..d4a5e5eb9a 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/ArrayVector.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/ArrayVector.java
@@ -33,7 +33,6 @@ import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.collection.CheckedContainer;
 import org.apache.sis.internal.util.Numerics;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.measure.NumberRange;
 
 
@@ -281,7 +280,7 @@ abstract class ArrayVector<E extends Number> extends Vector implements CheckedCo
         /** Returns whether this vector in the given range is equal to the specified vector. */
         @Override boolean equals(final int lower, final int upper, final Vector other, final int otherOffset) {
             if (other instanceof Doubles) {
-                return JDK9.equals(array, lower, upper,
+                return Arrays.equals(array, lower, upper,
                         ((Doubles) other).array, otherOffset, otherOffset + (upper - lower));
             }
             return super.equals(lower, upper, other, otherOffset);
@@ -401,7 +400,7 @@ abstract class ArrayVector<E extends Number> extends Vector implements CheckedCo
         /** Returns whether this vector in the given range is equal to the specified vector. */
         @Override final boolean equals(final int lower, final int upper, final Vector other, final int otherOffset) {
             if (other.getClass() == getClass()) {
-                return JDK9.equals(array, lower, upper,
+                return Arrays.equals(array, lower, upper,
                         ((Floats) other).array, otherOffset, otherOffset + (upper - lower));
             }
             return super.equals(lower, upper, other, otherOffset);
@@ -561,7 +560,7 @@ abstract class ArrayVector<E extends Number> extends Vector implements CheckedCo
         /** Returns whether this vector in the given range is equal to the specified vector. */
         @Override final boolean equals(final int lower, final int upper, final Vector other, final int otherOffset) {
             if (other.getClass() == getClass()) {
-                return JDK9.equals(array, lower, upper,
+                return Arrays.equals(array, lower, upper,
                         ((Longs) other).array, otherOffset, otherOffset + (upper - lower));
             }
             return super.equals(lower, upper, other, otherOffset);
@@ -691,7 +690,7 @@ abstract class ArrayVector<E extends Number> extends Vector implements CheckedCo
         /** Returns whether this vector in the given range is equal to the specified vector. */
         @Override final boolean equals(final int lower, final int upper, final Vector other, final int otherOffset) {
             if (other.getClass() == getClass()) {
-                return JDK9.equals(array, lower, upper,
+                return Arrays.equals(array, lower, upper,
                         ((Integers) other).array, otherOffset, otherOffset + (upper - lower));
             }
             return super.equals(lower, upper, other, otherOffset);
@@ -825,7 +824,7 @@ abstract class ArrayVector<E extends Number> extends Vector implements CheckedCo
         /** Returns whether this vector in the given range is equal to the specified vector. */
         @Override final boolean equals(final int lower, final int upper, final Vector other, final int otherOffset) {
             if (other.getClass() == getClass()) {
-                return JDK9.equals(array, lower, upper,
+                return Arrays.equals(array, lower, upper,
                         ((Shorts) other).array, otherOffset, otherOffset + (upper - lower));
             }
             return super.equals(lower, upper, other, otherOffset);
@@ -934,7 +933,7 @@ abstract class ArrayVector<E extends Number> extends Vector implements CheckedCo
         /** Returns whether this vector in the given range is equal to the specified vector. */
         @Override final boolean equals(int lower, final int upper, final Vector other, int otherOffset) {
             if (other.getClass() == getClass()) {
-                return JDK9.equals(array, lower, upper,
+                return Arrays.equals(array, lower, upper,
                         ((Bytes) other).array, otherOffset, otherOffset + (upper - lower));
             }
             return super.equals(lower, upper, other, otherOffset);
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java b/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
index 759d58d1ec..ef37c021f1 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
@@ -162,9 +162,9 @@ public abstract class Vector extends AbstractList<Number> implements RandomAcces
     public static Vector create(final double[] array) {
         /*
          * NOTE: we do not use variable-length argument (double...) because doing so may force us to
-         * declare 'create' methods for all other primitive types,  otherwise some developers may be
-         * surprised that 'create(0, 1, 2, 3)' converts the integer values to doubles. We do not yet
-         * provide explicit 'create(...)' methods for other primitive types because it is not needed
+         * declare `create` methods for all other primitive types,  otherwise some developers may be
+         * surprised that `create(0, 1, 2, 3)` converts the integer values to doubles. We do not yet
+         * provide explicit `create(...)` methods for other primitive types because it is not needed
          * by Apache SIS and it would lost a feature of current API, which is to force developers to
          * think whether their integers are signed or unsigned.
          */
@@ -650,7 +650,7 @@ public abstract class Vector extends AbstractList<Number> implements RandomAcces
             /*
              * For the first level of repetitions, we rely on a method to be overridden by subclasses
              * for detecting the length of consecutive identical numbers. We could have used the more
-             * generic algorithm based on 'equals(int, int, Vector, int)' instead, but this approach
+             * generic algorithm based on `equals(int, int, Vector, int)` instead, but this approach
              * is faster.
              */
             int r0 = 0;
@@ -667,7 +667,7 @@ public abstract class Vector extends AbstractList<Number> implements RandomAcces
              * and shall not be modified anymore for the rest of this method. This is the first integer value in the
              * array to be returned. Following algorithm applies to deeper levels.
              *
-             * The 'skip' variable is an optimization. Code below would work with skip = 0 all the times, but this is
+             * The `skip` variable is an optimization. Code below would work with skip = 0 all the times, but this is
              * very slow when r0 = 1 because equals(…) is invoked for all values.  Computing an amount of values that
              * we can skip in the special case where r0 = 1 increases the speed a lot.
              */
@@ -690,11 +690,11 @@ search:     for (;;) {
                     if (skip != 0) {
                         /*
                          * Optimization for reducing the number of method calls when r0 = 1: the default algorithm is to
-                         * search for a position multiple of 'r0' where all values since the beginning of the vector are
-                         * repeated. But if 'r0' is 1, the default algorithms perform a costly check at every positions.
-                         * To avoid that, we use 'indexOf' for searching the index of the next position where a match may
+                         * search for a position multiple of `r0` where all values since the beginning of the vector are
+                         * repeated. But if `r0` is 1, the default algorithms perform a costly check at every positions.
+                         * To avoid that, we use `indexOf` for searching the index of the next position where a match may
                          * exist (we don't care anymore about multiples of r0 since r0 is 1). If the first expected values
-                         * are constants, we use 'indexOf' again for checking efficiently those constants.
+                         * are constants, we use `indexOf` again for checking efficiently those constants.
                          */
                         r = indexOf(0, r, true);
                         if (skip != 1) {
@@ -708,10 +708,11 @@ search:     for (;;) {
                     }
                     if (r >= size) break;
                 }
-                if (equals(skip, Math.min(r0, size - r), this, r + skip)) {
+                final int base = Math.min(r0, size - r);
+                if (base < skip || equals(skip, base, this, r + skip)) {
                     /*
-                     * Found a possible repetition of length r. Verify if this repetition pattern is observed until
-                     * the end of the vector. If not, we will search for the next possible repetition.
+                     * Found a possible repetition of length r. Verify if this repetition pattern is observed
+                     * until the end of the vector. If not, we will search for the next possible repetition.
                      */
                     for (int i=r; i<size; i += r) {
                         if (!equals(0, Math.min(r, size - i), this, i)) {
@@ -773,7 +774,7 @@ search:     for (;;) {
             final int type = Numbers.getEnumConstant(getElementType());
             /*
              * For integer types, verify if the increment is constant. We do not use the "first + inc*i"
-             * formula because some 'long' values cannot be represented accurately as 'double' values.
+             * formula because some `long` values cannot be represented accurately as `double` values.
              * The result will be converted to the same type than the vector element type if possible,
              * or the next wider type if the increment is an unsigned value too big for the element type.
              */
@@ -818,7 +819,7 @@ search:     for (;;) {
                     final float  value = floatValue(i);
                     final double delta = Math.abs(first + inc*i-- - value);
                     final double accur = Math.ulp(value);
-                    if (!((accur > tolerance) ? (delta < accur) : (delta <= tolerance))) {  // Use '!' for catching NaN.
+                    if (!((accur > tolerance) ? (delta < accur) : (delta <= tolerance))) {  // Use `!` for catching NaN.
                         return null;
                     }
                 }
@@ -827,7 +828,7 @@ search:     for (;;) {
             } else {
                 while (i >= 1) {
                     final double delta = Math.abs(first + inc*i - doubleValue(i--));
-                    if (!(delta <= tolerance)) {                   // Use '!' for catching NaN.
+                    if (!(delta <= tolerance)) {                   // Use `!` for catching NaN.
                         return null;
                     }
                 }
@@ -1419,8 +1420,8 @@ search:     for (;;) {
             return createSequence(getElementType(), get(0), inc, length);
         }
         /*
-         * Verify if the vector contains only NaN values. This extra check is useful because 'increment()'
-         * returns null if the array contains NaN. Note that for array of integers, 'isNaN(int)' is very
+         * Verify if the vector contains only NaN values. This extra check is useful because `increment()`
+         * returns null if the array contains NaN. Note that for array of integers, `isNaN(int)` is very
          * efficient and the loop will stop immediately after the first iteration.
          */
         int i = 0;
@@ -1670,6 +1671,7 @@ search:     for (;;) {
      * @param  other        the other vector to compare values with this vector. May be {@code this}.
      * @param  otherOffset  index of the first element to compare in the other vector.
      * @return whether values over the specified range of the two vectors are equal.
+     * @throws IllegalArgumentException if {@code lower} is greater than {@code upper}.
      */
     boolean equals(int lower, final int upper, final Vector other, int otherOffset) {
         while (lower < upper) {
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/collection/IntegerList.java b/core/sis-utility/src/main/java/org/apache/sis/util/collection/IntegerList.java
index ced2161d52..c15e26d80e 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/collection/IntegerList.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/collection/IntegerList.java
@@ -32,7 +32,6 @@ import java.io.Serializable;
 import java.io.ObjectOutputStream;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.ArgumentChecks;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.internal.util.Numerics;
 
 
@@ -701,7 +700,7 @@ public class IntegerList extends AbstractList<Integer> implements RandomAccess,
                 int n = size * bitCount;
                 final int nr = n & OFFSET_MASK;             // Number of remaining values.
                 n >>>= BASE_SHIFT;
-                if (!JDK9.equals(values, 0, n, that.values, 0, n)) {
+                if (!Arrays.equals(values, 0, n, that.values, 0, n)) {
                     return false;
                 }
                 if (nr == 0) return true;
diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/VariableInfo.java b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/VariableInfo.java
index 3c05da7641..cf36e097d4 100644
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/VariableInfo.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/impl/VariableInfo.java
@@ -33,7 +33,6 @@ import ucar.nc2.constants.CF;
 import ucar.nc2.constants.CDM;
 import ucar.nc2.constants._Coordinate;
 import org.apache.sis.coverage.grid.GridExtent;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.internal.netcdf.Decoder;
 import org.apache.sis.internal.netcdf.DataType;
 import org.apache.sis.internal.netcdf.Dimension;
@@ -796,7 +795,7 @@ final class VariableInfo extends Variable implements Comparable<VariableInfo> {
                 for (int j=upper; --j >= lower;) {
                     if (Byte.toUnsignedInt(chars[j]) > ' ') {
                         while (Byte.toUnsignedInt(chars[lower]) <= ' ') lower++;
-                        if (JDK9.equals(chars, lower, ++j, chars, plo, phi)) {
+                        if (Arrays.equals(chars, lower, ++j, chars, plo, phi)) {
                             element = previous;
                         } else {
                             element  = new String(chars, lower, j - lower, encoding);
diff --git a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
index bc7da531ec..26d4fe7f8f 100644
--- a/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
+++ b/storage/sis-netcdf/src/main/java/org/apache/sis/internal/netcdf/ucar/VariableWrapper.java
@@ -18,6 +18,7 @@ package org.apache.sis.internal.netcdf.ucar;
 
 import java.util.Map;
 import java.util.List;
+import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.io.File;
@@ -47,7 +48,6 @@ import org.apache.sis.internal.netcdf.Decoder;
 import org.apache.sis.internal.netcdf.Grid;
 import org.apache.sis.internal.netcdf.GridAdjustment;
 import org.apache.sis.internal.util.Strings;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.measure.MeasurementRange;
 import org.apache.sis.measure.NumberRange;
@@ -575,7 +575,7 @@ final class VariableWrapper extends org.apache.sis.internal.netcdf.Variable {
             for (int j=upper; --j >= lower;) {
                 if (chars[j] > ' ') {
                     while (chars[lower] <= ' ') lower++;
-                    if (JDK9.equals(chars, lower, ++j, chars, plo, phi)) {
+                    if (Arrays.equals(chars, lower, ++j, chars, plo, phi)) {
                         element = previous;
                     } else {
                         element  = new String(chars, lower, j - lower);
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/StoreUtilities.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/StoreUtilities.java
index 11e580bfdf..c0a2bdc77d 100644
--- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/StoreUtilities.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/StoreUtilities.java
@@ -45,7 +45,6 @@ import org.apache.sis.storage.WritableFeatureSet;
 import org.apache.sis.storage.UnsupportedStorageException;
 import org.apache.sis.storage.event.StoreListeners;
 import org.apache.sis.geometry.GeneralEnvelope;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.internal.metadata.Identifiers;
 import org.apache.sis.internal.system.Modules;
 import org.apache.sis.util.resources.Errors;
@@ -95,7 +94,7 @@ public final class StoreUtilities extends Static {
      *
      * @see #basedOnASCII(Charset)
      */
-    private static final Set<String> basedOnASCII = JDK9.setOf("US-ASCII", "ISO-8859-1", "UTF-8");
+    private static final Set<String> basedOnASCII = Set.of("US-ASCII", "ISO-8859-1", "UTF-8");
 
     /**
      * Do not allow instantiation of this class.
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java
index 8e89dbae11..ab90b1c4b7 100644
--- a/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/event/StoreListeners.java
@@ -36,7 +36,6 @@ import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.resources.Vocabulary;
 import org.apache.sis.util.collection.Containers;
-import org.apache.sis.internal.jdk9.JDK9;
 import org.apache.sis.internal.system.Modules;
 import org.apache.sis.internal.storage.Resources;
 import org.apache.sis.internal.storage.StoreResource;
@@ -122,7 +121,7 @@ public class StoreListeners implements Localized {
      * @see #useReadOnlyEvents()
      */
     private static final Set<Class<? extends StoreEvent>> READ_EVENT_TYPES =
-                         JDK9.setOf(WarningEvent.class, CloseEvent.class);
+                         Set.of(WarningEvent.class, CloseEvent.class);
 
     /**
      * The {@link CascadedStoreEvent.ParentListener}s registered on {@link #parent}.


[sis] 02/02: Rename `JDK9` as `JDK17` since it is now a placeholder for methods defined after Java 11.

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit c33f347075ca3119d301da4f96cd3f5c57574567
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Sat Dec 10 18:08:09 2022 +0100

    Rename `JDK9` as `JDK17` since it is now a placeholder for methods defined after Java 11.
---
 .../java/org/apache/sis/internal/filter/sqlmm/Registry.java   |  4 ++--
 .../org/apache/sis/internal/{jdk9 => jdk17}/HexFormat.java    |  2 +-
 .../apache/sis/internal/{jdk9/JDK9.java => jdk17/JDK17.java}  | 11 +++++------
 .../org/apache/sis/internal/{jdk9 => jdk17}/package-info.java |  2 +-
 .../sis/internal/storage/inflater/HorizontalPredictor.java    |  4 ++--
 .../sis/internal/storage/inflater/PredictorChannel.java       |  4 ++--
 .../org/apache/sis/internal/sql/feature/BinaryEncoding.java   |  2 +-
 .../org/apache/sis/internal/storage/esri/CharactersView.java  |  6 +++---
 8 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/Registry.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/Registry.java
index dac812d98c..397f181b00 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/Registry.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/sqlmm/Registry.java
@@ -20,7 +20,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import org.apache.sis.internal.feature.Geometries;
 import org.apache.sis.internal.filter.FunctionRegister;
-import org.apache.sis.internal.jdk9.JDK9;
+import org.apache.sis.internal.jdk17.JDK17;
 
 // Branch-dependent imports
 import org.opengis.filter.Expression;
@@ -64,7 +64,7 @@ public final class Registry implements FunctionRegister {
      */
     @Override
     public Collection<String> getNames() {
-        return JDK9.toList(Arrays.stream(SQLMM.values()).map(SQLMM::name));
+        return JDK17.toList(Arrays.stream(SQLMM.values()).map(SQLMM::name));
     }
 
     /**
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/HexFormat.java b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/HexFormat.java
similarity index 98%
rename from core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/HexFormat.java
rename to core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/HexFormat.java
index 0019ed2afb..818719e3d1 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/HexFormat.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/HexFormat.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.jdk9;
+package org.apache.sis.internal.jdk17;
 
 import org.apache.sis.util.resources.Errors;
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/JDK17.java
similarity index 90%
rename from core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java
rename to core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/JDK17.java
index 8a370de64c..9578b2ac21 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/JDK9.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/JDK17.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.jdk9;
+package org.apache.sis.internal.jdk17;
 
 import java.nio.ByteBuffer;
 import java.util.List;
@@ -23,19 +23,18 @@ import org.apache.sis.internal.util.UnmodifiableArrayList;
 
 
 /**
- * Place holder for some functionalities defined only in JDK9.
- * This file will be deleted on the SIS JDK9 branch.
+ * Place holder for some functionalities defined in a JDK more recent than Java 11.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @since   1.4
  * @version 0.8
  * @module
  */
-public final class JDK9 {
+public final class JDK17 {
     /**
      * Do not allow instantiation of this class.
      */
-    private JDK9() {
+    private JDK17() {
     }
 
     /**
@@ -46,7 +45,7 @@ public final class JDK9 {
      * @param  dst   destination array
      */
     public static void get(final ByteBuffer b, int index, final byte[] dst) {
-        JDK9.get(b, index, dst, 0, dst.length);
+        get(b, index, dst, 0, dst.length);
     }
 
     /**
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/package-info.java b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/package-info.java
similarity index 96%
rename from core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/package-info.java
rename to core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/package-info.java
index 72b87f3ba7..c766349852 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk9/package-info.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/package-info.java
@@ -28,4 +28,4 @@
  * @version 0.8
  * @module
  */
-package org.apache.sis.internal.jdk9;
+package org.apache.sis.internal.jdk17;
diff --git a/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/HorizontalPredictor.java b/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/HorizontalPredictor.java
index 507381f7d2..bef5d6fbdc 100644
--- a/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/HorizontalPredictor.java
+++ b/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/HorizontalPredictor.java
@@ -19,7 +19,7 @@ package org.apache.sis.internal.storage.inflater;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import org.apache.sis.image.DataType;
-import org.apache.sis.internal.jdk9.JDK9;
+import org.apache.sis.internal.jdk17.JDK17;
 
 
 /**
@@ -264,7 +264,7 @@ abstract class HorizontalPredictor extends PredictorChannel {
         @Override
         void saveLastPixel(final ByteBuffer buffer, int offset, int position) {
             System.arraycopy(savedValues, savedValues.length - offset, savedValues, 0, offset);
-            JDK9.get(buffer, position, savedValues, offset, savedValues.length - offset);
+            JDK17.get(buffer, position, savedValues, offset, savedValues.length - offset);
         }
 
         /**
diff --git a/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/PredictorChannel.java b/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/PredictorChannel.java
index ac4f0fa7b2..973b80aff6 100644
--- a/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/PredictorChannel.java
+++ b/storage/sis-geotiff/src/main/java/org/apache/sis/internal/storage/inflater/PredictorChannel.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.internal.geotiff.Predictor;
-import org.apache.sis.internal.jdk9.JDK9;
+import org.apache.sis.internal.jdk17.JDK17;
 
 
 /**
@@ -117,7 +117,7 @@ abstract class PredictorChannel extends PixelChannel {
             if (length > deferred.length) {
                 deferred = new byte[length];
             }
-            JDK9.get(target, end, deferred, deferredCount, remaining);
+            JDK17.get(target, end, deferred, deferredCount, remaining);
             target.position(end);
             deferredCount = length;
         }
diff --git a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/BinaryEncoding.java b/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/BinaryEncoding.java
index 215007f22f..603e78c386 100644
--- a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/BinaryEncoding.java
+++ b/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/BinaryEncoding.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import org.apache.sis.internal.jdk9.HexFormat;
+import org.apache.sis.internal.jdk17.HexFormat;
 
 
 /**
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/esri/CharactersView.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/esri/CharactersView.java
index d2d3dd5b2a..fde121f2bc 100644
--- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/esri/CharactersView.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/esri/CharactersView.java
@@ -23,7 +23,7 @@ import java.io.IOException;
 import java.io.EOFException;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
-import org.apache.sis.internal.jdk9.JDK9;
+import org.apache.sis.internal.jdk17.JDK17;
 import org.apache.sis.internal.storage.Resources;
 import org.apache.sis.internal.storage.io.ChannelDataInput;
 import org.apache.sis.storage.DataStoreContentException;
@@ -220,11 +220,11 @@ final class CharactersView implements CharSequence {
         if (direct) {
             return new String(array, start, length, StandardCharsets.US_ASCII);
         } else if (length <= array.length) {
-            JDK9.get(buffer, start, array, 0, length);
+            JDK17.get(buffer, start, array, 0, length);
             return new String(array, 0, length, StandardCharsets.US_ASCII);
         } else {
             final byte[] data = new byte[length];
-            JDK9.get(buffer, start, data);
+            JDK17.get(buffer, start, data);
             return new String(data, StandardCharsets.US_ASCII);
         }
     }