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

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new 0332b8608a FELIX-6631 : Migrate webconsole plugins to jakarta.servlet 
api
0332b8608a is described below

commit 0332b8608a6b47970955619a58e1bb2312ccaac2
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Tue Aug 22 07:14:55 2023 +0200

    FELIX-6631 : Migrate webconsole plugins to jakarta.servlet api
---
 webconsole-plugins/memoryusage/pom.xml             | 43 +++++++----
 .../plugins/memoryusage/internal/Activator.java    | 13 ++--
 .../internal/MemoryUsageConfigurator.java          |  5 +-
 .../memoryusage/internal/MemoryUsagePanel.java     | 83 ++++++++--------------
 .../memoryusage/internal/MemoryUsageSupport.java   |  2 +-
 5 files changed, 72 insertions(+), 74 deletions(-)

diff --git a/webconsole-plugins/memoryusage/pom.xml 
b/webconsole-plugins/memoryusage/pom.xml
index f710663617..fad767583b 100644
--- a/webconsole-plugins/memoryusage/pom.xml
+++ b/webconsole-plugins/memoryusage/pom.xml
@@ -65,7 +65,7 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <version>3.2.0</version>
+                <version>5.1.9</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
@@ -80,9 +80,10 @@
                             
org.osgi.service.metatype;version="[1.1,2)";resolution:="optional",
 
                             <!-- plug into the web console -->
-                            javax.servlet;resolution:="optional";
-                            
javax.servlet.http;version="[2.3,5)";resolution:="optional",
-                            
org.apache.felix.webconsole;version="[3.0,4)";resolution:="optional",
+                            jakarta.servlet;resolution:="optional";
+                            
jakarta.servlet.http;version="[5,7)";resolution:="optional",
+                            
org.apache.felix.webconsole.servlet;version="[1.0,2)";resolution:="optional",
+                            org.apache.felix.inventory;resolution:="optional",
 
                             <!-- plug into the traditional Felix shell -->
                             
org.apache.felix.shell;version="[1.0,1.1)";resolution:="optional"
@@ -114,14 +115,26 @@
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>4.0.0</version>
+            <artifactId>osgi.core</artifactId>
+            <version>6.0.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <version>4.0.0</version>
+            <artifactId>org.osgi.service.log</artifactId>
+            <version>1.3.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.cm</artifactId>
+            <version>1.6.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.metatype</artifactId>
+            <version>1.4.0</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -130,16 +143,22 @@
             <version>1.0.0</version>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.inventory</artifactId>
+            <version>1.1.0</version>
+            <scope>provided</scope>
+        </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.webconsole</artifactId>
-            <version>3.0.0</version>
+            <version>4.8.13-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.3</version>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>5.0.0</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/Activator.java
 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/Activator.java
index 6fd44da783..8703282e8f 100644
--- 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/Activator.java
+++ 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/Activator.java
@@ -21,6 +21,8 @@ package 
org.apache.felix.webconsole.plugins.memoryusage.internal;
 import java.util.Dictionary;
 import java.util.Hashtable;
 
+import org.apache.felix.inventory.InventoryPrinter;
+import org.apache.felix.webconsole.servlet.ServletConstants;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -49,10 +51,13 @@ public class Activator implements BundleActivator
 
         // install Web Console plugin
         Dictionary<String, Object> pluginProps = new Hashtable<String, 
