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:40 UTC
[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`).
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}.