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


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
     new 6c50bd371c Update for the removal of `GeneralDerivedCRS` from GeoAPI 
4.0. This is replaced by direct usage of `DerivedCRS`.
6c50bd371c is described below

commit 6c50bd371c210bb3ee28525f9abe0f2ad59de146
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Tue Apr 16 14:42:06 2024 +0200

    Update for the removal of `GeneralDerivedCRS` from GeoAPI 4.0.
    This is replaced by direct usage of `DerivedCRS`.
---
 .../org/apache/sis/buildtools/book/GEOAPI.lst      |  1 -
 .../geometry/wrapper/SpatialOperationContext.java  | 10 +++----
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |  2 +-
 .../org/apache/sis/io/wkt/MathTransformParser.java |  2 +-
 .../main/org/apache/sis/io/wkt/WKTFormat.java      |  4 +--
 .../main/org/apache/sis/referencing/CRS.java       | 12 ++++----
 .../apache/sis/referencing/crs/AbstractCRS.java    |  7 ++---
 .../sis/referencing/crs/AbstractDerivedCRS.java    | 12 ++++----
 .../sis/referencing/crs/DefaultDerivedCRS.java     |  5 ++--
 .../referencing/datum/DefaultPrimeMeridian.java    |  4 +--
 .../referencing/factory/AuthorityFactoryProxy.java |  2 +-
 .../factory/MultiAuthoritiesFactory.java           |  2 +-
 .../factory/sql/CoordinateOperationSet.java        |  6 ++--
 .../referencing/factory/sql/EPSGCodeFinder.java    |  6 ++--
 .../operation/AbstractCoordinateOperation.java     | 19 ++++++------
 .../operation/CoordinateOperationFinder.java       | 34 +++++++++++-----------
 .../operation/CoordinateOperationRegistry.java     |  5 ++--
 .../referencing/operation/DefaultConversion.java   |  8 ++---
 .../operation/DefaultOperationMethod.java          |  6 ++--
 .../referencing/operation/SubOperationInfo.java    |  4 +--
 .../operation/transform/ConcatenatedTransform.java |  2 +-
 .../referencing/privy/CoordinateOperations.java    |  6 ++--
 .../sis/referencing/privy/DefinitionVerifier.java  |  8 ++---
 .../referencing/privy/ReferencingUtilities.java    |  5 ++--
 .../report/CoordinateOperationMethods.java         |  6 ++--
 .../report/CoordinateReferenceSystems.java         |  5 ++--
 .../integration/CoordinateReferenceSystemTest.java |  5 ++--
 geoapi/snapshot                                    |  2 +-
 .../src/org.apache.sis.gui/bundle/conf/imports.jsh |  1 -
 .../org/apache/sis/gui/referencing/CRSChooser.java |  7 ++---
 30 files changed, 93 insertions(+), 105 deletions(-)

diff --git 
a/buildSrc/src/main/resources/org/apache/sis/buildtools/book/GEOAPI.lst 
b/buildSrc/src/main/resources/org/apache/sis/buildtools/book/GEOAPI.lst
index dfea7437fb..ca0059bed2 100644
--- a/buildSrc/src/main/resources/org/apache/sis/buildtools/book/GEOAPI.lst
+++ b/buildSrc/src/main/resources/org/apache/sis/buildtools/book/GEOAPI.lst
@@ -79,7 +79,6 @@ FormatConsistency
 Formula
 GCP
 GCPCollection
-GeneralDerivedCRS
 GeneralParameterDescriptor
 GeneralParameterValue
 GeodeticCRS
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/SpatialOperationContext.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/SpatialOperationContext.java
index 871ce7619b..c372eff258 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/SpatialOperationContext.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/SpatialOperationContext.java
@@ -30,7 +30,7 @@ import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.opengis.referencing.crs.ProjectedCRS;
 import org.opengis.referencing.crs.GeographicCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.OperationMethod;
 import org.opengis.referencing.operation.TransformException;
