This is an automated email from the ASF dual-hosted git repository.
enorman pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-fsclassloader.git
The following commit(s) were added to refs/heads/master by this push:
new a46dd99 SLING-12981 migrate to Jakarta Servlet (#8)
a46dd99 is described below
commit a46dd99bbfbb9f1f4efd8e7d8be64f10d408059a
Author: Eric Norman <[email protected]>
AuthorDate: Tue Nov 4 14:07:48 2025 -0800
SLING-12981 migrate to Jakarta Servlet (#8)
---
pom.xml | 22 +++--
.../impl/FSClassLoaderWebConsole.java | 93 ++++------------------
.../impl/FSClassLoaderWebConsoleTest.java | 13 ++-
3 files changed, 41 insertions(+), 87 deletions(-)
diff --git a/pom.xml b/pom.xml
index 63712bf..7169eed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
</parent>
<artifactId>org.apache.sling.commons.fsclassloader</artifactId>
- <version>1.0.17-SNAPSHOT</version>
+ <version>2.0.0-SNAPSHOT</version>
<name>Apache Sling Commons FileSystem ClassLoader</name>
<description>The Sling Commons FileSystem ClassLoader bundle provides a
dynamic class loader for reading
@@ -42,13 +42,15 @@
</scm>
<properties>
- <sling.java.version>8</sling.java.version>
+ <sling.java.version>17</sling.java.version>
+ <slf4j.version>2.0.17</slf4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -83,8 +85,9 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <version>6.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -93,6 +96,12 @@
<version>3.18.0</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-text</artifactId>
+ <version>1.10.0</version>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
@@ -102,7 +111,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.webconsole</artifactId>
- <version>3.0.0</version>
+ <version>5.0.10</version>
<scope>provided</scope>
</dependency>
@@ -115,7 +124,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>4.9.0</version>
+ <version>5.20.0</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -127,6 +136,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
+ <version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
diff --git
a/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
b/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
index 3955f8c..cef13af 100644
---
a/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
+++
b/src/main/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsole.java
@@ -18,12 +18,6 @@
*/
package org.apache.sling.commons.fsclassloader.impl;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -32,10 +26,14 @@ import java.io.Writer;
import java.util.LinkedHashMap;
import java.util.Map;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.felix.webconsole.AbstractWebConsolePlugin;
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.felix.webconsole.servlet.AbstractServlet;
import org.apache.sling.commons.classloader.ClassLoaderWriter;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
@@ -59,7 +57,7 @@ import org.slf4j.LoggerFactory;
"felix.webconsole.css=" + FSClassLoaderWebConsole.RES_LOC +
"/prettify.css",
"felix.webconsole.category=Sling"
})
-public class FSClassLoaderWebConsole extends AbstractWebConsolePlugin {
+public class FSClassLoaderWebConsole extends AbstractServlet {
static final String APP_ROOT = "fsclassloader";
@@ -68,8 +66,7 @@ public class FSClassLoaderWebConsole extends
AbstractWebConsolePlugin {
private static final Logger LOG =
LoggerFactory.getLogger(FSClassLoaderWebConsole.class);
- @Reference(target =
"(component.name=org.apache.sling.commons.fsclassloader.impl.FSClassLoaderProvider)")
- private ClassLoaderWriter classLoaderWriter;
+ private final transient ClassLoaderWriter classLoaderWriter;
/**
* The root under which the class files are under
@@ -81,11 +78,6 @@ public class FSClassLoaderWebConsole extends
AbstractWebConsolePlugin {
*/
private static final long serialVersionUID = -5728679635644481848L;
- /**
- * The servlet configuration
- */
- private ServletConfig config;
-
/**
* Activate this component. Create the root directory.
*
@@ -93,19 +85,16 @@ public class FSClassLoaderWebConsole extends
AbstractWebConsolePlugin {
* the component context
*/
@Activate
- protected void activate(final ComponentContext componentContext, final
FSClassLoaderComponentConfig config) {
+ public FSClassLoaderWebConsole(
+ @Reference(target =
"(component.name=org.apache.sling.commons.fsclassloader.impl.FSClassLoaderProvider)")
+ ClassLoaderWriter classLoaderWriter,
+ final ComponentContext componentContext,
+ final FSClassLoaderComponentConfig config) {
+ this.classLoaderWriter = classLoaderWriter;
// get the file root
this.root =
CacheLocationUtils.getRootDir(componentContext.getBundleContext(), config);
}
- /*
- * (non-Javadoc)
- *
- * @see javax.servlet.Servlet#destroy()
- */
- @Override
- public void destroy() {}
-
/*
* (non-Javadoc)
*
@@ -180,56 +169,6 @@ public class FSClassLoaderWebConsole extends
AbstractWebConsolePlugin {
}
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.felix.webconsole.AbstractWebConsolePlugin#getLabel()
- */
- @Override
- public String getLabel() {
- return "fsclassloader";
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.servlet.Servlet#getServletConfig()
- */
- @Override
- public ServletConfig getServletConfig() {
- return this.config;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.servlet.Servlet#getServletInfo()
- */
- @Override
- public String getServletInfo() {
- return "";
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.felix.webconsole.AbstractWebConsolePlugin#getTitle()
- */
- @Override
- public String getTitle() {
- return "File System Class Loader";
- }
-
- /*
- * (non-Javadoc)
- *
- * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
- */
- @Override
- public void init(ServletConfig config) throws ServletException {
- this.config = config;
- }
-
/**
* Checks whether the specified file is a file and is underneath the root
* directory.
@@ -285,11 +224,11 @@ public class FSClassLoaderWebConsole extends
AbstractWebConsolePlugin {
* (non-Javadoc)
*
* @see
- * org.apache.felix.webconsole.AbstractWebConsolePlugin#renderContent(javax
+ * org.apache.felix.webconsole.servlet.AbstractServlet#renderContent(javax
* .servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse)
*/
@Override
- protected void renderContent(HttpServletRequest request,
HttpServletResponse response)
+ public void renderContent(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
Map<String, ScriptFiles> scripts = new LinkedHashMap<String,
ScriptFiles>();
readFiles(root, root, scripts);
diff --git
a/src/test/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsoleTest.java
b/src/test/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsoleTest.java
index 1e68c8a..99967a1 100644
---
a/src/test/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsoleTest.java
+++
b/src/test/java/org/apache/sling/commons/fsclassloader/impl/FSClassLoaderWebConsoleTest.java
@@ -18,16 +18,17 @@
*/
package org.apache.sling.commons.fsclassloader.impl;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import java.io.PrintWriter;
import java.io.StringWriter;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.sling.commons.classloader.ClassLoaderWriter;
import org.junit.After;
import org.junit.Test;
import org.mockito.Mockito;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.ComponentContext;
import org.powermock.reflect.Whitebox;
import static org.junit.Assert.assertEquals;
@@ -95,8 +96,12 @@ public class FSClassLoaderWebConsoleTest {
}
private void setFixture(boolean clwReturn) {
- console = spy(new FSClassLoaderWebConsole());
classLoaderWriter = mock(ClassLoaderWriter.class);
+ ComponentContext componentContext = mock(ComponentContext.class);
+ BundleContext bundleContext = mock(BundleContext.class);
+
Mockito.doReturn(bundleContext).when(componentContext).getBundleContext();
+ FSClassLoaderComponentConfig config =
mock(FSClassLoaderComponentConfig.class);
+ console = spy(new FSClassLoaderWebConsole(classLoaderWriter,
componentContext, config));
when(classLoaderWriter.delete("")).thenReturn(clwReturn);
Whitebox.setInternalState(console, "classLoaderWriter",
classLoaderWriter);
}