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 9b456eb62acb3b2db412dad67631b0e59d70b9c3
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Thu Oct 30 10:57:30 2025 +0100

    Reorganize internal packages of filters.
---
 .../META-INF/services/org.apache.sis.filter.FunctionRegister  |  2 +-
 endorsed/src/org.apache.sis.feature/main/module-info.java     | 11 ++++++++---
 .../main/org/apache/sis/feature/ExpressionOperation.java      |  4 ++--
 .../main/org/apache/sis/feature/FeatureOperations.java        |  2 +-
 .../apache/sis/feature/internal/shared/FeatureExpression.java |  4 ++--
 .../apache/sis/feature/internal/shared/FeatureProjection.java |  2 +-
 .../main/org/apache/sis/filter/ArithmeticFunction.java        |  4 ++--
 .../main/org/apache/sis/filter/BinaryGeometryFilter.java      |  2 +-
 .../main/org/apache/sis/filter/ComparisonFilter.java          |  4 ++--
 .../main/org/apache/sis/filter/DefaultFilterFactory.java      |  2 +-
 .../main/org/apache/sis/filter/IdentifierFilter.java          |  2 +-
 .../main/org/apache/sis/filter/LeafExpression.java            |  2 +-
 .../main/org/apache/sis/filter/LikeFilter.java                |  2 +-
 .../main/org/apache/sis/filter/LogicalFilter.java             |  2 +-
 .../main/org/apache/sis/filter/Optimization.java              |  2 +-
 .../main/org/apache/sis/filter/PropertyValue.java             |  2 +-
 .../main/org/apache/sis/filter/TemporalFilter.java            |  2 +-
 .../apache/sis/filter/{function => base}/BinaryFunction.java  |  2 +-
 .../apache/sis/filter/{function => base}/ConvertFunction.java |  2 +-
 .../sis/filter/{function => base}/GeometryConverter.java      |  2 +-
 .../sis/filter/{function => base}/GeometryFromFeature.java    |  3 +--
 .../main/org/apache/sis/filter/{function => base}/Node.java   |  3 +--
 .../apache/sis/filter/{function => base}/UnaryFunction.java   |  2 +-
 .../sis/filter/{internal/shared => base}/WarningEvent.java    |  3 +--
 .../apache/sis/filter/{internal/shared => base}/XPath.java    |  2 +-
 .../apache/sis/filter/{function => base}/package-info.java    |  7 ++++++-
 .../apache/sis/filter/{function => }/math/BinaryOperator.java |  4 ++--
 .../org/apache/sis/filter/{function => }/math/Function.java   |  4 ++--
 .../org/apache/sis/filter/{function => }/math/Registry.java   |  2 +-
 .../apache/sis/filter/{function => }/math/UnaryOperator.java  |  4 ++--
 .../apache/sis/filter/{function => }/math/package-info.java   |  2 +-
 .../main/org/apache/sis/filter/sqlmm/SpatialFunction.java     |  2 +-
 .../sis/filter/{internal/shared => visitor}/CopyVisitor.java  |  2 +-
 .../sis/filter/{internal/shared => visitor}/EditVisitor.java  |  2 +-
 .../filter/{internal/shared => visitor}/FunctionNames.java    |  2 +-
 .../{internal/shared => visitor}/ListingPropertyVisitor.java  |  2 +-
 .../sis/filter/{internal/shared => visitor}/Visitor.java      |  2 +-
 .../sis/filter/{internal/shared => visitor}/package-info.java |  2 +-
 .../test/org/apache/sis/filter/ComparisonFilterTest.java      |  2 +-
 .../test/org/apache/sis/filter/IdentifierFilterTest.java      |  2 +-
 .../test/org/apache/sis/filter/XPathTest.java                 |  2 +-
 .../apache/sis/filter/{function => }/math/RegistryTest.java   |  2 +-
 .../test/org/apache/sis/filter/sqlmm/RegistryTestCase.java    |  2 +-
 .../filter/{internal/shared => visitor}/CopyVisitorTest.java  |  2 +-
 .../{internal/shared => visitor}/FilterFactoryMock.java       |  2 +-
 .../sis/filter/{internal/shared => visitor}/FunctionMock.java |  2 +-
 .../{internal/shared => visitor}/FunctionNamesTest.java       |  2 +-
 .../{internal/shared => visitor}/ValueReferenceMock.java      |  2 +-
 .../main/org/apache/sis/storage/sql/feature/Database.java     |  2 +-
 .../org/apache/sis/storage/sql/feature/FeatureStream.java     |  2 +-
 .../apache/sis/storage/sql/feature/SelectionClauseWriter.java |  4 ++--
 .../main/org/apache/sis/storage/sql/feature/Table.java        |  2 +-
 .../main/org/apache/sis/util/stream/StreamWrapper.java        |  2 +-
 .../main/org/apache/sis/storage/AbstractFeatureSet.java       |  2 +-
 .../main/org/apache/sis/storage/FeatureQuery.java             |  4 ++--
 .../main/org/apache/sis/storage/base}/SortByComparator.java   |  2 +-
 .../main/org/apache/sis/storage/base/WarningAdapter.java      |  2 +-
 .../main/org/apache/sis/cql/FilterToCQLVisitor.java           |  4 ++--
 .../main/org/apache/sis/map/SEPortrayer.java                  |  2 +-
 .../test/org/apache/sis/map/SEPortrayerTest.java              |  2 +-
 .../main/org/apache/sis/storage/shapefile/ShapefileStore.java |  6 +++---
 61 files changed, 85 insertions(+), 78 deletions(-)

