This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits 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 297ea99ae9 Move `org.apache.sis.web` module to endorsed module. This 
is (for now) only listeners for clean undeploy of Apache SIS in the context of 
web containers.
297ea99ae9 is described below

commit 297ea99ae9b4956e7867e6a905be5bd1efcfbdbd
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Wed Nov 4 14:32:17 2026 +0100

    Move `org.apache.sis.web` module to endorsed module.
    This is (for now) only listeners for clean undeploy
    of Apache SIS in the context of web containers.
---
 .../apache/sis/buildtools/gradle/Dependency.java   |  2 +-
 endorsed/build.gradle.kts                          | 15 ++++++++++++
 .../src/org.apache.sis.util/main/module-info.java  |  2 +-
 .../jakarta.servlet.ServletContainerInitializer    |  1 +
 .../javax.servlet.ServletContainerInitializer      |  1 +
 .../src/org.apache.sis.web}/main/module-info.java  | 27 ++++++++++++++--------
 .../apache/sis/web/jakarta}/ServletListener.java   |  2 +-
 .../org/apache/sis/web/jakarta}/package-info.java  |  8 +++++--
 .../org/apache/sis/web/javaee/ServletListener.java |  9 ++++----
 .../org/apache/sis/web/javaee}/package-info.java   |  9 ++++++--
 .../org/apache/sis/web/osgi}/OSGiActivator.java    |  2 +-
 .../org/apache/sis/web/osgi}/package-info.java     |  6 +++--
 .../src/org.apache.sis.web}/webapp/WEB-INF/web.xml |  0
 incubator/build.gradle.kts                         | 15 ------------
 .../jakarta.servlet.ServletContainerInitializer    |  1 -
 .../javax.servlet.ServletContainerInitializer      |  1 -
 16 files changed, 60 insertions(+), 41 deletions(-)