Object>();
-        pluginProps.put("felix.webconsole.label", MemoryUsageConstants.LABEL);
-        pluginProps.put("felix.webconsole.category", 
MemoryUsageConstants.CATEGORY);
-        new AbstractServiceFactory(bundleContext, pluginProps, 
"javax.servlet.Servlet",
-            "org.apache.felix.webconsole.ConfigurationPrinter")
+        pluginProps.put(ServletConstants.PLUGIN_LABEL, 
MemoryUsageConstants.LABEL);
+        pluginProps.put(ServletConstants.PLUGIN_TITLE, "%dump.title");
+        pluginProps.put(ServletConstants.PLUGIN_CATEGORY, 
MemoryUsageConstants.CATEGORY);
+        pluginProps.put(InventoryPrinter.NAME, MemoryUsageConstants.LABEL);
+        pluginProps.put(InventoryPrinter.TITLE, "Memory Usage");
+        new AbstractServiceFactory(bundleContext, pluginProps, 
"jakarta.servlet.Servlet",
+            "org.apache.felix.inventory.InventoryPrinter")
         {
             @Override
             public Object createObject()
diff --git 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageConfigurator.java
 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageConfigurator.java
index 42bdc1c4c3..eb5d72286f 100644
--- 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageConfigurator.java
+++ 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageConfigurator.java
@@ -41,13 +41,12 @@ class MemoryUsageConfigurator implements ManagedService, 
MetaTypeProvider
         this.support = support;
     }
 