@@ -319,8 +319,8 @@ select: if (commonCRS == null) {
             if (Units.isLinear(systemUnit) && targetCRS instanceof 
GeographicCRS) {
                 return Projector.instance().create((GeographicCRS) targetCRS, 
geometry.getCentroid(), geometryCRS);
             }
-            if (targetCRS instanceof GeneralDerivedCRS) {
-                targetCRS = ((GeneralDerivedCRS) targetCRS).getBaseCRS();
+            if (targetCRS instanceof DerivedCRS) {
+                targetCRS = ((DerivedCRS) targetCRS).getBaseCRS();
             } else {
                 throw new 
IncommensurableException(Errors.format(Errors.Keys.InconsistentUnitsForCS_1, 
systemUnit));
             }
@@ -381,8 +381,8 @@ select: if (commonCRS == null) {
              * Note that a CRS can be both derived and geographic, so we need 
to do this check first in order to
              * avoid derived geographic CRS such as the ones having rotated 
poles.
              */
-            while (geometryCRS instanceof GeneralDerivedCRS) {
-                final GeneralDerivedCRS g = (GeneralDerivedCRS) geometryCRS;
+            while (geometryCRS instanceof DerivedCRS) {
+                final var g = (DerivedCRS) geometryCRS;
                 centroid = 
g.getConversionFromBase().getMathTransform().inverse().transform(centroid, 
centroid);
                 geometryCRS = g.getBaseCRS();
             }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
index 9486ec792b..4fb5f64603 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/GeodeticObjectParser.java
@@ -1708,7 +1708,7 @@ class GeodeticObjectParser extends MathTransformParser 
implements Comparator<Coo
      * @param  parent     the parent element.
      * @param  dimension  the minimal number of dimensions (usually 2).
      * @param  csType     the default coordinate system type, or {@code null} 
if unknown.
-     *                    Should be non-null only when parsing a {@link 
GeneralDerivedCRS#getBaseCRS()} component.
+     *                    Should be non-null only when parsing a {@link 
DerivedCRS#getBaseCRS()} component.
      * @return the {@code "GeodeticCRS"} element as a {@link GeographicCRS} or 
{@link GeodeticCRS} object.
      * @throws ParseException if the {@code "GeodeticCRS"} element cannot be 
parsed.
      *
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/MathTransformParser.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/MathTransformParser.java
index 79815a42b8..0e2c75750f 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/MathTransformParser.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/MathTransformParser.java
@@ -528,7 +528,7 @@ class MathTransformParser extends AbstractParser {
 
     /**
      * Returns the operation method for the last math transform parsed. This 
is used by
-     * {@link GeodeticObjectParser} in order to built {@link 
org.opengis.referencing.crs.DerivedCRS}.
+     * {@link GeodeticObjectParser} in order to build {@link 
org.opengis.referencing.crs.DerivedCRS}.
      */
     final OperationMethod getOperationMethod() {
         if (lastMethod == null) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/WKTFormat.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/WKTFormat.java
index 71eeef9f3d..e3dd12768b 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/WKTFormat.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/WKTFormat.java
@@ -109,8 +109,8 @@ import org.opengis.metadata.Identifier;
  *   <li><strong>The WKT format is not lossless!</strong>
  *       Objects formatted by {@code WKTFormat} are not guaranteed to be 
identical after parsing.
  *       Some metadata may be lost or altered, but the coordinate operations 
between two CRS should produce
- *       the same numerical results provided that the two CRS were formatted 
independently (do not rely on
- *       {@link 
org.opengis.referencing.crs.GeneralDerivedCRS#getConversionFromBase()} for 
instance).</li>
+ *       the same numerical results provided that the two CRS were formatted 
independently
+ *       (not as inner element of another WKT).</li>
  *   <li>Instances of this class are not synchronized for multi-threading.
  *       It is recommended to create separated format instances for each 
thread.
  *       If multiple threads access a {@code WKTFormat} concurrently, it must 
be synchronized externally.</li>
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 cf564ec9f8..5cc2248a7b 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
@@ -38,9 +38,9 @@ import org.opengis.referencing.crs.SingleCRS;
 import org.opengis.referencing.crs.CompoundCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.crs.CRSAuthorityFactory;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.GeodeticCRS;
 import org.opengis.referencing.crs.GeographicCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
 import org.opengis.referencing.crs.ProjectedCRS;
 import org.opengis.referencing.crs.TemporalCRS;
 import org.opengis.referencing.crs.VerticalCRS;
@@ -479,7 +479,7 @@ public final class CRS extends Static {
      * Suggests a coordinate reference system which could be a common target 
for coordinate operations having the
      * given sources. This method compares the {@linkplain 
#getGeographicBoundingBox(CoordinateReferenceSystem)
      * domain of validity} of all given CRSs. If a CRS has a domain of 
validity that contains the domain of all other
-     * CRS, then that CRS is returned. Otherwise this method verifies if a 
{@linkplain GeneralDerivedCRS#getBaseCRS()
+     * CRS, then that CRS is returned. Otherwise this method verifies if a 
{@linkplain DerivedCRS#getBaseCRS()
      * base CRS} (usually a {@linkplain 
org.apache.sis.referencing.crs.DefaultGeographicCRS geographic CRS} instance)
      * would be suitable. If no suitable CRS is found, then this method 
returns {@code null}.
      *
@@ -605,8 +605,8 @@ public final class CRS extends Static {
                 for (int i=0; i < derivedCRS.length; i++) {
                     GeographicBoundingBox bbox = null;
                     final CoordinateReferenceSystem crs = sourceCRS[i];
-                    if (crs instanceof GeneralDerivedCRS) {
-                        final SingleCRS baseCRS = ((GeneralDerivedCRS) 
crs).getBaseCRS();
+                    if (crs instanceof DerivedCRS) {
+                        final SingleCRS baseCRS = ((DerivedCRS) 
crs).getBaseCRS();
                         bbox = getGeographicBoundingBox(baseCRS);
                         if (bbox == null && bestCRS == null && baseCRS 
instanceof GeodeticCRS) {
                             bestCRS = baseCRS;      // Fallback to be used if 
we don't find anything better.
@@ -1170,8 +1170,8 @@ public final class CRS extends Static {
      *
      * In case of doubt, this method conservatively returns {@code false}.
      *
-     * @todo Future SIS implementation may extend the above conditions list. 
For example, a radar station could
-     *       use a polar coordinate system in a <code>DerivedCRS</code> 
instance based on a projected CRS.
+     * @todo Future SIS implementation may extend the above conditions list. 
For example, a radar station
+     *       could use a polar coordinate system in a {@code DerivedCRS} 
instance based on a projected CRS.
      *       Conversely, a future SIS versions may impose more conditions on 
<code>EngineeringCRS</code>.
      *       See <a 
href="http://issues.apache.org/jira/browse/SIS-161";>SIS-161</a>.
      *
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
index 38c5dff592..7c684047b5 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractCRS.java
@@ -30,7 +30,7 @@ import org.opengis.referencing.cs.AffineCS;
 import org.opengis.referencing.cs.CartesianCS;
 import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.crs.SingleCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.referencing.AbstractReferenceSystem;
 import org.apache.sis.referencing.cs.AbstractCS;
@@ -473,15 +473,14 @@ public class AbstractCRS extends AbstractReferenceSystem 
implements CoordinateRe
      * {@link AbstractDerivedCRS}. In such case, the coordinate system axes 
shall not be formatted.
      *
      * <p>This method should return {@code true} when {@code this} CRS is the 
value returned by
-     * {@link GeneralDerivedCRS#getBaseCRS()} (typically {@link 
AbstractDerivedCRS#getBaseCRS()}).
+     * {@link DerivedCRS#getBaseCRS()} (typically {@link 
AbstractDerivedCRS#getBaseCRS()}).
      * Since the base CRS is the only CRS enclosed in derived CRS, we should 
have no ambiguity
      * (assuming that the user did not created some weird subclass).</p>
      *
      * <p>This method should be invoked for WKT 2 formatting only.</p>
      */
-    @SuppressWarnings("deprecation")
     static boolean isBaseCRS(final Formatter formatter) {
-        return formatter.getEnclosingElement(1) instanceof GeneralDerivedCRS;
+        return formatter.getEnclosingElement(1) instanceof DerivedCRS;
     }
 
     /**
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
index 759890f96f..e27652217b 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
@@ -25,7 +25,7 @@ import jakarta.xml.bind.annotation.XmlRootElement;
 import org.opengis.util.FactoryException;
 import org.opengis.referencing.datum.Datum;
 import org.opengis.referencing.crs.SingleCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.operation.OperationMethod;
@@ -60,7 +60,7 @@ import org.apache.sis.util.resources.Errors;
     DefaultDerivedCRS.class,
     DefaultProjectedCRS.class
 })
-abstract class AbstractDerivedCRS<C extends Conversion> extends AbstractCRS 
implements GeneralDerivedCRS {
+abstract class AbstractDerivedCRS<C extends Conversion> extends AbstractCRS 
implements DerivedCRS {
     /**
      * Serial number for inter-operability with different versions.
      */
@@ -68,7 +68,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> 
extends AbstractCRS impl
 
     /**
      * The conversion from the {@linkplain #getBaseCRS() base CRS} to this CRS.
-     * The base CRS of this {@code GeneralDerivedCRS} is {@link 
Conversion#getSourceCRS()}.
+     * The base CRS of this {@code DerivedCRS} is {@link 
Conversion#getSourceCRS()}.
      *
      * <p><b>Consider this field as final!</b>
      * This field is modified only at unmarshalling time by {@link 
#setConversionFromBase(Conversion)}</p>
@@ -147,7 +147,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> 
extends AbstractCRS impl
      *
      * @param  crs  the coordinate reference system to copy.
      */
-    AbstractDerivedCRS(final GeneralDerivedCRS crs) {
+    AbstractDerivedCRS(final DerivedCRS crs) {
         super(crs);
         conversionFromBase = createConversionFromBase(null, crs.getBaseCRS(), 
crs.getConversionFromBase());
     }
@@ -187,7 +187,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> 
extends AbstractCRS impl
      * Returns the GeoAPI interface implemented by this class.
      */
     @Override
-    public abstract Class<? extends GeneralDerivedCRS> getInterface();
+    public abstract Class<? extends DerivedCRS> getInterface();
 
     /**
      * Returns the datum of the {@linkplain #getBaseCRS() base CRS}.
@@ -241,7 +241,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> 
extends AbstractCRS impl
                 return Utilities.deepEquals(
                         strict ? conversionFromBase : getConversionFromBase(),
                         strict ? ((AbstractDerivedCRS) 
object).conversionFromBase
-                               :  ((GeneralDerivedCRS) 
object).getConversionFromBase(), mode);
+                               :  ((DerivedCRS) 
object).getConversionFromBase(), mode);
             } finally {
                 Semaphores.clear(Semaphores.CONVERSION_AND_CRS);
             }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
index 21aec9e2b5..631d67866d 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
@@ -88,9 +88,8 @@ import org.opengis.referencing.cs.ParametricCS;
  * <h2>Immutability and thread safety</h2>
  * This base class is immutable and thus thread-safe if the property 
<em>values</em> (not necessarily the map itself)
  * given to the constructor are also immutable. Most SIS subclasses and 
related classes are immutable under similar
- * conditions. This means that unless otherwise noted in the javadoc, {@code 
GeneralDerivedCRS} instances created
- * using only SIS factories and static constants can be shared by many objects 
and passed between threads without
- * synchronization.
+ * conditions. This means that unless otherwise noted in the javadoc, {@code 
DerivedCRS} instances created using only
+ * SIS factories and static constants can be shared by many objects and passed 
between threads without synchronization.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @author  Johann Sorel (Geomatys)
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
index b9ba5f0f7b..46cca6c3ed 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
@@ -26,7 +26,7 @@ import javax.measure.quantity.Angle;
 import org.opengis.util.GenericName;
 import org.opengis.util.InternationalString;
 import org.opengis.referencing.datum.PrimeMeridian;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.apache.sis.referencing.AbstractIdentifiedObject;
 import org.apache.sis.referencing.privy.Formulas;
 import org.apache.sis.referencing.privy.WKTUtilities;
@@ -327,7 +327,7 @@ public class DefaultPrimeMeridian extends 
AbstractIdentifiedObject implements Pr
      * @see org.apache.sis.referencing.crs.AbstractCRS#isBaseCRS(Formatter)
      */
     private static boolean isElementOfBaseCRS(final Formatter formatter) {
-        return formatter.getEnclosingElement(2) instanceof GeneralDerivedCRS;
+        return formatter.getEnclosingElement(2) instanceof DerivedCRS;
     }
 
     /**
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java
index 7893b80b77..6e13333fcd 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java
@@ -541,7 +541,7 @@ abstract class AuthorityFactoryProxy<T> {
      * This field can be declared only after all the above constants.
      */
     static final AuthorityFactoryProxy<?>[] PROXIES = new 
AuthorityFactoryProxy<?>[] {
-        PROJECTED_CRS,      // Special kind of GeneralDerivedCRS.
+        PROJECTED_CRS,      // Special kind of DerivedCRS.
         GEOGRAPHIC_CRS,     // Special kind of GeodeticCRS.
         GEODETIC_CRS,
         VERTICAL_CRS,
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
index 0bcfff9048..56005e8379 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
@@ -1680,7 +1680,7 @@ public class MultiAuthoritiesFactory extends 
GeodeticAuthorityFactory implements
      * @return the combined CRS, or {@code null} if the given information are 
not sufficient.
      * @throws FactoryException if an error occurred while creating the 
combined CRS.
      */
-    private static GeneralDerivedCRS combine(final CoordinateReferenceSystem 
baseCRS, final Conversion fromBase,
+    private static DerivedCRS combine(final CoordinateReferenceSystem baseCRS, 
final Conversion fromBase,
             final CoordinateSystem cs) throws FactoryException
     {
         if (baseCRS != null && fromBase.getSourceCRS() == null && 
fromBase.getTargetCRS() == null) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/CoordinateOperationSet.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/CoordinateOperationSet.java
index 63cd3c8159..f53666783b 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/CoordinateOperationSet.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/CoordinateOperationSet.java
@@ -21,7 +21,7 @@ import java.util.HashMap;
 import org.opengis.metadata.Identifier;
 import org.opengis.util.FactoryException;
 import org.opengis.referencing.AuthorityFactory;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.CRSAuthorityFactory;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.CoordinateOperation;
@@ -122,8 +122,8 @@ final class CoordinateOperationSet extends 
IdentifiedObjectSet<CoordinateOperati
              */
             CoordinateReferenceSystem crs;
             crs = ((CRSAuthorityFactory) 
factory).createCoordinateReferenceSystem(String.valueOf(base));
-            if (crs instanceof GeneralDerivedCRS) {
-                return ((GeneralDerivedCRS) crs).getConversionFromBase();
+            if (crs instanceof DerivedCRS) {
+                return ((DerivedCRS) crs).getConversionFromBase();
             }
         }
         /*
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java
index 04d74233f7..c3b1bfa3f0 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java
@@ -32,7 +32,7 @@ import org.opengis.referencing.crs.CompoundCRS;
 import org.opengis.referencing.crs.GeodeticCRS;
 import org.opengis.referencing.crs.TemporalCRS;
 import org.opengis.referencing.crs.VerticalCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.datum.Datum;
 import org.opengis.referencing.datum.Ellipsoid;
@@ -317,8 +317,8 @@ crs:    if (isInstance(CoordinateReferenceSystem.class, 
object)) {
              *     ORDER BY COORD_REF_SYS_CODE
              */
             final Condition filter;
-            if (object instanceof GeneralDerivedCRS) {              // No need 
to use isInstance(Class, Object) from here.
-                filter = dependencies("SOURCE_GEOGCRS_CODE", SingleCRS.class, 
((GeneralDerivedCRS) object).getBaseCRS(), true);
+            if (object instanceof DerivedCRS) {              // No need to use 
isInstance(Class, Object) from here.
+                filter = dependencies("SOURCE_GEOGCRS_CODE", SingleCRS.class, 
((DerivedCRS) object).getBaseCRS(), true);
             } else if (object instanceof GeodeticCRS) {
                 filter = dependencies("DATUM_CODE", GeodeticDatum.class, 
((GeodeticCRS) object).getDatum(), true);
             } else if (object instanceof VerticalCRS) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
index b75d81ee06..75910575f1 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
@@ -34,8 +34,8 @@ import org.opengis.util.InternationalString;
 import org.opengis.metadata.Identifier;
 import org.opengis.metadata.quality.PositionalAccuracy;
 import org.opengis.referencing.IdentifiedObject;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.GeographicCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.ConcatenatedOperation;
 import org.opengis.referencing.operation.CoordinateOperation;
@@ -485,25 +485,24 @@ check:      for (int isTarget=0; ; isTarget++) {        
// 0 == source check; 1
      * But SIS supports also defining conversions with non-null CRS provided 
that:
      *
      * <ul>
-     *   <li>{@link GeneralDerivedCRS#getBaseCRS()} is the {@linkplain 
#getSourceCRS() source CRS} of this operation, and</li>
-     *   <li>{@link GeneralDerivedCRS#getConversionFromBase()} is this 
operation instance.</li>
+     *   <li>{@link DerivedCRS#getBaseCRS()} is the {@linkplain 
#getSourceCRS() source CRS} of this operation, and</li>
+     *   <li>{@link DerivedCRS#getConversionFromBase()} is this operation 
instance.</li>
      * </ul>
      *
      * When this method returns {@code true}, the source and target CRS are 
not marshalled in XML documents.
      *
      * @return {@code true} if this coordinate operation is for the definition 
of a derived or projected CRS.
      */
-    @SuppressWarnings("deprecation")
     public boolean isDefiningConversion() {
         /*
          * Trick: we do not need to verify if (this instanceof Conversion) 
because:
          *   - Only DefaultConversion constructor accepts null source and 
target CRS.
-         *   - GeneralDerivedCRS.getConversionFromBase() return type is 
Conversion.
+         *   - DerivedCRS.getConversionFromBase() return type is Conversion.
          */
         return (sourceCRS == null && targetCRS == null)
-               || ((targetCRS instanceof GeneralDerivedCRS)
-                    && ((GeneralDerivedCRS) targetCRS).getBaseCRS() == 
sourceCRS
-                    && ((GeneralDerivedCRS) targetCRS).getConversionFromBase() 
== this);
+               || ((targetCRS instanceof DerivedCRS)
+                    && ((DerivedCRS) targetCRS).getBaseCRS() == sourceCRS
+                    && ((DerivedCRS) targetCRS).getConversionFromBase() == 
this);
     }
 
     /**
@@ -768,8 +767,8 @@ check:      for (int isTarget=0; ; isTarget++) {        // 
0 == source check; 1
      * corresponding wraparound axis in the source CRS because the 
<em>easting</em> axis in projected CRS does not
      * have a wraparound range meaning. We could argue that
      * {@linkplain 
org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis#getDirection() axis 
directions} match,
-     * but such matching is not guaranteed to exist since {@code ProjectedCRS} 
is a special case of
-     * {@code GeneralDerivedCRS} and derived CRS can have rotations.
+     * but such matching is not guaranteed to exist since {@code ProjectedCRS} 
is a special case of {@code DerivedCRS}
+     * and derived CRS can have rotations.
      *
      * <h4>Default implementation</h4>
      * The default implementation infers this set by inspecting the source and 
target coordinate system axes.
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
index 985ad9e777..4321c63a26 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
@@ -276,10 +276,10 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
         ////                       Derived  →  any Single CRS                  
     ////
         ////                                                                   
     ////
         
////////////////////////////////////////////////////////////////////////////////
-        if (sourceCRS instanceof GeneralDerivedCRS) {
-            final GeneralDerivedCRS source = (GeneralDerivedCRS) sourceCRS;
-            if (targetCRS instanceof GeneralDerivedCRS) {
-                return createOperationStep(source, (GeneralDerivedCRS) 
targetCRS);
+        if (sourceCRS instanceof DerivedCRS) {
+            final var source = (DerivedCRS) sourceCRS;
+            if (targetCRS instanceof DerivedCRS) {
+                return createOperationStep(source, (DerivedCRS) targetCRS);
             }
             if (targetCRS instanceof SingleCRS) {
                 return createOperationStep(source, (SingleCRS) targetCRS);
@@ -290,8 +290,8 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
         ////                       any Single CRS  →  Derived                  
     ////
         ////                                                                   
     ////
         
////////////////////////////////////////////////////////////////////////////////
-        if (targetCRS instanceof GeneralDerivedCRS) {
-            final GeneralDerivedCRS target = (GeneralDerivedCRS) targetCRS;
+        if (targetCRS instanceof DerivedCRS) {
+            final var target = (DerivedCRS) targetCRS;
             if (sourceCRS instanceof SingleCRS) {
                 return createOperationStep((SingleCRS) sourceCRS, target);
             }
@@ -367,13 +367,13 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
     /**
      * Creates operations from an arbitrary single CRS to a derived coordinate 
reference system.
      * Conversions from {@code GeographicCRS} to {@code ProjectedCRS} are also 
handled by this method,
-     * since projected CRS are a special kind of {@code GeneralDerivedCRS}.
+     * since projected CRS are a special kind of {@code DerivedCRS}.
      *
      * <p>The default implementation constructs the following operation 
chain:</p>
-     * <blockquote><code>sourceCRS  →  {@linkplain 
GeneralDerivedCRS#getBaseCRS() baseCRS}  →  targetCRS</code></blockquote>
+     * <blockquote><code>sourceCRS  →  {@linkplain DerivedCRS#getBaseCRS() 
baseCRS}  →  targetCRS</code></blockquote>
      *
      * where the conversion from {@code baseCRS} to {@code targetCRS} is 
obtained from
-     * <code>targetCRS.{@linkplain GeneralDerivedCRS#getConversionFromBase() 
getConversionFromBase()}</code>.
+     * <code>targetCRS.{@linkplain DerivedCRS#getConversionFromBase() 
getConversionFromBase()}</code>.
      *
      * <p>This method returns only <em>one</em> step for a chain of 
concatenated operations (to be built by the caller).
      * But a list is returned because the same step may be implemented by 
different operation methods. Only one element
@@ -385,7 +385,7 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
      * @throws FactoryException if the operation cannot be constructed.
      */
     protected List<CoordinateOperation> createOperationStep(final SingleCRS 
sourceCRS,
-                                                            final 
GeneralDerivedCRS targetCRS)
+                                                            final DerivedCRS 
targetCRS)
             throws FactoryException
     {
         final List<CoordinateOperation> operations = 
createOperations(sourceCRS, targetCRS.getBaseCRS());
@@ -403,13 +403,13 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
     /**
      * Creates an operation from a derived CRS to an arbitrary single 
coordinate reference system.
      * Conversions from {@code ProjectedCRS} to {@code GeographicCRS} are also 
handled by this method,
-     * since projected CRS are a special kind of {@code GeneralDerivedCRS}.
+     * since projected CRS are a special kind of {@code DerivedCRS}.
      *
      * <p>The default implementation constructs the following operation 
chain:</p>
-     * <blockquote><code>sourceCRS  →  {@linkplain 
GeneralDerivedCRS#getBaseCRS() baseCRS}  →  targetCRS</code></blockquote>
+     * <blockquote><code>sourceCRS  →  {@linkplain DerivedCRS#getBaseCRS() 
baseCRS}  →  targetCRS</code></blockquote>
      *
      * where the conversion from {@code sourceCRS} to {@code baseCRS} is 
obtained from the inverse of
-     * <code>sourceCRS.{@linkplain GeneralDerivedCRS#getConversionFromBase() 
getConversionFromBase()}</code>.
+     * <code>sourceCRS.{@linkplain DerivedCRS#getConversionFromBase() 
getConversionFromBase()}</code>.
      *
      * <p>This method returns only <em>one</em> step for a chain of 
concatenated operations (to be built by the caller).
      * But a list is returned because the same step may be implemented by 
different operation methods. Only one element
@@ -420,7 +420,7 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
      * @return a coordinate operation from {@code sourceCRS} to {@code 
targetCRS}.
      * @throws FactoryException if the operation cannot be constructed.
      */
-    protected List<CoordinateOperation> createOperationStep(final 
GeneralDerivedCRS sourceCRS,
+    protected List<CoordinateOperation> createOperationStep(final DerivedCRS 
sourceCRS,
                                                             final SingleCRS 
targetCRS)
             throws FactoryException
     {
@@ -462,8 +462,8 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
      * @return a coordinate operation from {@code sourceCRS} to {@code 
targetCRS}.
      * @throws FactoryException if the operation cannot be constructed.
      */
-    protected List<CoordinateOperation> createOperationStep(final 
GeneralDerivedCRS sourceCRS,
-                                                            final 
GeneralDerivedCRS targetCRS)
+    protected List<CoordinateOperation> createOperationStep(final DerivedCRS 
sourceCRS,
+                                                            final DerivedCRS 
targetCRS)
             throws FactoryException
     {
         final List<CoordinateOperation> operations = 
createOperations(sourceCRS.getBaseCRS(), targetCRS.getBaseCRS());
@@ -1267,7 +1267,7 @@ public class CoordinateOperationFinder extends 
CoordinateOperationRegistry {
      * @param  crs  the CRS having a conversion that cannot be inverted.
      * @return a default error message.
      */
-    private String canNotInvert(final GeneralDerivedCRS crs) {
+    private String canNotInvert(final DerivedCRS crs) {
         return resources().getString(Resources.Keys.NonInvertibleOperation_1, 
label(crs.getConversionFromBase()));
     }
 }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
index e9f1cc3288..def3586a9b 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
@@ -41,7 +41,7 @@ import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.referencing.IdentifiedObject;
 import org.opengis.referencing.NoSuchAuthorityCodeException;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.GeodeticCRS;
 import org.opengis.referencing.crs.SingleCRS;
 import org.opengis.referencing.crs.CompoundCRS;
@@ -424,9 +424,8 @@ class CoordinateOperationRegistry {
      * axis order, we want to check also the coordinate operations using 
(latitude, longitude) axis order
      * because they may be the only ones available.</p>
      */
-    @SuppressWarnings("deprecation")
     private static boolean isEasySearch(final CoordinateReferenceSystem crs) {
-        if (crs instanceof GeneralDerivedCRS) {
+        if (crs instanceof DerivedCRS) {
             return false;
         }
         if (crs instanceof CompoundCRS) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
index 0c5331ca99..6ec4bc2908 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultConversion.java
@@ -28,7 +28,7 @@ import org.opengis.referencing.operation.MathTransform;
 import org.opengis.referencing.operation.MathTransformFactory;
 import org.opengis.referencing.operation.Matrix;
 import org.opengis.referencing.crs.SingleCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.datum.Datum;
 import org.apache.sis.referencing.cs.CoordinateSystems;
@@ -223,7 +223,6 @@ public class DefaultConversion extends 
AbstractSingleOperation implements Conver
      * @param factory     the factory to use for creating a transform from the 
parameters or for performing axis changes.
      * @param actual      an array of length 1 where to store the actual 
operation method used by the math transform factory.
      */
-    @SuppressWarnings("deprecation")
     DefaultConversion(final Conversion definition,
                       final CoordinateReferenceSystem source,
                       final CoordinateReferenceSystem target,
@@ -250,7 +249,7 @@ public class DefaultConversion extends 
AbstractSingleOperation implements Conver
                  * method in invoked, and attempts to use it can cause 
NullPointerException.
                  */
                 final DefaultMathTransformFactory.Context context;
-                if (target instanceof GeneralDerivedCRS) {
+                if (target instanceof DerivedCRS) {
                     context = 
ReferencingUtilities.createTransformContext(source, null);
                     context.setTarget(target.getCoordinateSystem());    // 
Using `target` would be unsafe here.
                 } else {
@@ -394,7 +393,6 @@ public class DefaultConversion extends 
AbstractSingleOperation implements Conver
      *
      * @see 
DefaultMathTransformFactory#createParameterizedTransform(ParameterValueGroup, 
DefaultMathTransformFactory.Context)
      */
-    @SuppressWarnings("deprecation")
     public <T extends Conversion> T specialize(final Class<T> baseType,
             final CoordinateReferenceSystem sourceCRS, final 
CoordinateReferenceSystem targetCRS,
             MathTransformFactory factory) throws FactoryException
@@ -408,7 +406,7 @@ public class DefaultConversion extends 
AbstractSingleOperation implements Conver
          * a dedicated kind of operations, namely Transformation.
          */
         ensureCompatibleDatum("sourceCRS", super.getSourceCRS(), sourceCRS);
-        if (!(targetCRS instanceof GeneralDerivedCRS)) {
+        if (!(targetCRS instanceof DerivedCRS)) {
             ensureCompatibleDatum("targetCRS", super.getTargetCRS(), 
targetCRS);
         } else {
             /*
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
index 72722234ce..f8f1f15bf3 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
@@ -33,7 +33,7 @@ import org.opengis.referencing.operation.Projection;
 import org.opengis.referencing.operation.MathTransform;
 import org.opengis.referencing.operation.OperationMethod;
 import org.opengis.referencing.operation.SingleOperation;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.parameter.GeneralParameterDescriptor;
 import org.opengis.parameter.ParameterDescriptorGroup;
 import org.opengis.parameter.ParameterDescriptor;
@@ -502,8 +502,8 @@ public class DefaultOperationMethod extends 
AbstractIdentifiedObject implements
              * CRS is either the immediate parent in WKT 1, or the parent of 
the parent in WKT 2.
              */
             final FormattableObject parent = 
formatter.getEnclosingElement(isWKT1 ? 1 : 2);
-            if (parent instanceof GeneralDerivedCRS) {
-                final Conversion conversion = ((GeneralDerivedCRS) 
parent).getConversionFromBase();
+            if (parent instanceof DerivedCRS) {
+                final Conversion conversion = ((DerivedCRS) 
parent).getConversionFromBase();
                 if (conversion != null) {   // Should never be null, but let 
be safe.
                     final ParameterDescriptorGroup descriptor;
                     if (conversion instanceof Parameterized) {  // Usual case 
in SIS implementation.
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
index 2c0e08999d..25e09effde 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/SubOperationInfo.java
@@ -68,8 +68,8 @@ final class SubOperationInfo {
      * The returned type is for use with {@link #COMPATIBLE_TYPES}.
      */
     private static Class<?> type(SingleCRS crs) {
-        while (crs instanceof GeneralDerivedCRS) {
-            crs = ((GeneralDerivedCRS) crs).getBaseCRS();
+        while (crs instanceof DerivedCRS) {
+            crs = ((DerivedCRS) crs).getBaseCRS();
         }
         return crs.getClass();
     }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
index fbfe79856c..259f16a79b 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
@@ -493,7 +493,7 @@ class ConcatenatedTransform extends AbstractMathTransform 
implements Serializabl
      * (often indirectly trough WKT formatting of a {@code "ProjectedCRS"} 
element), then the above rule is slightly
      * relaxed: we ignore affine transforms in order to accept axis swapping 
or unit conversions. We do that in that
      * particular case only because the coordinate systems given with the 
enclosing {@code CoordinateOperation} or
-     * {@code GeneralDerivedCRS} specify the axis swapping and unit 
conversions.
+     * {@code DerivedCRS} specify the axis swapping and unit conversions.
      * This special case is internal to SIS implementation and should be 
unknown to users.</p>
      *
      * @return the parameterizable transform step, or {@code null} if none.
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/CoordinateOperations.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/CoordinateOperations.java
index 1fe647df12..54f7a3bd52 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/CoordinateOperations.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/CoordinateOperations.java
@@ -29,7 +29,7 @@ import org.opengis.referencing.cs.CoordinateSystem;
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.opengis.referencing.crs.CRSFactory;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.operation.OperationMethod;
 import org.opengis.referencing.operation.SingleOperation;
 import org.opengis.referencing.operation.CoordinateOperation;
@@ -254,8 +254,8 @@ public final class CoordinateOperations extends Static {
      */
     public static Set<Integer> wrapAroundChanges(CoordinateReferenceSystem 
source, final CoordinateSystem target) {
         long changes = changes(source.getCoordinateSystem(), target);
-        while (source instanceof GeneralDerivedCRS) {
-            source = ((GeneralDerivedCRS) source).getBaseCRS();
+        while (source instanceof DerivedCRS) {
+            source = ((DerivedCRS) source).getBaseCRS();
             changes |= changes(source.getCoordinateSystem(), target);
         }
         final boolean useCache = (changes >= 0 && changes < CACHE.length);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/DefinitionVerifier.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/DefinitionVerifier.java
index 89a06ea9a7..ca7e25b306 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/DefinitionVerifier.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/DefinitionVerifier.java
@@ -28,7 +28,7 @@ import org.opengis.referencing.datum.Datum;
 import org.opengis.referencing.datum.GeodeticDatum;
 import org.opengis.referencing.crs.CRSAuthorityFactory;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.SingleCRS;
 import org.opengis.referencing.operation.Conversion;
 import org.apache.sis.referencing.CRS;
@@ -312,9 +312,9 @@ public final class DefinitionVerifier {
             final SingleCRS crsA = authoritative.next();
             final SingleCRS crsG = given.next();
             if (!Utilities.equalsApproximately(crsA, crsG)) {
-                if (crsA instanceof GeneralDerivedCRS && crsG instanceof 
GeneralDerivedCRS) {
-                    final Conversion cnvA = ((GeneralDerivedCRS) 
crsA).getConversionFromBase();
-                    final Conversion cnvG = ((GeneralDerivedCRS) 
crsG).getConversionFromBase();
+                if (crsA instanceof DerivedCRS && crsG instanceof DerivedCRS) {
+                    final Conversion cnvA = ((DerivedCRS) 
crsA).getConversionFromBase();
+                    final Conversion cnvG = ((DerivedCRS) 
crsG).getConversionFromBase();
                     if (!Utilities.equalsApproximately(cnvA, cnvG)) {
                         return Utilities.equalsApproximately(cnvA.getMethod(), 
cnvG.getMethod()) ? CONVERSION : METHOD;
                     }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
index b8f0346daf..9f2fdeab8e 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/ReferencingUtilities.java
@@ -310,15 +310,14 @@ public final class ReferencingUtilities extends Static {
      * @param  allow3D  whether this method is allowed to return 
three-dimensional CRS (with ellipsoidal height).
      * @return a two-dimensional geographic CRS with standard axes, or {@code 
null} if none.
      */
-    @SuppressWarnings("deprecation")
     public static GeographicCRS 
toNormalizedGeographicCRS(CoordinateReferenceSystem crs, final boolean latlon, 
final boolean allow3D) {
         /*
          * ProjectedCRS instances always have a GeographicCRS as their base.
          * More generally, derived CRS are always derived from a base, which
          * is often (but not necessarily) geographic.
          */
-        while (crs instanceof GeneralDerivedCRS) {
-            crs = ((GeneralDerivedCRS) crs).getBaseCRS();
+        while (crs instanceof DerivedCRS) {
+            crs = ((DerivedCRS) crs).getBaseCRS();
         }
         if (crs instanceof GeodeticCRS) {
             /*
diff --git 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
index b0bc91ba11..5bea3d2068 100644
--- 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
+++ 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateOperationMethods.java
@@ -31,7 +31,7 @@ import org.opengis.parameter.*;
 import org.opengis.referencing.operation.*;
 import org.opengis.referencing.crs.CRSAuthorityFactory;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.Characters;
 import org.apache.sis.util.Numbers;
@@ -418,14 +418,14 @@ public class CoordinateOperationMethods extends 
HTMLGenerator {
             final CRSAuthorityFactory factory) throws FactoryException
     {
         final Map<String, DefaultGeographicBoundingBox> domainOfValidity = new 
HashMap<>();
-        for (final String code : 
factory.getAuthorityCodes(GeneralDerivedCRS.class)) {
+        for (final String code : factory.getAuthorityCodes(DerivedCRS.class)) {
             final CoordinateReferenceSystem crs;
             try {
                 crs = factory.createCoordinateReferenceSystem(code);
             } catch (FactoryException e) {
                 continue;                                                   // 
Ignore and inspect the next element.
             }
-            if (crs instanceof GeneralDerivedCRS derived) {
+            if (crs instanceof DerivedCRS derived) {
                 final GeographicBoundingBox candidate = 
CRS.getGeographicBoundingBox(derived);
                 if (candidate != null) {
                     final String name = 
derived.getConversionFromBase().getMethod().getName().getCode();
diff --git 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
index 19f1056342..8849db42cc 100644
--- 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
+++ 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/report/CoordinateReferenceSystems.java
@@ -37,7 +37,7 @@ import org.opengis.referencing.crs.VerticalCRS;
 import org.opengis.referencing.crs.GeodeticCRS;
 import org.opengis.referencing.crs.GeographicCRS;
 import org.opengis.referencing.crs.EngineeringCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.crs.CRSAuthorityFactory;
 import org.opengis.referencing.datum.Datum;
@@ -408,12 +408,11 @@ public final class CoordinateReferenceSystems extends 
AuthorityCodesReport {
     /**
      * Creates the text to show in the "Remarks" column for the given CRS.
      */
-    @SuppressWarnings("deprecation")
     private String getRemark(final CoordinateReferenceSystem crs) {
         if (crs instanceof GeographicCRS) {
             return (crs.getCoordinateSystem().getDimension() == 3) ? 
"Geographic 3D" : "Geographic";
         }
-        if (crs instanceof GeneralDerivedCRS derived) {
+        if (crs instanceof DerivedCRS derived) {
             final OperationMethod method = 
derived.getConversionFromBase().getMethod();
             final Identifier identifier = 
IdentifiedObjects.getIdentifier(method, Citations.EPSG);
             if (identifier != null) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/test/integration/CoordinateReferenceSystemTest.java
 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/test/integration/CoordinateReferenceSystemTest.java
index d74ea2bf71..8ef6919d9e 100644
--- 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/test/integration/CoordinateReferenceSystemTest.java
+++ 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/test/integration/CoordinateReferenceSystemTest.java
@@ -21,7 +21,6 @@ import org.opengis.referencing.cs.CartesianCS;
 import org.opengis.referencing.cs.EllipsoidalCS;
 import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.GeodeticCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.referencing.CRS;
 
@@ -69,7 +68,7 @@ public final class CoordinateReferenceSystemTest extends 
TestCase {
         assertInstanceOf(DerivedCRS .class, crs);
         assertInstanceOf(GeodeticCRS.class, crs);
         assertInstanceOf(CartesianCS.class, crs.getCoordinateSystem());
-        assertInstanceOf(CartesianCS.class, ((GeneralDerivedCRS) 
crs).getBaseCRS().getCoordinateSystem());
+        assertInstanceOf(CartesianCS.class, ((DerivedCRS) 
crs).getBaseCRS().getCoordinateSystem());
         /*
          * Some tests are disabled because `EPSGDataAccess` confuse this 
derived CRS
          * with a projected CRS. We are waiting for upgrade to EPSG database 
10+
@@ -81,6 +80,6 @@ public final class CoordinateReferenceSystemTest extends 
TestCase {
 //      assertInstanceOf(DerivedCRS .class, crs);
 //      assertInstanceOf(GeodeticCRS.class, crs);
         assertInstanceOf(CartesianCS.class, crs.getCoordinateSystem());
-        assertInstanceOf(EllipsoidalCS.class, ((GeneralDerivedCRS) 
crs).getBaseCRS().getCoordinateSystem());
+        assertInstanceOf(EllipsoidalCS.class, ((DerivedCRS) 
crs).getBaseCRS().getCoordinateSystem());
     }
 }
diff --git a/geoapi/snapshot b/geoapi/snapshot
index 62db019354..ada952e12e 160000
--- a/geoapi/snapshot
+++ b/geoapi/snapshot
@@ -1 +1 @@
-Subproject commit 62db019354dc62d805b877c4b37227ed68ed0a7c
+Subproject commit ada952e12e675417e67d13b1a404b62a49b23546
diff --git a/optional/src/org.apache.sis.gui/bundle/conf/imports.jsh 
b/optional/src/org.apache.sis.gui/bundle/conf/imports.jsh
index c3ad133108..fd9764ff96 100644
--- a/optional/src/org.apache.sis.gui/bundle/conf/imports.jsh
+++ b/optional/src/org.apache.sis.gui/bundle/conf/imports.jsh
@@ -203,7 +203,6 @@ import 
org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.GeodeticCRS;
 import org.opengis.referencing.crs.EngineeringCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
 import org.opengis.referencing.crs.GeographicCRS;
 import org.opengis.referencing.crs.ProjectedCRS;
 import org.opengis.referencing.crs.SingleCRS;
diff --git 
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
 
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
index 1630a4efd2..00886d4597 100644
--- 
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
+++ 
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/referencing/CRSChooser.java
@@ -52,7 +52,7 @@ import org.opengis.referencing.crs.VerticalCRS;
 import org.opengis.referencing.crs.TemporalCRS;
 import org.opengis.referencing.crs.CompoundCRS;
 import org.opengis.referencing.crs.EngineeringCRS;
-import org.opengis.referencing.crs.GeneralDerivedCRS;
+import org.opengis.referencing.crs.DerivedCRS;
 import org.opengis.referencing.crs.CRSAuthorityFactory;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.Conversion;
@@ -368,7 +368,6 @@ public class CRSChooser extends 
Dialog<CoordinateReferenceSystem> {
     /**
      * Returns the text to show of right of the "type" label.
      */
-    @SuppressWarnings("deprecation")
     private static String typeOf(CoordinateReferenceSystem crs, final Locale 
locale) {
         while (crs instanceof CompoundCRS) {
             crs = ((CompoundCRS) crs).getComponents().get(0);
@@ -388,14 +387,14 @@ public class CRSChooser extends 
Dialog<CoordinateReferenceSystem> {
         String text = Vocabulary.forLocale(locale).getString(key);
         final int     dimension = ReferencingUtilities.getDimension(crs);
         final boolean addDimension = (dimension != expected && expected != 0);
-        final boolean isProjection = (crs instanceof GeneralDerivedCRS);
+        final boolean isProjection = (crs instanceof DerivedCRS);
         if (addDimension | isProjection) {
             final StringBuilder buffer = new StringBuilder(text);
             if (addDimension) {
                 buffer.append(" (").append(dimension).append("D)");
             }
             if (isProjection) {
-                final Conversion conversion = ((GeneralDerivedCRS) 
crs).getConversionFromBase();
+                final Conversion conversion = ((DerivedCRS) 
crs).getConversionFromBase();
                 if (conversion != null) {
                     final OperationMethod method = conversion.getMethod();
                     if (method != null) {

Reply via email to