diff --git 
a/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Dependency.java 
b/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Dependency.java
index a6b40aecae..a599698fdc 100644
--- a/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Dependency.java
+++ b/buildSrc/src/main/java/org/apache/sis/buildtools/gradle/Dependency.java
@@ -80,7 +80,7 @@ public final class Dependency {
         Map.entry("storage.geopackage",       "storage:sis-geopackage"),
         Map.entry("storage.json",             "storage:sis-json"),
         Map.entry("portrayal.map",            "core:sis-portrayal-map"),
-        Map.entry("webapp",                   "application:sis-webapp")
+        Map.entry("web",                      "application:sis-web")
     );
 
     /**
diff --git a/endorsed/build.gradle.kts b/endorsed/build.gradle.kts
index d2d53a4cd9..9cb53dd0ee 100644
--- a/endorsed/build.gradle.kts
+++ b/endorsed/build.gradle.kts
@@ -70,6 +70,9 @@ dependencies {
     compileOnly(libs.aws.s3)
     compileOnly(drivers.postgres)
     runtimeOnly(drivers.hsql)
+    compileOnly(group = "jakarta.servlet", name = "jakarta.servlet-api", 
version = "6.1.0")
+    compileOnly(group = "javax.servlet",   name = "javax.servlet-api",   
version = "4.0.1")
+    compileOnly(group = "org.osgi",        name = "osgi.core",           
version = "8.0.0")
 
     // Test dependencies
     testImplementation(tests.junit5)
@@ -464,6 +467,18 @@ publishing {
                               "inside the Calc spreadsheet."
             }
         }
+        create<MavenPublication>("web") {
+            var module = "org.apache.sis.web"
+            groupId    = "org.apache.sis.application"
+            artifactId = "sis-web"
+            artifact(layout.buildDirectory.file("libs/${module}.jar"))
+            artifact(layout.buildDirectory.file("docs/${module}-sources.jar")) 
{classifier = "sources"}
+            artifact(layout.buildDirectory.file("docs/${module}-javadoc.jar")) 
{classifier = "javadoc"}
+            pom {
+                name        = "Apache SIS web services layer"
+                description = "Support the use of Apache SIS in web 
applications."
+            }
+        }
     }
     /* Following block is currently repeated in all sub-projects. */
     repositories {
diff --git a/endorsed/src/org.apache.sis.util/main/module-info.java 
b/endorsed/src/org.apache.sis.util/main/module-info.java
index f69aa636f4..19916c807c 100644
--- a/endorsed/src/org.apache.sis.util/main/module-info.java
+++ b/endorsed/src/org.apache.sis.util/main/module-info.java
@@ -164,7 +164,7 @@ module org.apache.sis.util {
             org.apache.sis.storage.gsf,                 // In the "incubator" 
sub-project.
             org.apache.sis.portrayal,
             org.apache.sis.console,
-            org.apache.sis.webapp,                      // In the "incubator" 
sub-project.
+            org.apache.sis.web,                         // In the "incubator" 
sub-project.
             org.apache.sis.gui,                         // In the "optional" 
sub-project.
             org.apache.sis.referencing.database;        // In the "non-free" 
sub-project.
 
diff --git 
a/endorsed/src/org.apache.sis.web/main/META-INF/services/jakarta.servlet.ServletContainerInitializer
 
b/endorsed/src/org.apache.sis.web/main/META-INF/services/jakarta.servlet.ServletContainerInitializer
new file mode 100644
index 0000000000..6364701916
--- /dev/null
+++ 
b/endorsed/src/org.apache.sis.web/main/META-INF/services/jakarta.servlet.ServletContainerInitializer
@@ -0,0 +1 @@
+org.apache.sis.web.jakarta.ServletListener
diff --git 
a/endorsed/src/org.apache.sis.web/main/META-INF/services/javax.servlet.ServletContainerInitializer
 
b/endorsed/src/org.apache.sis.web/main/META-INF/services/javax.servlet.ServletContainerInitializer
new file mode 100644
index 0000000000..049f87fea7
--- /dev/null
+++ 
b/endorsed/src/org.apache.sis.web/main/META-INF/services/javax.servlet.ServletContainerInitializer
@@ -0,0 +1 @@
+org.apache.sis.web.javaee.ServletListener
diff --git a/incubator/src/org.apache.sis.webapp/main/module-info.java 
b/endorsed/src/org.apache.sis.web/main/module-info.java
similarity index 53%
rename from incubator/src/org.apache.sis.webapp/main/module-info.java
rename to endorsed/src/org.apache.sis.web/main/module-info.java
index 2edbfb846a..f5da7dabd9 100644
--- a/incubator/src/org.apache.sis.webapp/main/module-info.java
+++ b/endorsed/src/org.apache.sis.web/main/module-info.java
@@ -16,26 +16,33 @@
  */
 
 /**
- * Support the use of Apache <abbr>SIS</abbr> in web containers.
- * Web applications having <abbr>SIS</abbr> in their dependencies can add this 
module
- * if they need to undeploy <abbr>SIS</abbr> cleanly while keeping the rest of 
the container running.
- * This module is compatible with:
+ * Support for Apache <abbr>SIS</abbr> execution in the context of web 
containers.
+ * This module registers listeners for stopping Apache <abbr>SIS</abbr> 
background threads
+ * when a web application using <abbr>SIS</abbr> is undeployed from a web 
container.
+ * The listeners in this module are compatible with the following frameworks:
  *
  * <ul>
- *   <li>JavaEE Servlet 4.0 ({@code javax.servlet} packages)</li>
- *   <li>Jakarta Servlet 6.1 ({@code jakarta.servlet} packages)</li>
- *   <li>OGSGi 8.0 ({@code org.osgi} packages)</li>
+ *   <li>JavaEE Servlet 4.0 ({@code javax.servlet} package)</li>
+ *   <li>Jakarta Servlet 6.1 ({@code jakarta.servlet} package)</li>
+ *   <li>OGSGi 8.0 ({@code org.osgi.framework} package)</li>
  * </ul>
+ *
+ * Web applications should consider adding this module in their dependencies
+ * if they use Apache <abbr>SIS</abbr> and need clean undeploy while keeping 
the rest of the container running.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
+ * @version 1.8
+ * @since   1.8
  */
-module org.apache.sis.webapp {
+module org.apache.sis.web {
     requires transitive org.apache.sis.util;
     requires static jakarta.servlet;
     requires static javax.servlet.api;
     requires static osgi.core;
 
     provides jakarta.servlet.ServletContainerInitializer
-            with org.apache.sis.services.ServletListener;
+            with org.apache.sis.web.jakarta.ServletListener;
 
     provides javax.servlet.ServletContainerInitializer
-            with org.apache.sis.services.ServletListenerLegacy;
+            with org.apache.sis.web.javaee.ServletListener;
 }
diff --git 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/ServletListener.java
 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/jakarta/ServletListener.java
similarity index 98%
rename from 
incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/ServletListener.java
rename to 
endorsed/src/org.apache.sis.web/main/org/apache/sis/web/jakarta/ServletListener.java
index e0ba6e6c85..5f9f9e41fe 100644
--- 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/ServletListener.java
+++ 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/jakarta/ServletListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.services;
+package org.apache.sis.web.jakarta;
 
 import java.util.Set;
 import jakarta.servlet.ServletContext;
diff --git 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/jakarta/package-info.java
similarity index 77%
copy from 
incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
copy to 
endorsed/src/org.apache.sis.web/main/org/apache/sis/web/jakarta/package-info.java
index a9635f5bfc..8c3d25f7d4 100644
--- 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
+++ 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/jakarta/package-info.java
@@ -15,7 +15,11 @@
  * limitations under the License.
  */
 
+
 /**
- * Tasks to execute at initialization and undeploy time.
+ * All classes having a dependencies to Jakarta ({@code jakarta.servlet} 
packages).
+ * This is the replacement of JavaEE ({@code javax.servlet} packages).
+ *
+ * @author  Martin Desruisseaux (Geomatys)
  */
-package org.apache.sis.services;
+package org.apache.sis.web.jakarta;
diff --git 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/ServletListenerLegacy.java
 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/javaee/ServletListener.java
similarity index 87%
rename from 
incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/ServletListenerLegacy.java
rename to 
endorsed/src/org.apache.sis.web/main/org/apache/sis/web/javaee/ServletListener.java
index 15cebb477f..ef69fd8492 100644
--- 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/ServletListenerLegacy.java
+++ 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/javaee/ServletListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.services;
+package org.apache.sis.web.javaee;
 
 import java.util.Set;
 import javax.servlet.ServletContext;
@@ -27,16 +27,17 @@ import org.apache.sis.system.Shutdown;
 
 
 /**
- * Copy of {@link ServletListener} using the JaveEE package name instead of 
Jakarta.
+ * Copy of the {@linkplain org.apache.sis.web.jakarta.ServletListener listener 
for Jakarta}
+ * using the JaveEE package name instead of Jakarta.
  *
  * @author  Martin Desruisseaux (Geomatys)
  */
 @WebListener("Apache SIS shutdown hook")
-public final class ServletListenerLegacy implements 
ServletContainerInitializer, ServletContextListener {
+public final class ServletListener implements ServletContainerInitializer, 
ServletContextListener {
     /**
      * Invoked by reflection by the service loader.
      */
-    public ServletListenerLegacy() {
+    public ServletListener() {
     }
 
     /**
diff --git 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/javaee/package-info.java
similarity index 69%
copy from 
incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
copy to 
endorsed/src/org.apache.sis.web/main/org/apache/sis/web/javaee/package-info.java
index a9635f5bfc..739613c974 100644
--- 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
+++ 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/javaee/package-info.java
@@ -15,7 +15,12 @@
  * limitations under the License.
  */
 
+
 /**
- * Tasks to execute at initialization and undeploy time.
+ * All classes having a dependencies to JavaEE ({@code javax.servlet} 
packages).
+ * JavaEE is replaced by Jakarta ({@code jakarta.servlet} packages), but not 
all applications have migrated.
+ * This package is provided for web applications that are still using JavaEE.
+ *
+ * @author  Martin Desruisseaux (Geomatys)
  */
-package org.apache.sis.services;
+package org.apache.sis.web.javaee;
diff --git 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/OSGiActivator.java
 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/osgi/OSGiActivator.java
similarity index 98%
rename from 
incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/OSGiActivator.java
rename to 
endorsed/src/org.apache.sis.web/main/org/apache/sis/web/osgi/OSGiActivator.java
index 621d6de212..4255995a41 100644
--- 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/OSGiActivator.java
+++ 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/osgi/OSGiActivator.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.services;
+package org.apache.sis.web.osgi;
 
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleActivator;
diff --git 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/osgi/package-info.java
similarity index 83%
rename from 
incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
rename to 
endorsed/src/org.apache.sis.web/main/org/apache/sis/web/osgi/package-info.java
index a9635f5bfc..96548d7860 100644
--- 
a/incubator/src/org.apache.sis.webapp/main/org/apache/sis/services/package-info.java
+++ 
b/endorsed/src/org.apache.sis.web/main/org/apache/sis/web/osgi/package-info.java
@@ -16,6 +16,8 @@
  */
 
 /**
- * Tasks to execute at initialization and undeploy time.
+ * All classes having a dependencies to OSGi ({@code org.osgi.framework} 
packages).
+ *
+ * @author  Martin Desruisseaux (Geomatys)
  */
-package org.apache.sis.services;
+package org.apache.sis.web.osgi;
diff --git a/incubator/src/org.apache.sis.webapp/webapp/WEB-INF/web.xml 
b/endorsed/src/org.apache.sis.web/webapp/WEB-INF/web.xml
similarity index 100%
rename from incubator/src/org.apache.sis.webapp/webapp/WEB-INF/web.xml
rename to endorsed/src/org.apache.sis.web/webapp/WEB-INF/web.xml
diff --git a/incubator/build.gradle.kts b/incubator/build.gradle.kts
index 1d946daed6..6efc2ed003 100644
--- a/incubator/build.gradle.kts
+++ b/incubator/build.gradle.kts
@@ -64,9 +64,6 @@ dependencies {
     implementation(group = "com.fasterxml.jackson.core", name = 
"jackson-databind",    version = "2.22.1")
     implementation(group = "org.antlr",                  name = 
"antlr4-maven-plugin", version = "4.13.2")
     implementation(group = "org.xerial",                 name = "sqlite-jdbc", 
        version = "3.45.1.0")
-    compileOnly   (group = "jakarta.servlet",            name = 
"jakarta.servlet-api", version = "6.1.0")
-    compileOnly   (group = "javax.servlet",              name = 
"javax.servlet-api",   version = "4.0.1")
-    compileOnly   (group = "org.osgi",                   name = "osgi.core",   
        version = "8.0.0")
     antlr         (group = "org.antlr",                  name = "antlr4",      
        version = "4.13.2")
 }
 
@@ -261,18 +258,6 @@ publishing {
                 description = "Symbology and map representations, together 
with a rendering engine for display."
             }
         }
-        create<MavenPublication>("webapp") {
-            var module = "org.apache.sis.webapp"
-            groupId    = "org.apache.sis.application"
-            artifactId = "sis-webapp"
-            artifact(layout.buildDirectory.file("libs/${module}.jar"))
-            artifact(layout.buildDirectory.file("docs/${module}-sources.jar")) 
{classifier = "sources"}
-            artifact(layout.buildDirectory.file("docs/${module}-javadoc.jar")) 
{classifier = "javadoc"}
-            pom {
-                name        = "Apache SIS web services layer"
-                description = "Placeholder for future developments."
-            }
-        }
     }
     /* Following block is currently repeated in all sub-projects. */
     repositories {
diff --git 
a/incubator/src/org.apache.sis.webapp/main/META-INF/services/jakarta.servlet.ServletContainerInitializer
 
b/incubator/src/org.apache.sis.webapp/main/META-INF/services/jakarta.servlet.ServletContainerInitializer
deleted file mode 100644
index 148d4db4b4..0000000000
--- 
a/incubator/src/org.apache.sis.webapp/main/META-INF/services/jakarta.servlet.ServletContainerInitializer
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.sis.services.ServletListener
diff --git 
a/incubator/src/org.apache.sis.webapp/main/META-INF/services/javax.servlet.ServletContainerInitializer
 
b/incubator/src/org.apache.sis.webapp/main/META-INF/services/javax.servlet.ServletContainerInitializer
deleted file mode 100644
index 581d97a4e8..0000000000
--- 
a/incubator/src/org.apache.sis.webapp/main/META-INF/services/javax.servlet.ServletContainerInitializer
+++ /dev/null
@@ -1 +0,0 @@
-org.apache.sis.services.ServletListenerLegacy

Reply via email to