diff --git 
a/endorsed/src/org.apache.sis.feature/main/META-INF/services/org.apache.sis.filter.FunctionRegister
 
b/endorsed/src/org.apache.sis.feature/main/META-INF/services/org.apache.sis.filter.FunctionRegister
index 5a09fc780c..d1ba916128 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/META-INF/services/org.apache.sis.filter.FunctionRegister
+++ 
b/endorsed/src/org.apache.sis.feature/main/META-INF/services/org.apache.sis.filter.FunctionRegister
@@ -1,3 +1,3 @@
 # Workaround for Maven bug https://issues.apache.org/jira/browse/MNG-7855
 # Should be used only if the JAR file was on class-path rather than 
module-path.
-org.apache.sis.filter.function.math.Registry
+org.apache.sis.filter.math.Registry
diff --git a/endorsed/src/org.apache.sis.feature/main/module-info.java 
b/endorsed/src/org.apache.sis.feature/main/module-info.java
index 732957e8d4..4e4f4273b6 100644
--- a/endorsed/src/org.apache.sis.feature/main/module-info.java
+++ b/endorsed/src/org.apache.sis.feature/main/module-info.java
@@ -34,7 +34,7 @@ module org.apache.sis.feature {
     uses org.apache.sis.filter.FunctionRegister;
 
     provides org.apache.sis.filter.FunctionRegister
-        with org.apache.sis.filter.function.math.Registry;
+        with org.apache.sis.filter.math.Registry;
 
     exports org.apache.sis.image;
     exports org.apache.sis.coverage;
@@ -44,13 +44,18 @@ module org.apache.sis.feature {
     exports org.apache.sis.filter;
     exports org.apache.sis.index.tree;
 
-    exports org.apache.sis.filter.internal.shared to
+    exports org.apache.sis.filter.base to
             org.apache.sis.storage,
             org.apache.sis.storage.sql,
             org.apache.sis.storage.shapefile,       // In the "incubator" 
sub-project.
-            org.apache.sis.cql,                     // In the "incubator" 
sub-project.
             org.apache.sis.portrayal.map;           // In the "incubator" 
sub-project.
 
+    exports org.apache.sis.filter.visitor to
+            org.apache.sis.storage,
+            org.apache.sis.storage.sql,
+            org.apache.sis.storage.shapefile,       // In the "incubator" 
sub-project.
+            org.apache.sis.cql;                     // In the "incubator" 
sub-project.
+
     exports org.apache.sis.filter.sqlmm to
             org.apache.sis.geometry;                // In the "incubator" 
sub-project.
 
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/ExpressionOperation.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/ExpressionOperation.java
index cb855771e2..c7f10889d8 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/ExpressionOperation.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/ExpressionOperation.java
@@ -23,8 +23,8 @@ import java.util.Collection;
 import java.util.function.Function;
 import org.opengis.parameter.ParameterValueGroup;
 import org.opengis.parameter.ParameterDescriptorGroup;
-import org.apache.sis.filter.internal.shared.FunctionNames;
-import org.apache.sis.filter.internal.shared.Visitor;
+import org.apache.sis.filter.visitor.FunctionNames;
+import org.apache.sis.filter.visitor.Visitor;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.util.CodeList;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/FeatureOperations.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/FeatureOperations.java
index 6ee03b6926..9890426a4e 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/FeatureOperations.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/FeatureOperations.java
@@ -27,7 +27,7 @@ import org.apache.sis.util.collection.WeakHashSet;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.internal.shared.Strings;
 import org.apache.sis.filter.DefaultFilterFactory;
-import org.apache.sis.filter.internal.shared.XPath;
+import org.apache.sis.filter.base.XPath;
 import org.apache.sis.setup.GeometryLibrary;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureExpression.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureExpression.java
index c88f946989..3c22801b7f 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureExpression.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureExpression.java
@@ -21,8 +21,8 @@ import org.apache.sis.math.FunctionProperty;
 import org.apache.sis.util.UnconvertibleObjectException;
 import org.apache.sis.filter.Optimization;
 import org.apache.sis.filter.DefaultFilterFactory;
-import org.apache.sis.filter.function.ConvertFunction;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.ConvertFunction;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.util.resources.Errors;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureProjection.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureProjection.java
index 9807ccfbd0..fb0e0c6b4c 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureProjection.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/feature/internal/shared/FeatureProjection.java
@@ -26,7 +26,7 @@ import org.apache.sis.util.Debug;
 import org.apache.sis.util.ArraysExt;
 import org.apache.sis.util.resources.Vocabulary;
 import org.apache.sis.util.internal.shared.UnmodifiableArrayList;
-import org.apache.sis.filter.internal.shared.ListingPropertyVisitor;
+import org.apache.sis.filter.visitor.ListingPropertyVisitor;
 import org.apache.sis.io.TableAppender;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ArithmeticFunction.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ArithmeticFunction.java
index 031b06a7ae..00491c90ac 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ArithmeticFunction.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ArithmeticFunction.java
@@ -21,8 +21,8 @@ import java.math.BigInteger;
 import org.opengis.util.ScopedName;
 import org.apache.sis.feature.internal.shared.FeatureExpression;
 import org.apache.sis.feature.internal.shared.FeatureProjectionBuilder;
-import org.apache.sis.filter.function.BinaryFunction;
-import org.apache.sis.filter.internal.shared.FunctionNames;
+import org.apache.sis.filter.base.BinaryFunction;
+import org.apache.sis.filter.visitor.FunctionNames;
 import org.apache.sis.math.Fraction;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/BinaryGeometryFilter.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/BinaryGeometryFilter.java
index 52ae4215e2..a8518c4ad5 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/BinaryGeometryFilter.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/BinaryGeometryFilter.java
@@ -24,7 +24,7 @@ import org.apache.sis.geometry.wrapper.Geometries;
 import org.apache.sis.geometry.wrapper.GeometryWrapper;
 import org.apache.sis.geometry.wrapper.SpatialOperationContext;
 import org.apache.sis.feature.internal.shared.AttributeConvention;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.util.Exceptions;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ComparisonFilter.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ComparisonFilter.java
index 40d1474a8f..40837252b4 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ComparisonFilter.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/ComparisonFilter.java
@@ -36,8 +36,8 @@ import java.time.chrono.ChronoZonedDateTime;
 import java.time.temporal.ChronoField;
 import java.time.temporal.Temporal;
 import org.apache.sis.math.Fraction;
-import org.apache.sis.filter.function.Node;
-import org.apache.sis.filter.function.BinaryFunction;
+import org.apache.sis.filter.base.Node;
+import org.apache.sis.filter.base.BinaryFunction;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.filter.Filter;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/DefaultFilterFactory.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/DefaultFilterFactory.java
index 156724aa33..aa7d605961 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/DefaultFilterFactory.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/DefaultFilterFactory.java
@@ -29,7 +29,7 @@ import org.apache.sis.setup.GeometryLibrary;
 import org.apache.sis.geometry.WraparoundMethod;
 import org.apache.sis.geometry.wrapper.Geometries;
 import org.apache.sis.feature.internal.Resources;
-import org.apache.sis.filter.function.UnaryFunction;
+import org.apache.sis.filter.base.UnaryFunction;
 import org.apache.sis.filter.sqlmm.Registry;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.iso.AbstractFactory;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/IdentifierFilter.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/IdentifierFilter.java
index 411cf97321..4bd0b7a365 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/IdentifierFilter.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/IdentifierFilter.java
@@ -19,7 +19,7 @@ package org.apache.sis.filter;
 import java.util.List;
 import java.util.Collection;
 import java.util.Objects;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.feature.internal.shared.AttributeConvention;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LeafExpression.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LeafExpression.java
index 1078a36f3a..cb82349c64 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LeafExpression.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LeafExpression.java
@@ -28,7 +28,7 @@ import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.collection.WeakValueHashMap;
 import org.apache.sis.feature.internal.shared.FeatureExpression;
 import org.apache.sis.feature.internal.shared.FeatureProjectionBuilder;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.math.FunctionProperty;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LikeFilter.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LikeFilter.java
index bf2e46ff25..a9c2697335 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LikeFilter.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LikeFilter.java
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Collection;
 import java.util.Objects;
 import java.util.regex.Pattern;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.filter.Filter;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LogicalFilter.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LogicalFilter.java
index b0913adc9c..d89afda041 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LogicalFilter.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/LogicalFilter.java
@@ -21,7 +21,7 @@ import java.util.Collection;
 import java.util.LinkedHashSet;
 import java.util.Objects;
 import org.apache.sis.util.ArgumentChecks;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.util.internal.shared.CollectionsExt;
 import org.apache.sis.util.internal.shared.UnmodifiableArrayList;
 
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/Optimization.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/Optimization.java
index 023e15aa45..014a1b26b0 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/Optimization.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/Optimization.java
@@ -26,7 +26,7 @@ import java.util.function.Predicate;
 import org.opengis.util.CodeList;
 import org.apache.sis.math.FunctionProperty;
 import org.apache.sis.util.resources.Errors;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.util.internal.shared.CollectionsExt;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/PropertyValue.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/PropertyValue.java
index c6c0a63b90..a650bc3d5d 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/PropertyValue.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/PropertyValue.java
@@ -24,7 +24,7 @@ import org.apache.sis.util.ObjectConverter;
 import org.apache.sis.util.ObjectConverters;
 import org.apache.sis.util.UnconvertibleObjectException;
 import org.apache.sis.feature.internal.shared.FeatureProjectionBuilder;
-import org.apache.sis.filter.internal.shared.XPath;
+import org.apache.sis.filter.base.XPath;
 import org.apache.sis.util.resources.Errors;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java
index b52a8e656a..70f5b43df8 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/TemporalFilter.java
@@ -16,7 +16,7 @@
  */
 package org.apache.sis.filter;
 
-import org.apache.sis.filter.function.BinaryFunction;
+import org.apache.sis.filter.base.BinaryFunction;
 import java.time.DateTimeException;
 import org.apache.sis.util.Classes;
 import org.apache.sis.util.resources.Errors;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/BinaryFunction.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/BinaryFunction.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/BinaryFunction.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/BinaryFunction.java
index 3fe34f8462..b3fea550a5 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/BinaryFunction.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/BinaryFunction.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function;
+package org.apache.sis.filter.base;
 
 import java.util.List;
 import java.util.Collection;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/ConvertFunction.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/ConvertFunction.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/ConvertFunction.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/ConvertFunction.java
index af760f3199..cdce085ed6 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/ConvertFunction.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/ConvertFunction.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function;
+package org.apache.sis.filter.base;
 
 import java.util.Set;
 import java.util.List;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/GeometryConverter.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/GeometryConverter.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/GeometryConverter.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/GeometryConverter.java
index aa06be8c95..4067d26ec8 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/GeometryConverter.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/GeometryConverter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function;
+package org.apache.sis.filter.base;
 
 import java.util.List;
 import java.util.Collection;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/GeometryFromFeature.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/GeometryFromFeature.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/GeometryFromFeature.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/GeometryFromFeature.java
index 9b99ad9ca7..39b826c211 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/GeometryFromFeature.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/GeometryFromFeature.java
@@ -14,13 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function;
+package org.apache.sis.filter.base;
 
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.geometry.wrapper.Geometries;
 import org.apache.sis.geometry.wrapper.GeometryWrapper;
 import org.apache.sis.feature.internal.shared.AttributeConvention;
-import org.apache.sis.filter.internal.shared.XPath;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.feature.Feature;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/Node.java
 b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/Node.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/Node.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/Node.java
index 35e356b6d3..527aa60048 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/Node.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/Node.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function;
+package org.apache.sis.filter.base;
 
 import java.util.Set;
 import java.util.Map;
@@ -33,7 +33,6 @@ import org.apache.sis.math.FunctionProperty;
 import org.apache.sis.feature.DefaultAttributeType;
 import org.apache.sis.feature.internal.Resources;
 import org.apache.sis.feature.internal.shared.FeatureExpression;
-import org.apache.sis.filter.internal.shared.WarningEvent;
 import org.apache.sis.geometry.wrapper.Geometries;
 import org.apache.sis.geometry.wrapper.GeometryWrapper;
 import org.apache.sis.referencing.IdentifiedObjects;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/UnaryFunction.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/UnaryFunction.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/UnaryFunction.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/UnaryFunction.java
index dce8e0173f..a76d2290e8 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/UnaryFunction.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/UnaryFunction.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function;
+package org.apache.sis.filter.base;
 
 import java.util.List;
 import java.util.Collection;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/WarningEvent.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/WarningEvent.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/WarningEvent.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/WarningEvent.java
index fd9a542401..7476717f9e 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/WarningEvent.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/WarningEvent.java
@@ -14,12 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.base;
 
 import java.util.Optional;
 import java.util.function.Consumer;
 import org.opengis.util.ScopedName;
-import org.apache.sis.filter.function.Node;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.util.CodeList;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/XPath.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/XPath.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/XPath.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/XPath.java
index e1002c4a2b..4bbfeaf774 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/XPath.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/XPath.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.base;
 
 import java.util.List;
 import java.util.Arrays;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/package-info.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/package-info.java
similarity index 81%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/package-info.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/package-info.java
index b7b091de5c..4d5b4baabe 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/package-info.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/base/package-info.java
@@ -18,7 +18,12 @@
 /**
  * Base implementation shared by the main {@code filter} package and the 
<abbr>SQLMM</abbr> extension.
  *
+ * <p><strong>Do not use!</strong></p>
+ *
+ * This package is for internal use by SIS only. Classes in this package
+ * may change in incompatible ways in any future version without notice.
+ *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  */
-package org.apache.sis.filter.function;
+package org.apache.sis.filter.base;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/BinaryOperator.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/BinaryOperator.java
similarity index 97%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/BinaryOperator.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/BinaryOperator.java
index 6d9714d05b..b4cd3e2d3a 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/BinaryOperator.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/BinaryOperator.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function.math;
+package org.apache.sis.filter.math;
 
 import java.util.Objects;
 import java.util.function.DoubleBinaryOperator;
 import java.io.ObjectStreamException;
 import org.opengis.util.ScopedName;
 import org.apache.sis.filter.Optimization;
-import org.apache.sis.filter.function.BinaryFunction;
+import org.apache.sis.filter.base.BinaryFunction;
 import org.apache.sis.feature.internal.shared.FeatureExpression;
 import org.apache.sis.feature.internal.shared.FeatureProjectionBuilder;
 
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/Function.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/Function.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/Function.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/Function.java
index 74694d827a..344f31d55d 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/Function.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/Function.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function.math;
+package org.apache.sis.filter.math;
 
 import java.util.Map;
 import java.util.List;
@@ -27,7 +27,7 @@ import org.opengis.util.ScopedName;
 import org.opengis.parameter.ParameterDescriptor;
 import org.apache.sis.parameter.DefaultParameterDescriptor;
 import org.apache.sis.feature.internal.shared.FeatureExpression;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.util.iso.Names;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/Registry.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/Registry.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/Registry.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/Registry.java
index bc5dd1d342..e38c18a892 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/Registry.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/Registry.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function.math;
+package org.apache.sis.filter.math;
 
 import java.util.Arrays;
 import java.util.Collection;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/UnaryOperator.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/UnaryOperator.java
similarity index 97%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/UnaryOperator.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/UnaryOperator.java
index b308a070b4..e947ff89ac 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/UnaryOperator.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/UnaryOperator.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function.math;
+package org.apache.sis.filter.math;
 
 import java.util.Objects;
 import java.util.function.DoubleUnaryOperator;
 import java.io.ObjectStreamException;
 import org.opengis.util.ScopedName;
 import org.apache.sis.filter.Optimization;
-import org.apache.sis.filter.function.UnaryFunction;
+import org.apache.sis.filter.base.UnaryFunction;
 import org.apache.sis.feature.internal.shared.FeatureExpression;
 import org.apache.sis.feature.internal.shared.FeatureProjectionBuilder;
 
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/package-info.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/package-info.java
similarity index 96%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/package-info.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/package-info.java
index 911de396d2..64868b67d0 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/function/math/package-info.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/math/package-info.java
@@ -23,4 +23,4 @@
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  */
-package org.apache.sis.filter.function.math;
+package org.apache.sis.filter.math;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/sqlmm/SpatialFunction.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/sqlmm/SpatialFunction.java
index 87e11fe356..c6ffa0a876 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/sqlmm/SpatialFunction.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/sqlmm/SpatialFunction.java
@@ -21,7 +21,7 @@ import java.util.Collection;
 import org.opengis.util.LocalName;
 import org.opengis.util.ScopedName;
 import org.apache.sis.filter.Optimization;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.feature.internal.Resources;
 import org.apache.sis.feature.internal.shared.FeatureExpression;
 import org.apache.sis.feature.internal.shared.FeatureProjectionBuilder;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/CopyVisitor.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/CopyVisitor.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/CopyVisitor.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/CopyVisitor.java
index 7fc67478a1..b4f3e74e98 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/CopyVisitor.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/CopyVisitor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.util.List;
 import java.util.ArrayList;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/EditVisitor.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/EditVisitor.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/EditVisitor.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/EditVisitor.java
index 8d000bbcfb..553087b80a 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/EditVisitor.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/EditVisitor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import org.opengis.filter.Literal;
 import org.opengis.filter.FilterFactory;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/FunctionNames.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/FunctionNames.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/FunctionNames.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/FunctionNames.java
index de621e6fad..6a67034365 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/FunctionNames.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/FunctionNames.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import org.apache.sis.filter.sqlmm.SQLMM;
 
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/ListingPropertyVisitor.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/ListingPropertyVisitor.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/ListingPropertyVisitor.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/ListingPropertyVisitor.java
index 32785ce3ad..bf238b3e20 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/ListingPropertyVisitor.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/ListingPropertyVisitor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.util.HashSet;
 import java.util.Set;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/Visitor.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/Visitor.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/Visitor.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/Visitor.java
index 5302141e4f..fc21c0d035 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/Visitor.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/Visitor.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.util.Map;
 import java.util.HashMap;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/package-info.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/package-info.java
similarity index 96%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/package-info.java
rename to 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/package-info.java
index 5d0794eb45..ca7e2c1d94 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/package-info.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/visitor/package-info.java
@@ -28,4 +28,4 @@
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/ComparisonFilterTest.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/ComparisonFilterTest.java
index fd3453ce0b..bb54570867 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/ComparisonFilterTest.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/ComparisonFilterTest.java
@@ -30,7 +30,7 @@ import org.opengis.filter.ComparisonOperator;
 import org.opengis.filter.ComparisonOperatorName;
 import org.opengis.filter.BinaryComparisonOperator;
 import org.opengis.filter.BetweenComparisonOperator;
-import org.apache.sis.filter.internal.shared.FunctionNames;
+import org.apache.sis.filter.visitor.FunctionNames;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/IdentifierFilterTest.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/IdentifierFilterTest.java
index 225e2373d8..2eef1aa000 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/IdentifierFilterTest.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/IdentifierFilterTest.java
@@ -19,7 +19,7 @@ package org.apache.sis.filter;
 import java.util.function.Consumer;
 import org.apache.sis.feature.builder.AttributeRole;
 import org.apache.sis.feature.builder.FeatureTypeBuilder;
-import org.apache.sis.filter.internal.shared.WarningEvent;
+import org.apache.sis.filter.base.WarningEvent;
 
 // Test dependencies
 import org.junit.jupiter.api.Test;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/XPathTest.java 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/XPathTest.java
index 6e3e6d131c..aab89ecb26 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/XPathTest.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/XPathTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.sis.filter;
 
-import org.apache.sis.filter.internal.shared.XPath;
+import org.apache.sis.filter.base.XPath;
 
 // Test dependencies
 import org.junit.jupiter.api.Test;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/function/math/RegistryTest.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/math/RegistryTest.java
similarity index 97%
rename from 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/function/math/RegistryTest.java
rename to 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/math/RegistryTest.java
index 52f6861c3e..f7fb2ef8c5 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/function/math/RegistryTest.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/math/RegistryTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.function.math;
+package org.apache.sis.filter.math;
 
 import java.util.Map;
 import org.apache.sis.feature.DefaultAttributeType;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/sqlmm/RegistryTestCase.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/sqlmm/RegistryTestCase.java
index 59111a9524..ab5ecd5c0f 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/sqlmm/RegistryTestCase.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/sqlmm/RegistryTestCase.java
@@ -28,7 +28,7 @@ import org.apache.sis.filter.DefaultFilterFactory;
 import org.apache.sis.filter.Optimization;
 import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.geometry.WraparoundMethod;
-import org.apache.sis.filter.function.Node;
+import org.apache.sis.filter.base.Node;
 import org.apache.sis.geometry.wrapper.Dimensions;
 import org.apache.sis.geometry.wrapper.Geometries;
 import org.apache.sis.geometry.wrapper.GeometryType;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/CopyVisitorTest.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/CopyVisitorTest.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/CopyVisitorTest.java
rename to 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/CopyVisitorTest.java
index c34c190888..9f9ba250c7 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/CopyVisitorTest.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/CopyVisitorTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.util.Map;
 import org.opengis.feature.Feature;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FilterFactoryMock.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FilterFactoryMock.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FilterFactoryMock.java
rename to 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FilterFactoryMock.java
index d5aae216ca..870ed97f34 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FilterFactoryMock.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FilterFactoryMock.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.time.Instant;
 import java.util.Map;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FunctionMock.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FunctionMock.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FunctionMock.java
rename to 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FunctionMock.java
index 888bd37236..1dddb13484 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FunctionMock.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FunctionMock.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.util.Map;
 import java.util.List;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FunctionNamesTest.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FunctionNamesTest.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FunctionNamesTest.java
rename to 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FunctionNamesTest.java
index b98ad474bc..74a9844cc8 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/FunctionNamesTest.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/FunctionNamesTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.lang.reflect.Field;
 import org.apache.sis.filter.sqlmm.SQLMM;
diff --git 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/ValueReferenceMock.java
 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/ValueReferenceMock.java
similarity index 98%
rename from 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/ValueReferenceMock.java
rename to 
endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/ValueReferenceMock.java
index 6a919223b7..bd99b2597e 100644
--- 
a/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/internal/shared/ValueReferenceMock.java
+++ 
b/endorsed/src/org.apache.sis.feature/test/org/apache/sis/filter/visitor/ValueReferenceMock.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.filter.visitor;
 
 import java.util.Map;
 import org.opengis.filter.Expression;
diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
index 05c14066e5..0068ca915a 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Database.java
@@ -55,7 +55,7 @@ import org.apache.sis.storage.sql.SQLStore;
 import org.apache.sis.storage.sql.ResourceDefinition;
 import org.apache.sis.storage.base.MetadataBuilder;
 import org.apache.sis.storage.event.StoreListeners;
-import org.apache.sis.filter.internal.shared.WarningEvent;
+import org.apache.sis.filter.base.WarningEvent;
 import org.apache.sis.geometry.wrapper.Geometries;
 import org.apache.sis.geometry.wrapper.GeometryType;
 import org.apache.sis.system.Modules;
diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/FeatureStream.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/FeatureStream.java
index 9605dd231a..8805ce036a 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/FeatureStream.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/FeatureStream.java
@@ -31,7 +31,7 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import org.apache.sis.filter.Optimization;
-import org.apache.sis.filter.internal.shared.SortByComparator;
+import org.apache.sis.storage.base.SortByComparator;
 import org.apache.sis.metadata.sql.internal.shared.SQLBuilder;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.internal.shared.Strings;
diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/SelectionClauseWriter.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/SelectionClauseWriter.java
index 18ff76ad40..dc189e4eaa 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/SelectionClauseWriter.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/SelectionClauseWriter.java
@@ -24,8 +24,8 @@ import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import org.apache.sis.filter.internal.shared.FunctionNames;
-import org.apache.sis.filter.internal.shared.Visitor;
+import org.apache.sis.filter.visitor.FunctionNames;
+import org.apache.sis.filter.visitor.Visitor;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.util.CodeList;
diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Table.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Table.java
index 25c6ae8d5b..e9e333c074 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Table.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/storage/sql/feature/Table.java
@@ -30,7 +30,7 @@ import java.sql.SQLFeatureNotSupportedException;
 import org.opengis.util.GenericName;
 import org.opengis.geometry.Envelope;
 import org.apache.sis.filter.InvalidXPathException;
-import org.apache.sis.filter.internal.shared.XPath;
+import org.apache.sis.filter.base.XPath;
 import org.apache.sis.storage.AbstractFeatureSet;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.InternalDataStoreException;
diff --git 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/util/stream/StreamWrapper.java
 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/util/stream/StreamWrapper.java
index 5225f44736..d7e2e6ea0b 100644
--- 
a/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/util/stream/StreamWrapper.java
+++ 
b/endorsed/src/org.apache.sis.storage.sql/main/org/apache/sis/util/stream/StreamWrapper.java
@@ -36,7 +36,7 @@ import java.util.stream.IntStream;
 import java.util.stream.LongStream;
 import java.util.stream.DoubleStream;
 import java.util.stream.Collector;
-import org.apache.sis.filter.internal.shared.WarningEvent;
+import org.apache.sis.filter.base.WarningEvent;
 
 
 /**
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/AbstractFeatureSet.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/AbstractFeatureSet.java
index c3fb323315..102d8f179e 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/AbstractFeatureSet.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/AbstractFeatureSet.java
@@ -25,7 +25,7 @@ import org.opengis.metadata.Metadata;
 import org.apache.sis.storage.event.StoreListeners;
 import org.apache.sis.storage.base.MetadataBuilder;
 import org.apache.sis.storage.base.WarningAdapter;
-import org.apache.sis.filter.internal.shared.WarningEvent;
+import org.apache.sis.filter.base.WarningEvent;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.feature.FeatureType;
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/FeatureQuery.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/FeatureQuery.java
index 2c9e54f5b6..0d52a4c275 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/FeatureQuery.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/FeatureQuery.java
@@ -36,8 +36,8 @@ import 
org.apache.sis.feature.internal.shared.FeatureProjection;
 import org.apache.sis.feature.internal.shared.FeatureProjectionBuilder;
 import org.apache.sis.filter.DefaultFilterFactory;
 import org.apache.sis.filter.Optimization;
-import org.apache.sis.filter.internal.shared.ListingPropertyVisitor;
-import org.apache.sis.filter.internal.shared.SortByComparator;
+import org.apache.sis.filter.visitor.ListingPropertyVisitor;
+import org.apache.sis.storage.base.SortByComparator;
 import org.apache.sis.storage.internal.Resources;
 import org.apache.sis.pending.jdk.JDK19;
 import org.apache.sis.util.ArgumentChecks;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/SortByComparator.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/SortByComparator.java
similarity index 99%
rename from 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/SortByComparator.java
rename to 
endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/SortByComparator.java
index f54ca83695..8bd5c70bf8 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/filter/internal/shared/SortByComparator.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/SortByComparator.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.filter.internal.shared;
+package org.apache.sis.storage.base;
 
 import java.util.Arrays;
 import java.util.List;
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/WarningAdapter.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/WarningAdapter.java
index a29e9ff1e5..9594273374 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/WarningAdapter.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/WarningAdapter.java
@@ -20,7 +20,7 @@ import java.util.logging.Level;
 import java.util.function.Consumer;
 import java.util.function.Supplier;
 import org.apache.sis.storage.event.StoreListeners;
-import org.apache.sis.filter.internal.shared.WarningEvent;
+import org.apache.sis.filter.base.WarningEvent;
 
 
 /**
diff --git 
a/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java
 
b/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java
index a59fcf4c9c..1c159c3290 100644
--- 
a/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java
+++ 
b/incubator/src/org.apache.sis.cql/main/org/apache/sis/cql/FilterToCQLVisitor.java
@@ -46,8 +46,8 @@ import org.apache.sis.measure.UnitFormat;
 import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.geometry.wrapper.Geometries;
 import org.apache.sis.geometry.wrapper.GeometryWrapper;
-import org.apache.sis.filter.internal.shared.FunctionNames;
-import org.apache.sis.filter.internal.shared.Visitor;
+import org.apache.sis.filter.visitor.FunctionNames;
+import org.apache.sis.filter.visitor.Visitor;
 import org.apache.sis.temporal.LenientDateFormat;
 
 
diff --git 
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
 
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
index 8d996772a2..84a4305de6 100644
--- 
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
+++ 
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/SEPortrayer.java
@@ -60,7 +60,7 @@ import org.apache.sis.filter.DefaultFilterFactory;
 import org.apache.sis.geometry.Envelopes;
 import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.feature.internal.shared.AttributeConvention;
-import org.apache.sis.filter.internal.shared.XPath;
+import org.apache.sis.filter.base.XPath;
 import org.apache.sis.storage.FeatureQuery;
 import org.apache.sis.storage.Aggregate;
 import org.apache.sis.storage.DataStoreException;
diff --git 
a/incubator/src/org.apache.sis.portrayal.map/test/org/apache/sis/map/SEPortrayerTest.java
 
b/incubator/src/org.apache.sis.portrayal.map/test/org/apache/sis/map/SEPortrayerTest.java
index 425971bf5e..c83d5795da 100644
--- 
a/incubator/src/org.apache.sis.portrayal.map/test/org/apache/sis/map/SEPortrayerTest.java
+++ 
b/incubator/src/org.apache.sis.portrayal.map/test/org/apache/sis/map/SEPortrayerTest.java
@@ -45,7 +45,7 @@ import org.apache.sis.feature.builder.FeatureTypeBuilder;
 import org.apache.sis.filter.DefaultFilterFactory;
 import org.apache.sis.geometry.GeneralEnvelope;
 import org.apache.sis.feature.internal.shared.AttributeConvention;
-import org.apache.sis.filter.internal.shared.WarningEvent;
+import org.apache.sis.filter.base.WarningEvent;
 import org.apache.sis.storage.FeatureQuery;
 import org.apache.sis.storage.Aggregate;
 import org.apache.sis.storage.DataStoreException;
diff --git 
a/incubator/src/org.apache.sis.storage.shapefile/main/org/apache/sis/storage/shapefile/ShapefileStore.java
 
b/incubator/src/org.apache.sis.storage.shapefile/main/org/apache/sis/storage/shapefile/ShapefileStore.java
index 877e9abb24..6fec90354d 100644
--- 
a/incubator/src/org.apache.sis.storage.shapefile/main/org/apache/sis/storage/shapefile/ShapefileStore.java
+++ 
b/incubator/src/org.apache.sis.storage.shapefile/main/org/apache/sis/storage/shapefile/ShapefileStore.java
@@ -74,9 +74,9 @@ import org.apache.sis.feature.builder.FeatureTypeBuilder;
 import org.apache.sis.feature.internal.shared.AttributeConvention;
 import org.apache.sis.filter.DefaultFilterFactory;
 import org.apache.sis.filter.Optimization;
-import org.apache.sis.filter.internal.shared.FunctionNames;
-import org.apache.sis.filter.internal.shared.ListingPropertyVisitor;
-import org.apache.sis.filter.internal.shared.WarningEvent;
+import org.apache.sis.filter.visitor.FunctionNames;
+import org.apache.sis.filter.visitor.ListingPropertyVisitor;
+import org.apache.sis.filter.base.WarningEvent;
 import org.apache.sis.io.stream.ChannelDataInput;
 import org.apache.sis.io.stream.ChannelDataOutput;
 import org.apache.sis.io.stream.IOUtilities;

Reply via email to