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