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 938b35b5e45c748c141ec48f0d8589c13d4f23f9 Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Tue Feb 6 19:08:04 2024 +0100 Deprecate `ArgumentChecks` methods that are replaced by Java 9 methods: - `ensureValidIndex`, replaced by `Objects.checkIndex`. - `ensureValidIndexRange`, replaced by `Objects.checkFromToIndex`. Some `ensureNonNull` are also either removed (now that Java produces a good error message by itself) or replaced by `Objects.requireNonNull`. --- .../main/org/apache/sis/coverage/Category.java | 1 + .../main/org/apache/sis/coverage/CategoryList.java | 4 +++- .../org/apache/sis/coverage/CoverageCombiner.java | 2 -- .../org/apache/sis/coverage/SampleDimension.java | 6 ++---- .../apache/sis/coverage/grid/DefaultEvaluator.java | 6 ++---- .../sis/coverage/grid/DimensionalityReduction.java | 10 +++------- .../apache/sis/coverage/grid/DomainLinearizer.java | 2 -- .../sis/coverage/grid/GridCoordinatesView.java | 5 ++--- .../org/apache/sis/coverage/grid/GridExtent.java | 21 +++++++++------------ .../org/apache/sis/coverage/grid/GridGeometry.java | 4 ++-- .../apache/sis/xml/bind/lan/LocaleAndCharset.java | 4 ++-- .../org/apache/sis/geometry/ArrayEnvelope.java | 18 ++++++------------ .../org/apache/sis/geometry/GeneralEnvelope.java | 22 +++------------------- .../main/org/apache/sis/geometry/SubEnvelope.java | 14 +++++--------- .../main/org/apache/sis/io/wkt/Warnings.java | 6 +++--- .../apache/sis/parameter/ParameterValueList.java | 17 ++++++----------- .../main/org/apache/sis/referencing/CRS.java | 3 ++- .../factory/sql/InstallationScriptProvider.java | 1 - .../operation/builder/LinearTransformBuilder.java | 4 ++-- .../sis/referencing/operation/matrix/Matrices.java | 3 +-- .../referencing/operation/matrix/MatrixSIS.java | 12 ++++++------ .../referencing/util/GeodeticObjectBuilder.java | 4 ++-- .../main/org/apache/sis/io/LineAppender.java | 3 ++- .../main/org/apache/sis/io/TableAppender.java | 3 ++- .../main/org/apache/sis/math/MathFunctions.java | 5 ++++- .../main/org/apache/sis/math/RepeatedVector.java | 5 ++--- .../main/org/apache/sis/math/SequenceVector.java | 8 +++----- .../main/org/apache/sis/math/Vector.java | 9 ++++----- .../main/org/apache/sis/util/ArgumentChecks.java | 19 ++++++++----------- .../main/org/apache/sis/util/CharSequences.java | 7 ++++--- .../org/apache/sis/util/collection/Containers.java | 4 ++-- .../sis/util/collection/DefaultTreeTable.java | 3 +-- .../apache/sis/util/collection/IntegerList.java | 8 ++++---- .../apache/sis/util/collection/TreeNodeList.java | 21 ++++++++------------- .../sis/util/internal/UnmodifiableArrayList.java | 6 ++---- .../apache/sis/map/service/GraphicsPortrayer.java | 4 ++-- 36 files changed, 110 insertions(+), 164 deletions(-) diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java index be97d5cf52..9a6cb13be5 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java @@ -220,6 +220,7 @@ public class Category implements Serializable { * @throws IllegalSampleDimensionException if the {@code samples} range of values is empty * or the transfer function cannot be used. */ + @SuppressWarnings("this-escape") protected Category(final CharSequence name, NumberRange<?> samples, final MathTransform1D toUnits, final Unit<?> units, final DoubleToIntFunction toNaN) { diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java index 88a11bbe46..1a2b553584 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java @@ -211,8 +211,10 @@ final class CategoryList extends AbstractList<Category> implements MathTransform final double[] extremums; extremums = new double[count * 2]; minimums = new double[count]; - int countOfFiniteRanges = 0; + + @SuppressWarnings("LocalVariableHidesMemberVariable") NumberRange<?> range = null; + int countOfFiniteRanges = 0; for (int i=count; --i >= 0;) { // Reverse order for making computation of `range` more convenient. final Category category = categories[i]; if (!isNaN(minimums[i] = category.range.getMinDouble(true))) { diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java index 0ca2a6f1c3..79fdf3f924 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java @@ -121,7 +121,6 @@ public class CoverageCombiner { * @throws CannotEvaluateException if the coverage does not have at least 2 dimensions. */ public CoverageCombiner(final GridCoverage destination) { - ArgumentChecks.ensureNonNull("destination", destination); this.destination = destination.forConvertedValues(true); isConverted = (this.destination == destination); final int[] dim = destination.getGridGeometry().getExtent().getLargestDimensions(BIDIMENSIONAL); @@ -225,7 +224,6 @@ public class CoverageCombiner { * is not convertible to the unit of measurement of the corresponding target sample dimension. */ public boolean acceptAll(GridCoverage... sources) throws TransformException, IncommensurableException { - ArgumentChecks.ensureNonNull("sources", sources); sources = sources.clone(); final GridGeometry targetGG = destination.getGridGeometry(); final GridExtent targetEx = targetGG.getExtent(); diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java index 3bcb4d329a..8eda32d0e7 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java @@ -1196,14 +1196,12 @@ public class SampleDimension implements Serializable { /** Returns the category at the given index. */ @Override public Category get(int i) { - ArgumentChecks.ensureValidIndex(count, i); - return categories[i]; + return categories[Objects.checkIndex(i, count)]; } /** Removes the category at the given index. */ @Override public Category remove(int i) { - ArgumentChecks.ensureValidIndex(count, i); - final Category c = categories[i]; + final Category c = categories[Objects.checkIndex(i, count)]; System.arraycopy(categories, i+1, categories, i, --count - i); categories[count] = null; toNaN.remove(c); diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java index 5f8a64f33f..77ee8cf5e3 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java @@ -159,8 +159,7 @@ class DefaultEvaluator implements GridCoverage.Evaluator { * @see GridCoverage#evaluator() */ protected DefaultEvaluator(final GridCoverage coverage) { - ArgumentChecks.ensureNonNull("coverage", coverage); - this.coverage = coverage; + this.coverage = Objects.requireNonNull(coverage); } /** @@ -422,9 +421,8 @@ class DefaultEvaluator implements GridCoverage.Evaluator { */ @Override public FractionalGridCoordinates toGridCoordinates(final DirectPosition point) throws TransformException { - ArgumentChecks.ensureNonNull("point", point); try { - return new FractionalGridCoordinates(toGridPosition(point)); + return new FractionalGridCoordinates(toGridPosition(Objects.requireNonNull(point))); } catch (FactoryException e) { throw new TransformException(e.getMessage(), e); } diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java index e56317f329..9b0c7ca751 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.HashMap; import java.util.Arrays; import java.util.BitSet; +import java.util.Objects; import java.util.function.UnaryOperator; import java.io.Serializable; import org.opengis.util.FactoryException; @@ -303,8 +304,7 @@ public class DimensionalityReduction implements UnaryOperator<GridCoverage>, Ser private static BitSet bitmask(final int[] axes, final int sourceDim) { final BitSet bitmask = new BitSet(sourceDim); for (final int dim : axes) { - ArgumentChecks.ensureValidIndex(sourceDim, dim); - bitmask.set(dim); + bitmask.set(Objects.checkIndex(dim, sourceDim)); } return bitmask; } @@ -321,7 +321,6 @@ public class DimensionalityReduction implements UnaryOperator<GridCoverage>, Ser * @throws IllegalGridGeometryException if the dimensions to keep cannot be separated from the dimensions to omit. */ public static DimensionalityReduction select(final GridGeometry source, final int... gridAxesToPass) { - ArgumentChecks.ensureNonNull("source", source); final BitSet bitmask = bitmask(gridAxesToPass, source.getDimension()); try { return new DimensionalityReduction(source, bitmask, null); @@ -362,7 +361,6 @@ public class DimensionalityReduction implements UnaryOperator<GridCoverage>, Ser * @throws IllegalGridGeometryException if the dimensions to keep cannot be separated from the dimensions to omit. */ public static DimensionalityReduction remove(final GridGeometry source, final int... gridAxesToRemove) { - ArgumentChecks.ensureNonNull("source", source); final int sourceDim = source.getDimension(); final BitSet bitmask = bitmask(gridAxesToRemove, sourceDim); bitmask.flip(0, sourceDim); @@ -385,7 +383,6 @@ public class DimensionalityReduction implements UnaryOperator<GridCoverage>, Ser * @see #select2D(GridGeometry) */ public static DimensionalityReduction reduce(final GridGeometry source) { - ArgumentChecks.ensureNonNull("source", source); final GridExtent extent = source.getExtent(); final int sourceDim = extent.getDimension(); final BitSet bitmask = new BitSet(sourceDim); @@ -732,7 +729,6 @@ public class DimensionalityReduction implements UnaryOperator<GridCoverage>, Ser */ @Override public GridCoverage apply(final GridCoverage source) { - ArgumentChecks.ensureNonNull("source", source); ensureSameAxes(sourceGeometry.extent, source.getGridGeometry().extent); if (isIdentity()) return source; if (source instanceof DimensionAppender) try { @@ -942,7 +938,7 @@ public class DimensionalityReduction implements UnaryOperator<GridCoverage>, Ser * @throws PointOutsideCoverageException if the given point is outside the source grid extent. */ public DimensionalityReduction withSlicePoint(final long[] point) { - ArgumentChecks.ensureNonNull("point", point); + Objects.requireNonNull(point); final GridExtent extent = sourceGeometry.getExtent(); final int sourceDim = extent.getDimension(); ArgumentChecks.ensureDimensionMatches("slicePoint", sourceDim, extent); diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java index a9fb085af1..2a2533323a 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java @@ -142,7 +142,6 @@ public class DomainLinearizer { * @throws TransformException if some cell coordinates cannot be computed. */ public GridCoverage apply(final GridCoverage coverage) throws TransformException { - ArgumentChecks.ensureNonNull("coverage", coverage); final GridGeometry gg = coverage.getGridGeometry(); final GridGeometry linearized = apply(gg); if (gg.equals(linearized)) { @@ -164,7 +163,6 @@ public class DomainLinearizer { * @throws TransformException if some cell coordinates cannot be computed. */ public GridGeometry apply(final GridGeometry gg) throws TransformException { - ArgumentChecks.ensureNonNull("gg", gg); if (gg.nonLinears != 0) try { MathTransform gridToCRS = gg.requireGridToCRS(true); GeneralEnvelope domain = gg.extent.toEnvelope(); diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java index 2127cef69d..52885418fd 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java @@ -17,7 +17,7 @@ package org.apache.sis.coverage.grid; import java.util.Arrays; -import org.apache.sis.util.ArgumentChecks; +import java.util.Objects; // Specific to the geoapi-3.1 and geoapi-4.0 branches: import org.opengis.coverage.grid.GridCoordinates; @@ -71,8 +71,7 @@ final class GridCoordinatesView implements GridCoordinates { */ @Override public final long getCoordinateValue(final int index) { - ArgumentChecks.ensureValidIndex(getDimension(), index); - return coordinates[offset + index]; + return coordinates[offset + Objects.checkIndex(index, getDimension())]; } /** diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java index 223d8467ed..b27691017b 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java @@ -26,6 +26,7 @@ import java.io.Serializable; import java.io.IOException; import java.io.UncheckedIOException; import java.awt.Rectangle; +import java.util.Objects; import org.opengis.util.FactoryException; import org.opengis.util.InternationalString; import org.opengis.geometry.Envelope; @@ -798,8 +799,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable */ @Override public long getLow(final int index) { - ArgumentChecks.ensureValidIndex(getDimension(), index); - return coordinates[index]; + return coordinates[Objects.checkIndex(index, getDimension())]; } /** @@ -817,8 +817,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable @Override public long getHigh(final int index) { final int dimension = getDimension(); - ArgumentChecks.ensureValidIndex(dimension, index); - return coordinates[index + dimension]; + return coordinates[Objects.checkIndex(index, dimension) + dimension]; } /** @@ -843,8 +842,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable */ public long getMedian(final int index) { final int dimension = getDimension(); - ArgumentChecks.ensureValidIndex(dimension, index); - final long low = coordinates[index]; + final long low = coordinates[Objects.checkIndex(index, dimension)]; final long high = coordinates[index + dimension]; /* * Use `>> 1` instead of `/2` because the two operations differ in their rounding mode for negative values. @@ -898,7 +896,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable @Override public long getSize(final int index) { final int dimension = getDimension(); - ArgumentChecks.ensureValidIndex(dimension, index); + Objects.checkIndex(index, dimension); return Math.incrementExact(Math.subtractExact(coordinates[dimension + index], coordinates[index])); } @@ -914,7 +912,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable */ public double getSize(final int index, final boolean minusOne) { final int dimension = getDimension(); - ArgumentChecks.ensureValidIndex(dimension, index); + Objects.checkIndex(index, dimension); long size = coordinates[dimension + index] - coordinates[index]; // Unsigned long. if (!minusOne && ++size == 0) { return 0x1P64; // Unsigned integer overflow. Result is 2^64. @@ -1165,7 +1163,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable * than the {@linkplain #getDimension() grid dimension}. */ public Optional<DimensionNameType> getAxisType(final int index) { - ArgumentChecks.ensureValidIndex(getDimension(), index); + Objects.checkIndex(index, getDimension()); return Optional.ofNullable((types != null) ? types[index] : null); } @@ -1211,8 +1209,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable */ public GridExtent withRange(final int index, final long low, final long high) { int ih = getDimension(); - ArgumentChecks.ensureValidIndex(ih, index); - ih += index; + ih += Objects.checkIndex(index, ih); if (coordinates[index] == low && coordinates[ih] == high) { return this; } @@ -1422,7 +1419,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable */ public GridExtent insertDimension(final int index, final DimensionNameType axisType, final long low, long high, final boolean isHighIncluded) { final int dimension = getDimension(); - ArgumentChecks.ensureValidIndex(dimension+1, index); + Objects.checkIndex(index, dimension+1); if (!isHighIncluded) { high = Math.decrementExact(high); } diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java index c532eab0c2..3e3f3823f5 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java @@ -17,6 +17,7 @@ package org.apache.sis.coverage.grid; import java.util.Locale; +import java.util.Objects; import java.util.Optional; import java.time.Instant; import java.text.NumberFormat; @@ -1244,8 +1245,7 @@ public class GridGeometry implements LenientComparable, Serializable { final int dimension = getTargetDimension(); long mask = 0; for (final int d : targets) { - ArgumentChecks.ensureValidIndex(dimension, d); - mask |= Numerics.bitmask(d); + mask |= Numerics.bitmask(Objects.checkIndex(d, dimension)); } return (nonLinears & mask) == 0; } diff --git a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java index 5cbea92b82..40cddf718d 100644 --- a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java +++ b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java @@ -24,8 +24,8 @@ import java.util.Collection; import java.util.Collections; import java.util.Locale; import java.util.Iterator; +import java.util.Objects; import java.nio.charset.Charset; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.internal.Bag; import org.apache.sis.util.internal.Unsafe; import org.apache.sis.util.internal.CollectionsExt; @@ -179,7 +179,7 @@ public final class LocaleAndCharset implements Node { /** Returns a child node wrapping the {@link Charset} ad the given index. */ @Override public Node get(final int index) { - ArgumentChecks.ensureValidIndex(1, index); + Objects.checkIndex(index, 1); return new Child(); } }; diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java index 7d1543b99d..0eac36ed68 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java @@ -439,8 +439,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) { */ @Override // Must also be overridden in SubEnvelope public double getLower(final int dimension) throws IndexOutOfBoundsException { - ensureValidIndex(coordinates.length >>> 1, dimension); - return coordinates[dimension]; + return coordinates[Objects.checkIndex(dimension, coordinates.length >>> 1)]; } /** @@ -449,8 +448,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) { @Override // Must also be overridden in SubEnvelope public double getUpper(final int dimension) throws IndexOutOfBoundsException { final int d = coordinates.length >>> 1; - ensureValidIndex(d, dimension); - return coordinates[dimension + d]; + return coordinates[Objects.checkIndex(dimension, d) + d]; } /** @@ -458,8 +456,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) { */ @Override public double getMinimum(final int dimension) throws IndexOutOfBoundsException { - ensureValidIndex(endIndex(), dimension); - final int i = dimension + beginIndex(); + final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex(); double lower = coordinates[i]; if (isNegative(coordinates[i + (coordinates.length >>> 1)] - lower)) { // Special handling for -0.0 final CoordinateSystemAxis axis = getAxis(crs, dimension); @@ -473,8 +470,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) { */ @Override public double getMaximum(final int dimension) throws IndexOutOfBoundsException { - ensureValidIndex(endIndex(), dimension); - final int i = dimension + beginIndex(); + final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex(); double upper = coordinates[i + (coordinates.length >>> 1)]; if (isNegative(upper - coordinates[i])) { // Special handling for -0.0 final CoordinateSystemAxis axis = getAxis(crs, dimension); @@ -488,8 +484,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) { */ @Override public double getMedian(final int dimension) throws IndexOutOfBoundsException { - ensureValidIndex(endIndex(), dimension); - final int i = dimension + beginIndex(); + final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex(); final double minimum = coordinates[i]; final double maximum = coordinates[i + (coordinates.length >>> 1)]; double median = 0.5 * (minimum + maximum); @@ -504,8 +499,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) { */ @Override public double getSpan(final int dimension) throws IndexOutOfBoundsException { - ensureValidIndex(endIndex(), dimension); - final int i = dimension + beginIndex(); + final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex(); double span = coordinates[i + (coordinates.length >>> 1)] - coordinates[i]; if (isNegative(span)) { // Special handling for -0.0 span = fixSpan(getAxis(crs, dimension), span); diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java index 3e20d998f9..3d00c8f948 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java @@ -24,6 +24,7 @@ package org.apache.sis.geometry; */ import java.util.Arrays; import java.util.Iterator; +import java.util.Objects; import java.time.Instant; import java.io.Serializable; import java.lang.reflect.Field; @@ -340,7 +341,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali throws IndexOutOfBoundsException { final int d = coordinates.length >>> 1; - ensureValidIndex(d, dimension); + Objects.checkIndex(dimension, d); /* * The check performed here shall be identical to ArrayEnvelope.verifyRanges(crs, coordinates), * except that there is no loop. @@ -524,23 +525,6 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali } } - /** - * Adds to this envelope a point of the given array. - * This method does not check for anti-meridian crossing. It is invoked only - * by the {@link Envelopes} transform methods, which build "normal" envelopes. - * - * @param array the array which contains the coordinate values. - * @param offset index of the first valid coordinate value in the given array. - */ - final void addSimple(final double[] array, final int offset) { - final int d = coordinates.length >>> 1; - for (int i=0; i<d; i++) { - final double value = array[offset + i]; - if (value < coordinates[i ]) coordinates[i ] = value; - if (value > coordinates[i+d]) coordinates[i+d] = value; - } - } - /** * Adds a point to this envelope. The resulting envelope is the smallest envelope that * contains both the original envelope and the specified point. @@ -1267,7 +1251,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali */ // Must be overridden in SubEnvelope public GeneralEnvelope subEnvelope(final int beginIndex, final int endIndex) throws IndexOutOfBoundsException { - ensureValidIndexRange(coordinates.length >>> 1, beginIndex, endIndex); + Objects.checkFromToIndex(beginIndex, endIndex, coordinates.length >>> 1); return new SubEnvelope(coordinates, beginIndex, endIndex); /* * Do not check if we could return "this" as an optimization, in order to keep diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java index 54eea5d3d6..7d34fe120e 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java @@ -23,9 +23,7 @@ package org.apache.sis.geometry; * force installation of the Java2D module (e.g. JavaFX/SWT). */ import java.util.Arrays; - -import static org.apache.sis.util.ArgumentChecks.ensureValidIndex; -import static org.apache.sis.util.ArgumentChecks.ensureValidIndexRange; +import java.util.Objects; /** @@ -102,8 +100,7 @@ final class SubEnvelope extends GeneralEnvelope { */ @Override public double getLower(final int dimension) throws IndexOutOfBoundsException { - ensureValidIndex(endIndex, dimension); - return coordinates[dimension + beginIndex]; + return coordinates[Objects.checkIndex(dimension, endIndex) + beginIndex]; } /** @@ -112,8 +109,7 @@ final class SubEnvelope extends GeneralEnvelope { */ @Override public double getUpper(final int dimension) throws IndexOutOfBoundsException { - ensureValidIndex(endIndex, dimension); - return coordinates[dimension + beginIndex + (coordinates.length >>> 1)]; + return coordinates[Objects.checkIndex(dimension, endIndex) + beginIndex + (coordinates.length >>> 1)]; } /** @@ -123,7 +119,7 @@ final class SubEnvelope extends GeneralEnvelope { public void setRange(int dimension, final double lower, final double upper) throws IndexOutOfBoundsException { - ensureValidIndex(endIndex, dimension); + Objects.checkIndex(dimension, endIndex); /* * The check performed here shall be identical to the super-class method, which is itself * identical to ArrayEnvelope.verifyRanges(crs, coordinates) except that there is no loop. @@ -197,7 +193,7 @@ final class SubEnvelope extends GeneralEnvelope { */ @Override public GeneralEnvelope subEnvelope(final int b, final int e) throws IndexOutOfBoundsException { - ensureValidIndexRange(endIndex - beginIndex, b, e); + Objects.checkFromToIndex(b, e, endIndex - beginIndex); return new SubEnvelope(coordinates, b + beginIndex, e + beginIndex); } diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java index 36e58c4e85..6cd496d503 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Iterator; +import java.util.Objects; import java.io.Serializable; import org.opengis.metadata.Identifier; import org.opengis.referencing.IdentifiedObject; @@ -32,7 +33,6 @@ import org.opengis.util.InternationalString; import org.apache.sis.util.Classes; import org.apache.sis.util.Exceptions; import org.apache.sis.util.Localized; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.resources.Errors; import org.apache.sis.util.resources.Messages; import org.apache.sis.util.resources.Vocabulary; @@ -243,7 +243,7 @@ public final class Warnings implements Localized, Serializable { * @return the <var>i</var>-th warning message. */ public String getMessage(int index) { - ArgumentChecks.ensureValidIndex(getNumMessages(), index); + Objects.checkIndex(index, getNumMessages()); index *= 2; final InternationalString i18n = (InternationalString) messages.get(index); if (i18n != null) { @@ -266,7 +266,7 @@ public final class Warnings implements Localized, Serializable { * @return the exception which was the cause of the warning message, or {@code null} if none. */ public Exception getException(final int index) { - ArgumentChecks.ensureValidIndex(getNumMessages(), index); + Objects.checkIndex(index, getNumMessages()); return (Exception) messages.get(index*2 + 1); } diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java index 1263bac902..7c558bd6c0 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.AbstractList; import java.util.RandomAccess; import java.util.Arrays; +import java.util.Objects; import java.io.Serializable; import java.io.IOException; import java.io.ObjectOutputStream; @@ -32,7 +33,6 @@ import org.opengis.parameter.InvalidParameterNameException; import org.opengis.parameter.InvalidParameterCardinalityException; import org.opengis.metadata.Identifier; import org.apache.sis.util.ArraysExt; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.resources.Errors; import org.apache.sis.referencing.IdentifiedObjects; import org.apache.sis.referencing.internal.Resources; @@ -145,8 +145,7 @@ final class ParameterValueList extends AbstractList<GeneralParameterValue> imple */ @Override public GeneralParameterValue get(int index) { - ArgumentChecks.ensureValidIndex(size, index); - GeneralParameterValue value = values[index]; + GeneralParameterValue value = values[Objects.checkIndex(index, size)]; if (value instanceof UninitializedParameter) { values[index] = value = value.getDescriptor().createValue(); } @@ -160,9 +159,7 @@ final class ParameterValueList extends AbstractList<GeneralParameterValue> imple */ @Override public GeneralParameterValue set(final int index, final GeneralParameterValue parameter) { - ArgumentChecks.ensureValidIndex(size, index); - final GeneralParameterValue value = values[index]; - ArgumentChecks.ensureNonNull("parameter", parameter); + final GeneralParameterValue value = values[Objects.checkIndex(index, size)]; final GeneralParameterDescriptor desc = parameter.getDescriptor(); if (!value.getDescriptor().equals(desc)) { ensureDescriptorExists(desc); @@ -187,7 +184,6 @@ final class ParameterValueList extends AbstractList<GeneralParameterValue> imple */ @Override public boolean add(final GeneralParameterValue parameter) { - ArgumentChecks.ensureNonNull("parameter", parameter); final GeneralParameterDescriptor desc = parameter.getDescriptor(); ensureDescriptorExists(desc); /* @@ -241,8 +237,8 @@ final class ParameterValueList extends AbstractList<GeneralParameterValue> imple */ final Identifier name = desc.getName(); final String code = name.getCode(); - for (final GeneralParameterDescriptor descriptor : descriptors) { - if (IdentifiedObjects.isHeuristicMatchForName(descriptor, code)) { + for (final GeneralParameterDescriptor d : descriptors) { + if (IdentifiedObjects.isHeuristicMatchForName(d, code)) { throw new IllegalArgumentException(Resources.format( Resources.Keys.MismatchedParameterDescriptor_1, name)); } @@ -303,8 +299,7 @@ final class ParameterValueList extends AbstractList<GeneralParameterValue> imple */ @Override public GeneralParameterValue remove(final int index) { - ArgumentChecks.ensureValidIndex(size, index); - final GeneralParameterValue value = values[index]; + final GeneralParameterValue value = values[Objects.checkIndex(index, size)]; ensureCanRemove(value.getDescriptor()); System.arraycopy(values, index + 1, values, index, --size - index); values[size] = null; diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java index 7bd5854b2d..e367036ff2 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java @@ -19,6 +19,7 @@ package org.apache.sis.referencing; import java.util.Map; import java.util.List; import java.util.ArrayList; +import java.util.Objects; import java.util.Optional; import java.util.logging.Filter; import java.util.logging.Logger; @@ -1460,7 +1461,7 @@ public final class CRS extends Static { public static CoordinateReferenceSystem getComponentAt(CoordinateReferenceSystem crs, int lower, int upper) { if (crs == null) return null; // Skip bounds check. int dimension = ReferencingUtilities.getDimension(crs); - ArgumentChecks.ensureValidIndexRange(dimension, lower, upper); + Objects.checkFromToIndex(lower, upper, dimension); check: while (lower != 0 || upper != dimension) { if (crs instanceof CompoundCRS) { // We need nested CompoundCRS (if any) below, not a flattened list of SingleCRS. diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java index 9cc3708827..51e5802a77 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java @@ -205,7 +205,6 @@ public abstract class InstallationScriptProvider extends InstallationResources { @Override public BufferedReader openScript(final String authority, final int resource) throws IOException { verifyAuthority(authority); - ArgumentChecks.ensureValidIndex(resources.length, resource); if (!Constants.EPSG.equals(authority)) { throw new IllegalStateException(Resources.format(Resources.Keys.UnknownAuthority_1, authority)); } diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java index 1cae1b466e..9f2c085be4 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java @@ -26,6 +26,7 @@ import java.util.NoSuchElementException; import java.util.Optional; import java.util.Locale; import java.text.NumberFormat; +import java.util.Objects; import java.io.IOException; import java.io.UncheckedIOException; import org.opengis.util.FactoryException; @@ -1330,8 +1331,7 @@ search: for (int j=domain(); --j >= 0;) { long defined = 0; projToGrid = projToGrid.clone(); for (final int d : projToGrid) { - ArgumentChecks.ensureValidIndex(tgtDim, d); - if (defined == (defined |= Numerics.bitmask(d))) { + if (defined == (defined |= Numerics.bitmask(Objects.checkIndex(d, tgtDim)))) { // Note: if d ≥ 64, there will be no check (mask = 0). throw new IllegalArgumentException(Errors.format(Errors.Keys.DuplicatedNumber_1, d)); } diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java index 0e1a908f31..ea5432b721 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java @@ -577,8 +577,7 @@ public final class Matrices extends Static { final int numTargetDim = selectedDimensions.length; final MatrixSIS matrix = createZero(numTargetDim+1, sourceDimensions+1); for (int j=0; j<numTargetDim; j++) { - final int i = selectedDimensions[j]; - ArgumentChecks.ensureValidIndex(sourceDimensions, i); + int i = Objects.checkIndex(selectedDimensions[j], sourceDimensions); matrix.setElement(j, i, 1); } matrix.setElement(numTargetDim, sourceDimensions, 1); diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java index abd0e85050..55c4c0a128 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java @@ -17,12 +17,12 @@ package org.apache.sis.referencing.operation.matrix; import java.util.Arrays; +import java.util.Objects; import java.io.Serializable; import java.awt.geom.AffineTransform; // For javadoc import org.opengis.referencing.operation.Matrix; import org.apache.sis.referencing.util.ExtendedPrecisionMatrix; import org.apache.sis.referencing.internal.Arithmetic; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.ComparisonMode; import org.apache.sis.util.LenientComparable; import org.apache.sis.util.Numbers; @@ -295,7 +295,7 @@ public abstract class MatrixSIS implements Matrix, LenientComparable, Cloneable, * @since 0.7 */ public void setMatrix(final Matrix source) throws MismatchedMatrixSizeException { - ArgumentChecks.ensureNonNull("source", source); + Objects.requireNonNull(source); final int numRow = getNumRow(); final int numCol = getNumCol(); ensureSizeMatch(numRow, numCol, source); @@ -447,7 +447,7 @@ public abstract class MatrixSIS implements Matrix, LenientComparable, Cloneable, */ public void convertBefore(final int srcDim, final Number scale, final Number offset) { final int lastCol = getNumCol() - 1; - ArgumentChecks.ensureValidIndex(lastCol, srcDim); + Objects.checkIndex(srcDim, lastCol); for (int j = getNumRow(); --j >= 0;) { if (offset != null) { final Number s = getElementOrNull(j, srcDim); // Scale factor @@ -478,7 +478,7 @@ public abstract class MatrixSIS implements Matrix, LenientComparable, Cloneable, public void convertAfter(final int tgtDim, final Number scale, final Number offset) { final int lastRow = getNumRow() - 1; final int lastCol = getNumCol() - 1; - ArgumentChecks.ensureValidIndex(lastRow, tgtDim); + Objects.checkIndex(tgtDim, lastRow); if (scale != null) { for (int i=lastCol; i>=0; i--) { final Number s = getElementOrNull(tgtDim, i); @@ -635,7 +635,7 @@ public abstract class MatrixSIS implements Matrix, LenientComparable, Cloneable, public MatrixSIS removeRows(final int lower, final int upper) { final int numRow = getNumRow(); final int numCol = getNumCol(); - ArgumentChecks.ensureValidIndexRange(numRow, lower, upper); + Objects.checkFromToIndex(lower, upper, numRow); final MatrixSIS reduced = Matrices.createZero(numRow - (upper - lower), numCol, this); int dest = 0; for (int j=0; j<numRow; j++) { @@ -665,7 +665,7 @@ public abstract class MatrixSIS implements Matrix, LenientComparable, Cloneable, public MatrixSIS removeColumns(final int lower, final int upper) { final int numRow = getNumRow(); final int numCol = getNumCol(); - ArgumentChecks.ensureValidIndexRange(numCol, lower, upper); + Objects.checkFromToIndex(lower, upper, numCol); final MatrixSIS reduced = Matrices.createZero(numRow, numCol - (upper - lower), this); int dest = 0; for (int i=0; i<numCol; i++) { diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java index 01ce1f8dfa..55f4214b70 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java @@ -19,6 +19,7 @@ package org.apache.sis.referencing.util; import java.util.Map; import java.util.Date; import java.util.Locale; +import java.util.Objects; import java.util.function.BiConsumer; import javax.measure.Unit; import javax.measure.quantity.Time; @@ -256,7 +257,6 @@ public class GeodeticObjectBuilder extends Builder<GeodeticObjectBuilder> { * @throws FactoryException if the operation method cannot be obtained. */ public GeodeticObjectBuilder setConversion(final ParameterValueGroup parameters) throws FactoryException { - ArgumentChecks.ensureNonNull("parameters", parameters); method = factories.getCoordinateOperationFactory().getOperationMethod(parameters.getDescriptor().getName().getCode()); this.parameters = parameters; // Set only if above line succeed. return this; @@ -634,7 +634,7 @@ public class GeodeticObjectBuilder extends Builder<GeodeticObjectBuilder> { */ return source.equals(replacement) ? source : replacement; } - ArgumentChecks.ensureValidIndex(srcDim - repDim, firstDimension); + Objects.checkIndex(firstDimension, srcDim - repDim); if (source instanceof CompoundCRS) { final var components = ((CompoundCRS) source).getComponents().toArray(CoordinateReferenceSystem[]::new); int lower = 0; diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java index 31b97de4b6..a749b952b4 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java @@ -16,6 +16,7 @@ */ package org.apache.sis.io; +import java.util.Objects; import java.io.Flushable; import java.io.IOException; import org.apache.sis.util.Characters; @@ -577,7 +578,7 @@ split: for (;;) { */ @Override public Appendable append(final CharSequence sequence, int start, final int end) throws IOException { - ArgumentChecks.ensureValidIndexRange(sequence.length(), start, end); + Objects.checkFromToIndex(start, end, sequence.length()); if (lineSeparator == null) { /* * Use the line separator found in the submitted document, if possible. diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java index 2fad93f5b7..0de68ba745 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java @@ -19,6 +19,7 @@ package org.apache.sis.io; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.io.Flushable; import java.io.IOException; import java.io.UncheckedIOException; @@ -506,7 +507,7 @@ public class TableAppender extends Appender implements Flushable { @Override @SuppressWarnings("fallthrough") public TableAppender append(final CharSequence sequence, int start, int end) { - ArgumentChecks.ensureValidIndexRange(sequence.length(), start, end); + Objects.checkFromToIndex(start, end, sequence.length()); if (lineSeparator == null) { lineSeparator = lineSeparator(sequence, start, end); } diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java index 2d497f6cea..add6f897df 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java @@ -17,6 +17,7 @@ package org.apache.sis.math; import java.util.Arrays; +import java.util.Objects; import static java.lang.Math.PI; import static java.lang.Math.min; import static java.lang.Math.abs; @@ -797,7 +798,8 @@ public final class MathFunctions extends Static { * @see java.math.BigInteger#isProbablePrime(int) */ static int primeNumberAt(final int index) throws IndexOutOfBoundsException { - ArgumentChecks.ensureValidIndex(PRIMES_LENGTH_16_BITS, index); + Objects.checkIndex(index, PRIMES_LENGTH_16_BITS); + @SuppressWarnings("LocalVariableHidesMemberVariable") short[] primes = MathFunctions.primes; if (index >= primes.length) { synchronized (MathFunctions.class) { @@ -842,6 +844,7 @@ testNextNumber: while (true) { // Simulate a "goto" statement (usua */ public static int nextPrimeNumber(final int number) throws IllegalArgumentException { ArgumentChecks.ensureBetween("number", 2, HIGHEST_SUPPORTED_PRIME_NUMBER, number); + @SuppressWarnings("LocalVariableHidesMemberVariable") final short[] primes = MathFunctions.primes; int lower = 0; int upper = min(PRIMES_LENGTH_15_BITS, primes.length); diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java index db30512814..21a3ce8dda 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java @@ -17,9 +17,9 @@ package org.apache.sis.math; import java.io.Serializable; +import java.util.Objects; import java.util.function.IntSupplier; import org.apache.sis.measure.NumberRange; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.resources.Errors; @@ -119,8 +119,7 @@ final class RepeatedVector extends Vector implements Serializable { * Converts the given index from this vector domain to an index in the {@linkplain #base} vector. */ private int toBase(final int index) { - ArgumentChecks.ensureValidIndex(size, index); - return (index / occurrences) % cycleLength; + return (Objects.checkIndex(index, size) / occurrences) % cycleLength; } /** diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java index f3d62960a5..cb809f0935 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java @@ -17,10 +17,10 @@ package org.apache.sis.math; import java.util.Arrays; +import java.util.Objects; import java.io.Serializable; import org.apache.sis.measure.NumberRange; import org.apache.sis.util.Numbers; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.resources.Errors; @@ -190,8 +190,7 @@ abstract class SequenceVector extends Vector implements Serializable { /** Computes the value at the given index. */ @Override public final double doubleValue(final int index) { - ArgumentChecks.ensureValidIndex(length, index); - return Math.fma(index, increment, first); + return Math.fma(Objects.checkIndex(index, length), increment, first); } /** Returns the string representation of the value at the given index. */ @@ -318,8 +317,7 @@ abstract class SequenceVector extends Vector implements Serializable { /** Computes the value at the given index. */ @Override public long longValue(final int index) { - ArgumentChecks.ensureValidIndex(length, index); - return first + increment*index; + return Math.addExact(first, Math.multiplyExact(increment, Objects.checkIndex(index, length))); } /** Returns the string representation of the value at the given index. */ diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java index 81561db4f5..430a8367fc 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java @@ -23,6 +23,7 @@ import java.util.AbstractList; import java.util.RandomAccess; import java.util.StringJoiner; import java.util.Optional; +import java.util.Objects; import java.util.function.IntSupplier; import static java.util.logging.Logger.getLogger; import org.apache.sis.measure.NumberRange; @@ -33,7 +34,6 @@ import org.apache.sis.util.logging.Logging; import org.apache.sis.util.resources.Errors; import org.apache.sis.util.internal.Numerics; import org.apache.sis.system.Loggers; -import static org.apache.sis.util.ArgumentChecks.ensureValidIndex; /** @@ -560,7 +560,7 @@ public abstract class Vector extends AbstractList<Number> implements RandomAcces */ public void fill(int fromIndex, final int toIndex, final Number value) { // Subclasses override with more efficient implementations. - ArgumentChecks.ensureValidIndexRange(size(), fromIndex, toIndex); + Objects.checkFromToIndex(fromIndex, toIndex, size()); while (fromIndex < toIndex) set(fromIndex++, value); } @@ -967,8 +967,7 @@ search: for (;;) { /** Returns the index where to look for the value in the enclosing vector. */ final int toBacking(final int index) { - ensureValidIndex(length, index); - return index*step + first; + return Objects.checkIndex(index, length) * step + first; } /** Returns the index where to look for the value in the enclosing vector. */ @@ -1105,7 +1104,7 @@ search: for (;;) { indices = indices.clone(); final int length = size(); for (int i : indices) { - ensureValidIndex(length, i); + Objects.checkIndex(i, length); } return indices; } diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java index 5a0ed48df1..c5e93c7a6d 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java @@ -59,11 +59,6 @@ import org.opengis.coverage.grid.GridEnvelope; * {@link #ensureCanCast(String, Class, Object) ensureCanCast}. * </td> * </tr><tr> - * <td>{@link IndexOutOfBoundsException}</td> - * <td class="sep"> - * {@link #ensureValidIndex(int, int) ensureValidIndex}. - * </td> - * </tr><tr> * <td>{@link MismatchedDimensionException}</td> * <td class="sep"> * {@link #ensureDimensionMatches(String, int, DirectPosition) ensureDimensionMatches}. @@ -335,7 +330,10 @@ public final class ArgumentChecks extends Static { * @throws IndexOutOfBoundsException if the given index is negative or not lower than the given upper value. * * @see #ensurePositive(String, int) + * + * @deprecated As of Java 9, replaced by {@link Objects#checkIndex(int, int)}. */ + @Deprecated(since="1.5", forRemoval=true) public static void ensureValidIndex(final int upper, final int index) throws IndexOutOfBoundsException { if (index < 0 || index >= upper) { throw new IndexOutOfBoundsException(Errors.format(Errors.Keys.IndexOutOfBounds_1, index)); @@ -359,7 +357,10 @@ public final class ArgumentChecks extends Static { * range is out of the sequence index range. * * @see #ensureCountBetween(String, boolean, int, int, int) + * + * @deprecated As of Java 9, replaced by {@link Objects#checkFromToIndex(int, int, int)}. */ + @Deprecated(since="1.5", forRemoval=true) public static void ensureValidIndexRange(final int length, final int lower, final int upper) throws IndexOutOfBoundsException { if (lower < 0 || upper < lower || upper > length) { throw new IndexOutOfBoundsException(Errors.format(Errors.Keys.IllegalRange_2, lower, upper)); @@ -369,13 +370,12 @@ public final class ArgumentChecks extends Static { /** * Ensures that the given integer value is greater than or equals to zero. * This method is used for checking values that are <strong>not</strong> index. - * For checking index values, use {@link #ensureValidIndex(int, int)} instead. + * For checking index values, use {@link Objects#checkIndex(int, int)} instead. * * @param name the name of the argument to be checked, used only if an exception is thrown. * @param value the user argument to check. * @throws IllegalArgumentException if the given value is negative. * - * @see #ensureValidIndex(int, int) * @see #ensureStrictlyPositive(String, int) */ public static void ensurePositive(final String name, final int value) @@ -568,7 +568,7 @@ public final class ArgumentChecks extends Static { * <ul> * <li>{@link #ensureCountBetween(String, boolean, int, int, int) ensureCountBetween(…)} * if the {@code value} argument is a collection size or an array length.</li> - * <li>{@link #ensureValidIndex(int, int) ensureValidIndex(…)} if the {@code value} + * <li>{@link Objects#checkIndex(int, int)} if the {@code value} * argument is an index in a list or an array.</li> * </ul> * @@ -579,8 +579,6 @@ public final class ArgumentChecks extends Static { * @throws IllegalArgumentException if the given value is not in the given range. * * @see #ensureCountBetween(String, boolean, int, int, int) - * @see #ensureValidIndex(int, int) - * @see #ensureValidIndexRange(int, int, int) */ public static void ensureBetween(final String name, final int min, final int max, final int value) throws IllegalArgumentException @@ -660,7 +658,6 @@ public final class ArgumentChecks extends Static { * @throws IllegalArgumentException if the given value is not in the given range. * * @see #ensureBetween(String, int, int, int) - * @see #ensureValidIndexRange(int, int, int) * * @since 1.4 */ diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java index d39dfce408..33a8a56d48 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java @@ -17,6 +17,7 @@ package org.apache.sis.util; import java.util.Arrays; +import java.util.Objects; import java.nio.CharBuffer; import static java.lang.Character.*; import org.opengis.metadata.citation.Citation; // For javadoc @@ -140,12 +141,12 @@ public final class CharSequences extends Static { } @Override public char charAt(int index) { - ArgumentChecks.ensureValidIndex(length, index); + Objects.checkIndex(index, length); return ' '; } @Override public CharSequence subSequence(final int start, final int end) { - ArgumentChecks.ensureValidIndexRange(length, start, end); + Objects.checkFromToIndex(start, end, length); final int n = end - start; return (n == length) ? this : spaces(n); } @@ -981,7 +982,7 @@ search: for (; fromIndex <= toIndex; fromIndex++) { */ public static CharSequence trimWhitespaces(CharSequence text, int lower, int upper) { final int length = length(text); - ArgumentChecks.ensureValidIndexRange(length, lower, upper); + Objects.checkFromToIndex(lower, upper, length); if (text != null) { lower = skipLeadingWhitespaces (text, lower, upper); upper = skipTrailingWhitespaces(text, lower, upper); diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java index d2e90b086c..35194b0da3 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java @@ -21,6 +21,7 @@ import java.util.Set; import java.util.List; import java.util.Iterator; import java.util.Collection; +import java.util.Objects; import org.apache.sis.util.Static; import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.ObjectConverter; @@ -118,8 +119,7 @@ public final class Containers extends Static { * @throws IndexOutOfBoundsException if the lower or upper value are out of bounds. */ public static <E> List<? extends E> unmodifiableList(final E[] array, final int lower, final int upper) { - ArgumentChecks.ensureNonNull("array", array); - ArgumentChecks.ensureValidIndexRange(array.length, lower, upper); + Objects.checkFromToIndex(lower, upper, array.length); return UnmodifiableArrayList.wrap(array, lower, upper); } diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java index a8387c81ce..a19c3337d7 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java @@ -468,8 +468,7 @@ public class DefaultTreeTable implements TreeTable, Cloneable, Serializable { this.parent = parent; columnIndices = parent.columnIndices; final TreeNodeList addTo = (TreeNodeList) parent.getChildren(); - ArgumentChecks.ensureValidIndex(addTo.size() + 1, index); - addTo.addChild(index, this); + addTo.addChild(Objects.checkIndex(index, addTo.size() + 1), this); } /** diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java index 8e49d11435..9d7d998699 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java @@ -18,6 +18,7 @@ package org.apache.sis.util.collection; import java.util.Arrays; import java.util.AbstractList; +import java.util.Objects; import java.util.RandomAccess; import java.util.Spliterator; import java.util.PrimitiveIterator; @@ -281,8 +282,7 @@ public class IntegerList extends AbstractList<Integer> implements RandomAccess, * @throws IndexOutOfBoundsException if the given index is out of bounds. */ public int getInt(final int index) throws IndexOutOfBoundsException { - ArgumentChecks.ensureValidIndex(size, index); - return getUnchecked(index); + return getUnchecked(Objects.checkIndex(index, size)); } /** @@ -333,7 +333,7 @@ public class IntegerList extends AbstractList<Integer> implements RandomAccess, * @throws IllegalArgumentException if the given value is out of bounds. */ public void setInt(int index, int value) throws IndexOutOfBoundsException { - ArgumentChecks.ensureValidIndex(size, index); + Objects.checkIndex(index, size); ArgumentChecks.ensureBetween("value", 0, mask, value); modCount++; setUnchecked(index, value); @@ -399,7 +399,7 @@ public class IntegerList extends AbstractList<Integer> implements RandomAccess, */ @Override protected void removeRange(int lower, int upper) { - ArgumentChecks.ensureValidIndexRange(size, lower, upper); + Objects.checkFromToIndex(lower, upper, size); int lo = lower * bitCount; int hi = upper * bitCount; final int offset = (lo & OFFSET_MASK); diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java index bb91f27c0e..d911c4d8f2 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java @@ -18,8 +18,8 @@ package org.apache.sis.util.collection; import java.util.Arrays; import java.util.AbstractList; +import java.util.Objects; import java.io.Serializable; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.resources.Errors; @@ -163,8 +163,7 @@ abstract class TreeNodeList extends AbstractList<TreeTable.Node> */ @Override public TreeTable.Node get(final int index) { - ArgumentChecks.ensureValidIndex(size, index); - return children[index]; + return children[Objects.checkIndex(index, size)]; } /** @@ -178,10 +177,8 @@ abstract class TreeNodeList extends AbstractList<TreeTable.Node> */ @Override public TreeTable.Node set(final int index, final TreeTable.Node node) throws IllegalArgumentException { - ArgumentChecks.ensureValidIndex(size, index); - ArgumentChecks.ensureNonNull("node", node); - final TreeTable.Node old = children[index]; - if (old != node) { + final TreeTable.Node old = children[Objects.checkIndex(index, size)]; + if (old != Objects.requireNonNull(node)) { if (isParentOf(node)) { ensureNotPresent(node); setParentOf(old, NULL); @@ -207,9 +204,8 @@ abstract class TreeNodeList extends AbstractList<TreeTable.Node> */ @Override public void add(final int index, final TreeTable.Node node) throws IllegalArgumentException { - ArgumentChecks.ensureValidIndex(size + 1, index); - ArgumentChecks.ensureNonNull("node", node); - if (isParentOf(node)) { + Objects.checkIndex(index, size + 1); + if (isParentOf(Objects.requireNonNull(node))) { ensureNotPresent(node); } else { setParentOf(node, THIS); @@ -260,7 +256,7 @@ abstract class TreeNodeList extends AbstractList<TreeTable.Node> */ @Override protected void removeRange(final int lower, final int upper) throws IllegalArgumentException { - ArgumentChecks.ensureValidIndexRange(size, lower, upper); + Objects.checkFromToIndex(lower, upper, size); int i = upper; try { while (i != lower) { @@ -286,8 +282,7 @@ abstract class TreeNodeList extends AbstractList<TreeTable.Node> */ @Override public final TreeTable.Node remove(final int index) throws IllegalArgumentException { - ArgumentChecks.ensureValidIndex(size, index); - final TreeTable.Node old = children[index]; + final TreeTable.Node old = children[Objects.checkIndex(index, size)]; setParentOf(old, NULL); System.arraycopy(children, index+1, children, index, --size - index); children[size] = null; diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java index 095d97c107..72cc810b8c 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java @@ -22,7 +22,6 @@ import java.util.Arrays; import java.util.Objects; import java.util.RandomAccess; import java.lang.reflect.Array; -import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.ConditionallySafe; import org.apache.sis.util.collection.CheckedContainer; @@ -303,7 +302,7 @@ public class UnmodifiableArrayList<E> extends AbstractList<E> implements RandomA public UnmodifiableArrayList<E> subList(final int lower, final int upper) throws IndexOutOfBoundsException { - ArgumentChecks.ensureValidIndexRange(size(), lower, upper); + Objects.checkFromToIndex(lower, upper, size()); return new SubList<>(array, lower + lower(), upper - lower); } @@ -357,8 +356,7 @@ public class UnmodifiableArrayList<E> extends AbstractList<E> implements RandomA */ @Override public E get(final int index) { - ArgumentChecks.ensureValidIndex(size, index); - return super.get(index + lower); + return super.get(Objects.checkIndex(index, size) + lower); } /** diff --git a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java index f3c383200a..c146d3a81b 100644 --- a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java +++ b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java @@ -21,6 +21,7 @@ import java.awt.Shape; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.ServiceLoader; import java.util.stream.Stream; import org.apache.sis.coverage.grid.GridCoverage2D; @@ -29,7 +30,6 @@ import org.apache.sis.map.MapItem; import org.apache.sis.map.MapLayer; import org.apache.sis.map.MapLayers; import org.apache.sis.map.Presentation; -import org.apache.sis.map.SEPortrayer; import org.apache.sis.style.Style; import org.apache.sis.util.ArgumentChecks; @@ -92,7 +92,7 @@ public final class GraphicsPortrayer { ArgumentChecks.ensureNonNull("domain", domain); long[] low = domain.getExtent().getLow().getCoordinateValues(); for (long l : low) { - ArgumentChecks.ensureValidIndex(1, (int) l); + Objects.checkIndex((int) l, 1); } this.domain = domain;