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 c0fc9b4dfee471dce9850230de66687abd6daced Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Tue Feb 20 11:18:09 2024 +0100 Better identification of code that will need to be replaced in Java 16. --- .../apache/sis/coverage/grid/j2d/TilePlaceholder.java | 4 ++-- .../main/org/apache/sis/image/TileCache.java | 3 ++- .../map/coverage/MultiResolutionCoverageLoader.java | 3 ++- .../sis/referencing/factory/sql/EPSGDataAccess.java | 4 ++-- .../main/org/apache/sis/storage/CoverageSubset.java | 7 +++---- endorsed/src/org.apache.sis.util/main/module-info.java | 1 + .../main/org/apache/sis/pending/jdk/JDK16.java | 18 +++++++++++++++--- .../main/org/apache/sis/util/collection/Cache.java | 3 ++- 8 files changed, 29 insertions(+), 14 deletions(-) diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/j2d/TilePlaceholder.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/j2d/TilePlaceholder.java index 8b367f2af4..d817942a9d 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/j2d/TilePlaceholder.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/j2d/TilePlaceholder.java @@ -28,6 +28,7 @@ import java.awt.image.WritableRaster; import java.awt.image.RenderedImage; import java.awt.image.BufferedImage; import java.lang.ref.WeakReference; +import org.apache.sis.pending.jdk.JDK16; import org.apache.sis.util.Disposable; import org.apache.sis.util.Workaround; import org.apache.sis.util.collection.WeakHashSet; @@ -206,8 +207,7 @@ public class TilePlaceholder { r = reference; } if (r != null) { - return r.get() == tile.getDataBuffer(); - // TODO: use r.refersTo(tile.getDataBuffer()) with JDK16. + return JDK16.refersTo(r, tile.getDataBuffer()); } } return false; diff --git a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/TileCache.java b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/TileCache.java index 45a795c5c4..a9b6684b61 100644 --- a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/TileCache.java +++ b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/TileCache.java @@ -23,6 +23,7 @@ import java.lang.ref.Reference; import org.apache.sis.util.collection.Cache; import org.apache.sis.util.internal.Numerics; import org.apache.sis.feature.internal.Resources; +import org.apache.sis.pending.jdk.JDK16; /** @@ -148,7 +149,7 @@ final class TileCache extends Cache<TileCache.Key, Raster> { * The {@link #dispose()} should have been invoked in such cases. */ final boolean isEmpty() { - return image.get() == null; // TODO: use `refersTo(null)` with JDK16. + return JDK16.refersTo(image, null); } /** diff --git a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java index 1a0d6ab1e2..37e7243388 100644 --- a/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java +++ b/endorsed/src/org.apache.sis.portrayal/main/org/apache/sis/map/coverage/MultiResolutionCoverageLoader.java @@ -37,6 +37,7 @@ import org.apache.sis.coverage.grid.GridRoundingMode; import org.apache.sis.math.DecimalFunctions; import org.apache.sis.io.TableAppender; import org.apache.sis.system.Configuration; +import org.apache.sis.pending.jdk.JDK16; /** @@ -358,7 +359,7 @@ dimensions: for (int j=0; j<tgtDim; j++) { table.nextColumn(); } final Reference<GridCoverage> ref = coverages[level]; - if (ref != null && ref.get() != null) { // TODO: use !refersTo(null) in JDK16. + if (ref != null && !JDK16.refersTo(ref, null)) { table.append("cached"); } table.nextLine(); diff --git a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java index 3f3ec15ab8..45749cd97c 100644 --- a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java +++ b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java @@ -116,6 +116,7 @@ import org.apache.sis.util.logging.Logging; import org.apache.sis.measure.MeasurementRange; import org.apache.sis.measure.NumberRange; import org.apache.sis.measure.Units; +import org.apache.sis.pending.jdk.JDK16; import static org.apache.sis.util.Utilities.equalsIgnoreMetadata; import static org.apache.sis.util.internal.StandardDateFormat.UTC; import static org.apache.sis.referencing.internal.ServicesForMetadata.CONNECTION; @@ -3248,8 +3249,7 @@ next: while (r.next()) { System.gc(); // For cleaning as much weak references as we can before we check them. final Iterator<CloseableReference> it = authorityCodes.values().iterator(); while (it.hasNext()) { - final AuthorityCodes codes = it.next().get(); // TODO: use referTo(null) with JDK16. - if (codes == null) { + if (JDK16.refersTo(it.next(), null)) { it.remove(); } else { /* diff --git a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/CoverageSubset.java b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/CoverageSubset.java index 4911067365..59e0c8bd5b 100644 --- a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/CoverageSubset.java +++ b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/CoverageSubset.java @@ -19,7 +19,6 @@ package org.apache.sis.storage; import java.util.List; import java.util.Arrays; import java.util.Optional; -import java.util.stream.Collectors; import org.opengis.util.GenericName; import org.opengis.util.FactoryException; import org.opengis.metadata.Metadata; @@ -38,6 +37,7 @@ import org.apache.sis.storage.internal.Resources; import org.apache.sis.storage.base.MetadataBuilder; import org.apache.sis.storage.base.StoreUtilities; import org.apache.sis.util.internal.UnmodifiableArrayList; +import org.apache.sis.pending.jdk.JDK16; /** @@ -144,9 +144,8 @@ final class CoverageSubset extends AbstractGridCoverageResource { public List<double[]> getResolutions() throws DataStoreException { List<double[]> resolutions = source.getResolutions(); if (reduction != null) { - resolutions.stream().map((resolution) -> { - return reduction.apply(new DirectPositionView.Double(resolution)).getCoordinate(); - }).collect(Collectors.toList()); // TODO: replace by Stream.toList() on JDK16. + JDK16.toList(resolutions.stream() + .map((resolution) -> reduction.apply(new DirectPositionView.Double(resolution)).getCoordinate())); } return resolutions; } diff --git a/endorsed/src/org.apache.sis.util/main/module-info.java b/endorsed/src/org.apache.sis.util/main/module-info.java index 87bc6184b0..25cdc40738 100644 --- a/endorsed/src/org.apache.sis.util/main/module-info.java +++ b/endorsed/src/org.apache.sis.util/main/module-info.java @@ -165,5 +165,6 @@ module org.apache.sis.util { org.apache.sis.storage.sql, org.apache.sis.storage.netcdf, org.apache.sis.storage.geotiff, + org.apache.sis.portrayal, org.apache.sis.console; } diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/pending/jdk/JDK16.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/pending/jdk/JDK16.java index 53270b08ea..a8b1a165ec 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/pending/jdk/JDK16.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/pending/jdk/JDK16.java @@ -16,9 +16,10 @@ */ package org.apache.sis.pending.jdk; +import java.lang.ref.Reference; import java.util.List; import java.util.stream.Stream; -import org.apache.sis.util.internal.UnmodifiableArrayList; +import java.util.stream.Collectors; /** @@ -33,6 +34,18 @@ public final class JDK16 { private JDK16() { } + /** + * Place holder for {@link Reference#refersTo(Object)} method added in JDK16. + * + * @param <T> type of elements in the reference. + * @param ref the reference to check, or {@code null}. + * @param obj the value to compare to the reference value. + * @return whether the reference value is the given object. + */ + public static <T> boolean refersTo(Reference<T> ref, T obj) { + return ref.get() == obj; + } + /** * Place holder for {@link Stream#toList()} method added in JDK16. * @@ -40,8 +53,7 @@ public final class JDK16 { * @param s the stream to convert to a list. * @return the stream content as a list. */ - @SuppressWarnings("unchecked") public static <T> List<T> toList(final Stream<T> s) { - return (List<T>) UnmodifiableArrayList.wrap(s.toArray()); + return s.collect(Collectors.toList()); } } diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Cache.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Cache.java index 81b7b74395..ca17d58b30 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Cache.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Cache.java @@ -31,6 +31,7 @@ import java.util.concurrent.locks.ReentrantLock; import java.lang.ref.Reference; import java.lang.ref.WeakReference; import java.lang.ref.SoftReference; +import org.apache.sis.pending.jdk.JDK16; import org.apache.sis.util.Disposable; import org.apache.sis.util.ArgumentChecks; import org.apache.sis.util.resources.Errors; @@ -384,7 +385,7 @@ public class Cache<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V> { * @return whether the given value is null or a cleared reference. */ private static boolean isNull(final Object value) { - return (value == null) || (value instanceof Reference<?> && ((Reference<?>) value).get() == null); // TODO: use refersTo(null) with JDK16. + return (value == null) || (value instanceof Reference<?> && JDK16.refersTo((Reference<?>) value, null)); } /**