From d3e7858205e349aa8ce712d084f33b05dae684b3 Mon Sep 17 00:00:00 2001 From: Krystian Panek Date: Thu, 14 Dec 2023 22:52:38 +0100 Subject: [PATCH 1/2] Jakarta migration --- pom.xml | 38 +++-------- .../plugins/search/SearchActivator.java | 41 +++++++++--- .../plugins/search/SearchHttpTracker.java | 65 ------------------- .../plugins/search/plugin/AbstractPlugin.java | 35 ++++------ .../search/rest/BundleAssembleServlet.java | 10 ++- .../search/rest/BundleClassesServlet.java | 6 +- .../search/rest/BundleDownloadServlet.java | 6 +- .../plugins/search/rest/ByPhraseServlet.java | 6 +- .../search/rest/ClassDecompileServlet.java | 6 +- .../search/rest/ClassSearchServlet.java | 6 +- .../search/rest/FileDownloadServlet.java | 6 +- .../plugins/search/rest/RestParams.java | 2 +- .../plugins/search/rest/RestServlet.java | 4 +- .../search/rest/SourceGenerateServlet.java | 6 +- .../plugins/search/utils/JsonUtils.java | 2 +- .../search/utils/io/FileDownloader.java | 3 +- 16 files changed, 85 insertions(+), 157 deletions(-) delete mode 100644 src/main/java/com/neva/felix/webconsole/plugins/search/SearchHttpTracker.java diff --git a/pom.xml b/pom.xml index ec5de92..f5ec36d 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ com.neva.felix search-webconsole-plugin bundle - 2.0.0 + 2.0.1-SNAPSHOT search-webconsole-plugin Search everywhere plugin for Apache Felix Web Console 2017 @@ -64,27 +64,6 @@ - - - - false - - central - bintray - https://jcenter.bintray.com - - - - - - false - - central - bintray-plugins - https://jcenter.bintray.com - - - @@ -122,9 +101,10 @@ org.osgi.service.cm;version="[1.2,2)", org.osgi.service.metatype;version="[1.1,2)", org.osgi.util.tracker;version="[1.5.1,2)", - javax.servlet; - javax.servlet.http;version="[2.3,4)", - org.apache.felix.webconsole;version="[3.0,4)" + jakarta.servlet;version="[2.3,4)", + jakarta.servlet.http;version="[2.3,4)", + org.apache.felix.webconsole;version="[4.9,5)", + org.apache.felix.webconsole.servlet;version="[4.9,5)" com.neva.felix.webconsole.plugins.search.*, @@ -214,13 +194,13 @@ org.apache.felix org.apache.felix.webconsole - 3.0.0 + 4.9.6 provided - javax.servlet - servlet-api - 2.3 + jakarta.servlet + jakarta.servlet-api + 6.0.0 provided diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/SearchActivator.java b/src/main/java/com/neva/felix/webconsole/plugins/search/SearchActivator.java index 080f033..0cd4a44 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/SearchActivator.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/SearchActivator.java @@ -3,34 +3,59 @@ import com.neva.felix.webconsole.plugins.search.plugin.AbstractPlugin; import com.neva.felix.webconsole.plugins.search.plugin.SearchPlugin; import com.google.common.collect.ImmutableSet; +import com.neva.felix.webconsole.plugins.search.rest.*; +import jakarta.servlet.Servlet; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; +import java.util.LinkedList; +import java.util.List; import java.util.Set; public class SearchActivator implements BundleActivator { - private SearchHttpTracker httpTracker; + private final List services = new LinkedList<>(); @Override public void start(BundleContext bundleContext) throws Exception { for (AbstractPlugin plugin : getPlugins(bundleContext)) { - plugin.register(); + ServiceRegistration service = bundleContext.registerService(Servlet.class.getName(), this, plugin.getProps()); + if (service != null) { + services.add(service); + } + } + for (RestServlet servlet : getServlets(bundleContext)) { + ServiceRegistration service = bundleContext.registerService(Servlet.class.getName(), servlet, servlet.getProps()); + if (service != null) { + services.add(service); + } } - - httpTracker = new SearchHttpTracker(bundleContext); - httpTracker.open(); } @Override public void stop(BundleContext bundleContext) throws Exception { - httpTracker.close(); - httpTracker = null; + for (ServiceRegistration service : services) { + service.unregister(); + } } private Set getPlugins(BundleContext bundleContext) { - return ImmutableSet.of( + return ImmutableSet.of( new SearchPlugin(bundleContext) ); } + + private ImmutableSet getServlets(BundleContext context) { + return ImmutableSet.of( + new ByPhraseServlet(context), + new BundleDownloadServlet(context), + new BundleClassesServlet(context), + new ClassDecompileServlet(context), + new ClassSearchServlet(context), + new SourceGenerateServlet(context), + new FileDownloadServlet(context), + new BundleAssembleServlet(context) + ); + } } diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/SearchHttpTracker.java b/src/main/java/com/neva/felix/webconsole/plugins/search/SearchHttpTracker.java deleted file mode 100644 index 88937c5..0000000 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/SearchHttpTracker.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.neva.felix.webconsole.plugins.search; - -import com.neva.felix.webconsole.plugins.search.rest.*; -import com.google.common.collect.ImmutableSet; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.osgi.service.http.HttpService; -import org.osgi.service.http.NamespaceException; -import org.osgi.util.tracker.ServiceTracker; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.ServletException; -import java.util.Set; - -public class SearchHttpTracker extends ServiceTracker { - - private static final Logger LOG = LoggerFactory.getLogger(SearchHttpTracker.class); - - private final Set restServlets; - - public SearchHttpTracker(BundleContext context) { - super(context, HttpService.class.getName(), null); - this.restServlets = createRestServlets(); - } - - @Override - public Object addingService(ServiceReference reference) { - HttpService httpService = (HttpService) super.addingService(reference); - if (httpService == null) - return null; - - try { - for (RestServlet restServlet : restServlets) { - httpService.registerServlet(restServlet.getAlias(), restServlet, restServlet.createProps(), null); - } - } catch (NamespaceException | ServletException e) { - LOG.error("Cannot register REST servlet for search webconsole plugin.", e); - } - - return httpService; - } - - public void removedService(ServiceReference reference, Object service) { - HttpService httpService = (HttpService) service; - for (RestServlet restServlet : restServlets) { - httpService.unregister(restServlet.getAlias()); - } - - super.removedService(reference, service); - } - - private ImmutableSet createRestServlets() { - return ImmutableSet.of( - new ByPhraseServlet(context), - new BundleDownloadServlet(context), - new BundleClassesServlet(context), - new ClassDecompileServlet(context), - new ClassSearchServlet(context), - new SourceGenerateServlet(context), - new FileDownloadServlet(context), - new BundleAssembleServlet(context) - ); - } -} diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/plugin/AbstractPlugin.java b/src/main/java/com/neva/felix/webconsole/plugins/search/plugin/AbstractPlugin.java index d844c26..045d883 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/plugin/AbstractPlugin.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/plugin/AbstractPlugin.java @@ -1,20 +1,19 @@ package com.neva.felix.webconsole.plugins.search.plugin; import com.google.common.collect.ImmutableMap; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.text.StrSubstitutor; -import org.apache.felix.webconsole.AbstractWebConsolePlugin; +import org.apache.felix.webconsole.servlet.AbstractServlet; import org.osgi.framework.BundleContext; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.net.URL; import java.util.Dictionary; import java.util.Hashtable; -public abstract class AbstractPlugin extends AbstractWebConsolePlugin { +public abstract class AbstractPlugin extends AbstractServlet { public static final String CATEGORY = "OSGi"; @@ -25,7 +24,7 @@ public AbstractPlugin(BundleContext bundleContext) { } @Override - protected void renderContent(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + public void renderContent(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { final String common = readTemplateFile("/search/common.html"); final String specific = readTemplateFile("/" + getLabel() + "/plugin.html"); final String content = StrSubstitutor.replace(specific, ImmutableMap.of("common", common)); @@ -33,7 +32,11 @@ protected void renderContent(HttpServletRequest request, HttpServletResponse res response.getWriter().write(content); } - protected Dictionary createProps() { + public abstract String getLabel(); + + public abstract String getTitle(); + + public Dictionary getProps() { final Dictionary props = new Hashtable<>(); props.put("felix.webconsole.label", getLabel()); @@ -41,18 +44,4 @@ protected Dictionary createProps() { return props; } - - public void register() { - bundleContext.registerService(Servlet.class.getName(), this, createProps()); - } - - public URL getResource(final String path) { - String prefix = "/" + getLabel() + "/"; - if (path.startsWith(prefix)) { - return this.getClass().getResource(path); - } - - return null; - } - } diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleAssembleServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleAssembleServlet.java index 88ea45c..b8d6def 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleAssembleServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleAssembleServlet.java @@ -3,18 +3,16 @@ import static com.neva.felix.webconsole.plugins.search.utils.JsonUtils.MessageType; import static com.neva.felix.webconsole.plugins.search.utils.JsonUtils.writeMessage; -import com.google.common.collect.Lists; import com.neva.felix.webconsole.plugins.search.core.BundleJar; import com.neva.felix.webconsole.plugins.search.core.OsgiExplorer; import com.neva.felix.webconsole.plugins.search.core.SearchMonitor; import com.neva.felix.webconsole.plugins.search.core.bundleassemble.BundleAssembleJob; -import java.io.File; import java.io.IOException; -import java.util.List; import java.util.Set; -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.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleClassesServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleClassesServlet.java index fd88328..ccd9902 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleClassesServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleClassesServlet.java @@ -7,13 +7,13 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.List; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleDownloadServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleDownloadServlet.java index a4e554e..2f68690 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleDownloadServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/BundleDownloadServlet.java @@ -4,13 +4,13 @@ import com.neva.felix.webconsole.plugins.search.core.SearchPaths; import com.neva.felix.webconsole.plugins.search.utils.JsonUtils; import com.neva.felix.webconsole.plugins.search.utils.io.FileDownloader; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; -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; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ByPhraseServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ByPhraseServlet.java index 17d03d5..4450921 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ByPhraseServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ByPhraseServlet.java @@ -5,13 +5,13 @@ import com.neva.felix.webconsole.plugins.search.core.SearchService; import com.google.common.collect.Lists; import com.google.common.primitives.Ints; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.osgi.framework.BundleContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Collections; import java.util.List; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassDecompileServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassDecompileServlet.java index c448b16..8ebc789 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassDecompileServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassDecompileServlet.java @@ -5,13 +5,13 @@ import com.neva.felix.webconsole.plugins.search.core.SearchPaths; import com.neva.felix.webconsole.plugins.search.decompiler.Decompilers; import com.neva.felix.webconsole.plugins.search.utils.JsonUtils; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassSearchServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassSearchServlet.java index 7f48728..9575339 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassSearchServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/ClassSearchServlet.java @@ -4,13 +4,13 @@ import com.neva.felix.webconsole.plugins.search.core.OsgiExplorer; import com.neva.felix.webconsole.plugins.search.core.SearchMonitor; import com.neva.felix.webconsole.plugins.search.core.classsearch.ClassSearchJob; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Set; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/FileDownloadServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/FileDownloadServlet.java index 60ad959..51861fc 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/FileDownloadServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/FileDownloadServlet.java @@ -2,14 +2,14 @@ import com.neva.felix.webconsole.plugins.search.core.SearchPaths; import com.neva.felix.webconsole.plugins.search.utils.io.FileDownloader; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -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; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestParams.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestParams.java index f818185..ca310f2 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestParams.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestParams.java @@ -2,11 +2,11 @@ import com.google.common.collect.Lists; import com.neva.felix.webconsole.plugins.search.decompiler.Decompilers; +import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; -import javax.servlet.http.HttpServletRequest; import java.util.Collections; import java.util.List; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestServlet.java index b0b69b9..555c462 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/RestServlet.java @@ -2,9 +2,9 @@ import com.neva.felix.webconsole.plugins.search.core.SearchPaths; import com.neva.felix.webconsole.plugins.search.utils.TemplateRenderer; +import jakarta.servlet.http.HttpServlet; import org.osgi.framework.BundleContext; -import javax.servlet.http.HttpServlet; import java.util.Dictionary; import java.util.Hashtable; @@ -21,7 +21,7 @@ public RestServlet(BundleContext bundleContext) { protected abstract String getAliasName(); - public Dictionary createProps() { + public Dictionary getProps() { Dictionary props = new Hashtable<>(); props.put("alias", getAlias()); diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/SourceGenerateServlet.java b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/SourceGenerateServlet.java index 38dfff7..7ebec46 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/rest/SourceGenerateServlet.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/rest/SourceGenerateServlet.java @@ -4,13 +4,13 @@ import com.neva.felix.webconsole.plugins.search.core.OsgiExplorer; import com.neva.felix.webconsole.plugins.search.core.SearchMonitor; import com.neva.felix.webconsole.plugins.search.core.sourcegenerator.SourceGeneratorJob; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Set; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/utils/JsonUtils.java b/src/main/java/com/neva/felix/webconsole/plugins/search/utils/JsonUtils.java index 049c077..9c71d8d 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/utils/JsonUtils.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/utils/JsonUtils.java @@ -3,8 +3,8 @@ import com.google.common.collect.ImmutableMap; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import jakarta.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Collections; import java.util.Map; diff --git a/src/main/java/com/neva/felix/webconsole/plugins/search/utils/io/FileDownloader.java b/src/main/java/com/neva/felix/webconsole/plugins/search/utils/io/FileDownloader.java index f845b5d..ec6db8f 100644 --- a/src/main/java/com/neva/felix/webconsole/plugins/search/utils/io/FileDownloader.java +++ b/src/main/java/com/neva/felix/webconsole/plugins/search/utils/io/FileDownloader.java @@ -1,6 +1,7 @@ package com.neva.felix.webconsole.plugins.search.utils.io; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; + import java.io.IOException; import java.io.InputStream; From a9fd45bd44dc13aaa1ef6b9a494482c4776474ea Mon Sep 17 00:00:00 2001 From: Krystian Panek Date: Thu, 14 Dec 2023 22:58:10 +0100 Subject: [PATCH 2/2] Minor --- pom.xml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index f5ec36d..23ea8bb 100644 --- a/pom.xml +++ b/pom.xml @@ -95,16 +95,12 @@ ${project.description} com.neva.felix.webconsole.plugins.search com.neva.felix.webconsole.plugins.search.SearchActivator - javax.management.*,javax.lang.*,org.slf4j.*,org.osgi.* + javax.management.*,javax.lang.*,org.slf4j.*,org.osgi.*,jakarta.servlet.*,org.apache.felix.webconsole.* org.osgi.service.log;version="[1.3,2)", org.osgi.service.cm;version="[1.2,2)", org.osgi.service.metatype;version="[1.1,2)", org.osgi.util.tracker;version="[1.5.1,2)", - jakarta.servlet;version="[2.3,4)", - jakarta.servlet.http;version="[2.3,4)", - org.apache.felix.webconsole;version="[4.9,5)", - org.apache.felix.webconsole.servlet;version="[4.9,5)" com.neva.felix.webconsole.plugins.search.*,