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));
     }
 
     /**

Reply via email to