-    @SuppressWarnings("unchecked")
-    public void updated(Dictionary properties) throws ConfigurationException
+    public void updated(Dictionary<String, ?> properties) throws 
ConfigurationException
     {
         // ensure default values if there is no config or config is deleted
         if (properties == null)
         {
-            properties = new Hashtable();
+            properties = new Hashtable<>();
         }
 
         final Object thresholdValue = 
properties.get(MemoryUsageConstants.PROP_DUMP_THRESHOLD);
diff --git 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsagePanel.java
 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsagePanel.java
index 57b74fe56c..275c968490 100644
--- 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsagePanel.java
+++ 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsagePanel.java
@@ -24,53 +24,35 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.util.NoSuchElementException;
 import java.util.zip.Deflater;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
-import org.apache.felix.webconsole.AbstractWebConsolePlugin;
-import org.apache.felix.webconsole.AttachmentProvider;
-import org.apache.felix.webconsole.ConfigurationPrinter;
-import org.apache.felix.webconsole.DefaultVariableResolver;
-import org.apache.felix.webconsole.WebConsoleUtil;
+import org.apache.felix.inventory.Format;
+import org.apache.felix.inventory.ZipAttachmentProvider;
+import org.apache.felix.webconsole.servlet.AbstractServlet;
+import org.apache.felix.webconsole.servlet.RequestVariableResolver;
 import org.osgi.service.log.LogService;
 
 @SuppressWarnings("serial")
-class MemoryUsagePanel extends AbstractWebConsolePlugin implements 
ConfigurationPrinter, AttachmentProvider
-{
+class MemoryUsagePanel extends AbstractServlet implements 
ZipAttachmentProvider {
 
     private final MemoryUsageSupport support;
 
     MemoryUsagePanel(final MemoryUsageSupport support)
     {
         this.support = support;
-        activate(support.getBundleContext());
     }
 
     // ---------- AbstractWebConsolePlugin
 
     @Override
-    public String getLabel()
-    {
-        return MemoryUsageConstants.LABEL;
-    }
-
-    @Override
-    public String getTitle()
-    {
-        return "%dump.title";
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    protected void renderContent(HttpServletRequest req, HttpServletResponse 
res) throws IOException
+    public void renderContent(HttpServletRequest req, HttpServletResponse res) 
throws IOException
     {
         final PrintWriter pw = res.getWriter();
 
@@ -109,7 +91,7 @@ class MemoryUsagePanel extends AbstractWebConsolePlugin 
implements Configuration
         JsonPrintHelper jph = new JsonPrintHelper();
         support.printOverallMemory(jph);
 
-        DefaultVariableResolver resolver = (DefaultVariableResolver) 
WebConsoleUtil.getVariableResolver(req);
+        RequestVariableResolver resolver = this.getVariableResolver(req);
         resolver.put("__files__", filesBuf.toString());
         resolver.put("__status__", statusBuf.toString());
         resolver.put("__threshold__", String.valueOf(support.getThreshold()));
@@ -123,38 +105,30 @@ class MemoryUsagePanel extends AbstractWebConsolePlugin 
implements Configuration
 
     // ---------- Configuration Printer
 
-    public void printConfiguration(PrintWriter pw)
-    {
+    public void print(final PrintWriter pw, final Format format, final boolean 
isZip) {
         support.printMemory(new PrintWriterPrintHelper(pw));
     }
 
     // ---------- AttachmentProvider
 
-    public URL[] getAttachments(String mode)
-    {
-        if (ConfigurationPrinter.MODE_ZIP.equals(mode))
-        {
-            File[] dumpFiles = support.getDumpFiles();
-            if (dumpFiles != null && dumpFiles.length > 0)
-            {
-                URL[] attachs = new URL[dumpFiles.length];
-                for (int i = 0; i < dumpFiles.length; i++)
-                {
-                    try
-                    {
-                        attachs[i] = dumpFiles[i].toURI().toURL();
-                    }
-                    catch (MalformedURLException mue)
-                    {
-                        // not expected ...
+    public void addAttachments(final ZipOutputStream stream, final String 
prefix) throws IOException {
+        File[] dumpFiles = support.getDumpFiles();
+        if (dumpFiles != null) {
+            for(final File f : dumpFiles) {
+                final ZipEntry entry = new ZipEntry(prefix + f.getName());
+                entry.setTime(f.lastModified());
+                stream.putNextEntry(entry);
+
+                try(final FileInputStream fis = new FileInputStream(f)) {
+                    final byte[] buf = new byte[32768];
+                    int rd = 0;
+                    while ((rd = fis.read(buf)) >= 0) {
+                        stream.write(buf, 0, rd);
                     }
                 }
-                return attachs;
+                stream.closeEntry();
             }
         }
-
-        // not ZIP mode, return nothing
-        return null;
     }
 
     // ---------- GenericServlet
@@ -182,7 +156,7 @@ class MemoryUsagePanel extends AbstractWebConsolePlugin 
implements Configuration
         }
         else
         {
-            String command = WebConsoleUtil.getParameter(req, "command");
+            String command = req.getParameter("command");
             if ("dump".equals(command))
             {
                 resp.setContentType("text/plain; charset=UTF-8");
@@ -255,7 +229,7 @@ class MemoryUsagePanel extends AbstractWebConsolePlugin 
implements Configuration
     private DumpFile getDumpFile(final HttpServletRequest request)
     {
         final String pathInfo = request.getPathInfo();
-        if (pathInfo != null && !pathInfo.endsWith(getLabel()))
+        if (pathInfo != null && !pathInfo.endsWith(MemoryUsageConstants.LABEL))
         {
             final int lastSlash = pathInfo.lastIndexOf('/');
             if (lastSlash > 0)
@@ -286,10 +260,11 @@ class MemoryUsagePanel extends AbstractWebConsolePlugin 
implements Configuration
             ins = new FileInputStream(dumpFile);
 
             response.setDateHeader("Last-Modified", dumpFile.lastModified());
-            WebConsoleUtil.setNoCache(response);
+            AbstractServlet.setNoCache(response);
 
             OutputStream out = response.getOutputStream();
 
+            response.setStatus(HttpServletResponse.SC_OK);
             if (compress)
             {
                 ZipOutputStream zip = new ZipOutputStream(out);
diff --git 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java
 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java
index e992259dd1..945d7b579f 100644
--- 
a/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java
+++ 
b/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java
@@ -82,7 +82,7 @@ final class MemoryUsageSupport implements 
NotificationListener, ServiceListener
     private long nextDumpTime = -1;
 
     // log service
-    private ServiceReference logServiceReference;
+    private ServiceReference<?> logServiceReference;
     private Object logService;
 
     MemoryUsageSupport(final BundleContext context)

Reply via email to