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)