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);
     }

Reply via email to