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 e488d9968d FELIX-6631 : Migrate webconsole plugins to jakarta.servlet
api
e488d9968d is described below
commit e488d9968dbeee5e14251e5fe3200b712b3e730f
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Tue Aug 22 13:06:54 2023 +0200
FELIX-6631 : Migrate webconsole plugins to jakarta.servlet api
---
.../plugins/event/internal/PluginServlet.java | 52 +++-----
.../webconsole/plugins/obr/internal/Activator.java | 6 +-
.../plugins/obr/internal/WebConsolePlugin.java | 70 ++++++-----
webconsole-plugins/script-console/pom.xml | 42 +++----
.../internal/ScriptConsolePlugin.java | 135 +++++++++------------
.../internal/ScriptEngineManager.java | 4 +-
.../integration/ServerConfiguration.java | 4 +-
7 files changed, 132 insertions(+), 181 deletions(-)
diff --git
a/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
b/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
index 3bac3a82d5..7ea923dc50 100644
---
a/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
+++
b/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
@@ -21,7 +21,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
-import java.net.URL;
import java.util.Date;
import java.util.Dictionary;
import java.util.Iterator;
@@ -45,11 +44,11 @@ public class PluginServlet extends HttpServlet
private static final long serialVersionUID = -8601361741848077124L;
- private static final String ACTION_POST = "post"; //$NON-NLS-1$
- private static final String ACTION_SEND = "send"; //$NON-NLS-1$
- private static final String ACTION_CLEAR = "clear"; //$NON-NLS-1$
+ private static final String ACTION_POST = "post";
+ private static final String ACTION_SEND = "send";
+ private static final String ACTION_CLEAR = "clear";
- private static final String PARAMETER_ACTION = "action"; //$NON-NLS-1$
+ private static final String PARAMETER_ACTION = "action";
/** The event collector. */
private final EventCollector collector;
@@ -64,7 +63,7 @@ public class PluginServlet extends HttpServlet
public PluginServlet()
{
this.collector = new EventCollector();
- TEMPLATE = readTemplateFile(getClass(), "/res/events.html");
//$NON-NLS-1$
+ TEMPLATE = readTemplateFile(getClass(), "/res/events.html");
}
private final String readTemplateFile(final Class<?> clazz, final String
templateFile)
@@ -81,7 +80,7 @@ public class PluginServlet extends HttpServlet
{
baos.write(data, 0, len);
}
- return baos.toString("UTF-8"); //$NON-NLS-1$
+ return baos.toString("UTF-8");
}
catch (IOException e)
{
@@ -106,12 +105,12 @@ public class PluginServlet extends HttpServlet
// template file does not exist, return an empty string
log("readTemplateFile: File '" + templateFile + "' not found through
class "
+ clazz);
- return ""; //$NON-NLS-1$
+ return "";
}
private static final Event newEvent(HttpServletRequest request)
{
- String topic = request.getParameter("topic"); //$NON-NLS-1$
+ String topic = request.getParameter("topic");
return new Event(topic,
PropertiesEditorSupport.convertProperties(request));
}
@@ -135,8 +134,8 @@ public class PluginServlet extends HttpServlet
this.collector.clear();
}
// we always send back the json data
- resp.setContentType( "application/json" ); //$NON-NLS-1$
- resp.setCharacterEncoding( "utf-8" ); //$NON-NLS-1$
+ resp.setContentType( "application/json" );
+ resp.setCharacterEncoding( "utf-8" );
renderJSON( resp.getWriter() );
}
@@ -196,17 +195,13 @@ public class PluginServlet extends HttpServlet
writer.endObject();
}
-
@Override
- protected void doGet( HttpServletRequest request, HttpServletResponse
response )
- throws ServletException, IOException
- {
-
+ public void doGet( HttpServletRequest request, HttpServletResponse
response )
+ throws ServletException, IOException {
final String info = request.getPathInfo();
- if ( info.endsWith( ".json" ) ) //$NON-NLS-1$
- {
- response.setContentType( "application/json" ); //$NON-NLS-1$
- response.setCharacterEncoding( "UTF-8" ); //$NON-NLS-1$
+ if ( info.endsWith( ".json" ) ) {
+ response.setContentType( "application/json" );
+ response.setCharacterEncoding( "UTF-8" );
PrintWriter pw = response.getWriter();
this.renderJSON( pw );
@@ -215,29 +210,12 @@ public class PluginServlet extends HttpServlet
return;
}
- this.renderContent( request, response );
- }
-
-
- protected void renderContent( HttpServletRequest request,
HttpServletResponse response )
- throws ServletException, IOException
- {
final PrintWriter pw = response.getWriter();
//final String appRoot = ( String ) request.getAttribute(
"felix.webconsole.appRoot" );
//pw.println( "<script src='" + appRoot + "/events/res/ui/" +
"events.js" + "' type='text/javascript'></script>" );
pw.print(TEMPLATE);
}
- public URL getResource(String path)
- {
- if ( path.startsWith("/events/res/ui/") ) //$NON-NLS-1$
- {
- return this.getClass().getResource(path.substring(7));
- }
- return null;
- }
-
-
private void eventJson( JSONWriter jw, EventInfo info, int index, final
long start, final float scale )
throws IOException
{
diff --git
a/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/Activator.java
b/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/Activator.java
index 3e94b5f79e..b864466905 100644
---
a/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/Activator.java
+++
b/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/Activator.java
@@ -41,9 +41,9 @@ public class Activator implements BundleActivator,
ServiceTrackerCustomizer
public final void start(BundleContext context) throws Exception
{
this.context = context;
- Filter filter = context.createFilter("(|" //$NON-NLS-1$
- + '(' + Constants.OBJECTCLASS +
"=org.osgi.service.obr.RepositoryAdmin)" //$NON-NLS-1$
- + '(' + Constants.OBJECTCLASS +
"=org.apache.felix.bundlerepository.RepositoryAdmin)" //$NON-NLS-1$
+ Filter filter = context.createFilter("(|"
+ + '(' + Constants.OBJECTCLASS +
"=org.osgi.service.obr.RepositoryAdmin)"
+ + '(' + Constants.OBJECTCLASS +
"=org.apache.felix.bundlerepository.RepositoryAdmin)"
+ ')');
this.tracker = new ServiceTracker(context, filter, this);
this.tracker.open();
diff --git
a/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/WebConsolePlugin.java
b/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/WebConsolePlugin.java
index cef9b1025c..22b00c4cf8 100644
---
a/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/WebConsolePlugin.java
+++
b/webconsole-plugins/obr/src/main/java/org/apache/felix/webconsole/plugins/obr/internal/WebConsolePlugin.java
@@ -20,8 +20,6 @@ package org.apache.felix.webconsole.plugins.obr.internal;
import java.io.IOException;
-import java.net.URLDecoder;
-import java.nio.charset.StandardCharsets;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
@@ -45,10 +43,10 @@ import jakarta.servlet.Servlet;
*/
class WebConsolePlugin extends AbstractServlet
{
- private static final String LABEL = "obr"; //$NON-NLS-1$
- private static final String TITLE = "%obr.pluginTitle"; //$NON-NLS-1$
- private static final String CATEGORY = "OSGi"; //$NON-NLS-1$
- private static final String CSS[] = { "/" + LABEL + "/res/plugin.css" };
//$NON-NLS-1$ //$NON-NLS-2$
+ private static final String LABEL = "obr";
+ private static final String TITLE = "%obr.pluginTitle";
+ private static final String CATEGORY = "OSGi";
+ private static final String CSS[] = { "/" + LABEL + "/res/plugin.css" };
// templates
private final String TEMPLATE;
@@ -122,21 +120,21 @@ class WebConsolePlugin extends AbstractServlet
return;
}
- final String action = request.getParameter( "action" ); //$NON-NLS-1$
- final String deploy = request.getParameter( "deploy" ); //$NON-NLS-1$
- final String deploystart = request.getParameter( "deploystart" );
//$NON-NLS-1$
- final String optional = request.getParameter( "optional" );
//$NON-NLS-1$
+ final String action = request.getParameter( "action" );
+ final String deploy = request.getParameter( "deploy" );
+ final String deploystart = request.getParameter( "deploystart" );
+ final String optional = request.getParameter( "optional" );
if ( action != null )
{
- doAction( action, request.getParameter( "url" ) ); //$NON-NLS-1$
+ doAction( action, request.getParameter( "url" ) );
response.getWriter().print( getData( request ) );
return;
}
if ( deploy != null || deploystart != null )
{
- doDeploy( request.getParameterValues( "bundle" ), deploystart !=
null, optional != null ); //$NON-NLS-1$
+ doDeploy( request.getParameterValues( "bundle" ), deploystart !=
null, optional != null );
doGet( request, response );
return;
}
@@ -184,7 +182,7 @@ class WebConsolePlugin extends AbstractServlet
AbstractBundleRepositoryRenderHelper helper = getHelper();
if ( helper == null || !helper.hasRepositoryAdmin() )
{
- return "{}"; //$NON-NLS-1$
+ return "{}";
}
RequestInfo info = new RequestInfo( request );
@@ -193,22 +191,22 @@ class WebConsolePlugin extends AbstractServlet
String list = info.getList();
if ( list != null )
{
- if ( "-".equals( list ) ) //$NON-NLS-1$
+ if ( "-".equals( list ) )
{
- StringBuffer sb = new StringBuffer( "(!(|" ); //$NON-NLS-1$
+ StringBuffer sb = new StringBuffer( "(!(|" );
for ( int c = 0; c < 26; c++ )
{
- sb.append( "(presentationname=" ).append( ( char ) ( 'a' +
c ) ) //$NON-NLS-1$
- .append( "*)(presentationname=" ).append( ( char ) ( 'A'
+ c ) ) //$NON-NLS-1$
- .append( "*)" ); //$NON-NLS-1$
+ sb.append( "(presentationname=" ).append( ( char ) ( 'a' +
c ) )
+ .append( "*)(presentationname=" ).append( ( char ) ( 'A'
+ c ) )
+ .append( "*)" );
}
- sb.append( "))" ); //$NON-NLS-1$
+ sb.append( "))" );
filter = sb.toString();
}
else
{
- filter = "(|(presentationname=" + list.toLowerCase()
//$NON-NLS-1$
- + "*)(presentationname=" + list.toUpperCase() + "*))";
//$NON-NLS-1$ //$NON-NLS-2$
+ filter = "(|(presentationname=" + list.toLowerCase()
+ + "*)(presentationname=" + list.toUpperCase() + "*))";
}
}
else
@@ -218,33 +216,33 @@ class WebConsolePlugin extends AbstractServlet
{
if ( query.indexOf( '=' ) > 0 )
{
- if ( query.startsWith( "(" ) ) //$NON-NLS-1$
+ if ( query.startsWith( "(" ) )
{
filter = query;
}
else
{
- filter = "(" + query + ")"; //$NON-NLS-1$ //$NON-NLS-2$
+ filter = "(" + query + ")";
}
}
else
{
- filter = "(|(presentationame=*" + query +
"*)(symbolicname=*" + query + "*))"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ filter = "(|(presentationame=*" + query +
"*)(symbolicname=*" + query + "*))";
}
}
else
{
- StringBuffer sb = new StringBuffer( "(&" ); //$NON-NLS-1$
+ StringBuffer sb = new StringBuffer( "(&" );
for ( Enumeration e = request.getParameterNames();
e.hasMoreElements(); )
{
String k = ( String ) e.nextElement();
String v = request.getParameter( k );
if ( v != null && v.length() > 0
- && !"details".equals( k ) //$NON-NLS-1$
- && !"deploy".equals( k ) //$NON-NLS-1$
- && !"deploystart".equals( k ) //$NON-NLS-1$
- && !"bundle".equals( k ) //$NON-NLS-1$
- && !"optional".equals( k ) ) //$NON-NLS-1$
+ && !"details".equals( k )
+ && !"deploy".equals( k )
+ && !"deploystart".equals( k )
+ && !"bundle".equals( k )
+ && !"optional".equals( k ) )
{
sb.append( '(' ).append( k ).append( '=' ).append( v
).append( ')' );
}
@@ -303,7 +301,7 @@ class WebConsolePlugin extends AbstractServlet
{
if ( query == null )
{
- String query = URLDecoder.decode( request.getParameter(
"query" ), StandardCharsets.UTF_8 ); //$NON-NLS-1$
+ String query = request.getParameter( "query" );
boolean details = false;
if ( query == null && request.getPathInfo().length() > 5 )
{
@@ -313,12 +311,12 @@ class WebConsolePlugin extends AbstractServlet
if ( slash < 0 )
{
// symbolic name only, version ??
- query = "(symbolicname=" + path + ")"; //$NON-NLS-1$
//$NON-NLS-2$
+ query = "(symbolicname=" + path + ")";
}
else
{
- query = "(&(symbolicname=" + path.substring( 0, slash
) //$NON-NLS-1$
- + ")(version=" + path.substring( slash + 1 ) +
"))"; //$NON-NLS-1$ //$NON-NLS-2$
+ query = "(&(symbolicname=" + path.substring( 0, slash
)
+ + ")(version=" + path.substring( slash + 1 ) +
"))";
details = true;
}
}
@@ -334,10 +332,10 @@ class WebConsolePlugin extends AbstractServlet
{
if ( list == null )
{
- list = URLDecoder.decode( request.getParameter( "list" ),
StandardCharsets.UTF_8 ); //$NON-NLS-1$
+ list = request.getParameter( "list" );
if ( list == null &&
!request.getParameterNames().hasMoreElements() && getQuery() == null )
{
- list = "a"; //$NON-NLS-1$
+ list = "a";
}
}
return list;
diff --git a/webconsole-plugins/script-console/pom.xml
b/webconsole-plugins/script-console/pom.xml
index f645535729..ce2120b0d4 100644
--- a/webconsole-plugins/script-console/pom.xml
+++ b/webconsole-plugins/script-console/pom.xml
@@ -37,14 +37,13 @@
</description>
<properties>
- <pax-exam.version>4.6.0</pax-exam.version>
+ <pax-exam.version>4.13.5</pax-exam.version>
<bundle.build.name>
${basedir}/target
</bundle.build.name>
<bundle.file.name>
${bundle.build.name}/${project.build.finalName}.jar
</bundle.file.name>
- <felix.java.version>6</felix.java.version>
</properties>
<scm>
@@ -60,7 +59,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>
@@ -69,8 +68,7 @@
${project.artifactId}
</Bundle-SymbolicName>
<Import-Package>
- javax.servlet.*;version=2.3,
- org.apache.commons.io; version="[1.4,3)",
+ jakarta.servlet.*;version="[5,7)",
*
</Import-Package>
<Bundle-Activator>
@@ -160,31 +158,30 @@
</build>
<dependencies>
- <!-- Need to keep first to override conflicts in core and
- compendium jars-->
+ <!-- Keep first to avoid problems with framework api differences during
testing -->
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
- <version>5.4.0</version>
+ <version>7.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>4.2.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.2.0</version>
+ <artifactId>org.osgi.service.log</artifactId>
+ <version>1.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.4</version>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
+ <version>5.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -196,7 +193,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.webconsole</artifactId>
- <version>4.3.12</version>
+ <version>4.8.13-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -205,20 +202,13 @@
<version>1.11.8</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.5</version>
- <scope>provided</scope>
- </dependency>
-
<!-- testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
+ <version>4.13.2</version>
<scope>test</scope>
- <version>4.10</version>
</dependency>
<!-- Pax Exam Dependencies -->
<dependency>
@@ -260,13 +250,13 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.configadmin</artifactId>
- <version>1.6.0</version>
+ <version>1.9.26</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.http.jetty</artifactId>
- <version>2.2.0</version>
+ <version>5.0.7-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git
a/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptConsolePlugin.java
b/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptConsolePlugin.java
index 7c033dca13..feb7a2e8b3 100644
---
a/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptConsolePlugin.java
+++
b/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptConsolePlugin.java
@@ -18,30 +18,41 @@
*/
package org.apache.felix.webconsole.plugins.scriptconsole.internal;
-import org.apache.commons.fileupload.FileItem;
import org.apache.commons.io.IOUtils;
import org.apache.felix.utils.json.JSONWriter;
-import org.apache.felix.webconsole.AbstractWebConsolePlugin;
-import org.apache.felix.webconsole.DefaultVariableResolver;
-import org.apache.felix.webconsole.SimpleWebConsolePlugin;
-import org.apache.felix.webconsole.WebConsoleUtil;
+import org.apache.felix.webconsole.servlet.AbstractServlet;
+import org.apache.felix.webconsole.servlet.RequestVariableResolver;
+import org.apache.felix.webconsole.servlet.ServletConstants;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.log.LogService;
-import javax.script.*;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.util.ArrayList;
+import jakarta.servlet.Servlet;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Part;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Dictionary;
+import java.util.Hashtable;
import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-class ScriptConsolePlugin extends SimpleWebConsolePlugin
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineFactory;
+import javax.script.ScriptException;
+import javax.script.SimpleBindings;
+import javax.script.SimpleScriptContext;
+
+class ScriptConsolePlugin extends AbstractServlet
{
public static final String NAME = "sc";
@@ -52,47 +63,44 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
private final String TEMPLATE;
private final Logger log;
private final ScriptEngineManager scriptEngineManager;
- private final ServiceRegistration registration;
+ private final ServiceRegistration<Servlet> registration;
+ private final BundleContext bundleContext;
public ScriptConsolePlugin(BundleContext bundleContext, Logger logger,
ScriptEngineManager scriptEngineManager)
{
- super(NAME, TITLE, processFileNames(CSS));
+ this.bundleContext = bundleContext;
this.log = logger;
this.scriptEngineManager = scriptEngineManager;
- TEMPLATE = readTemplateFile("/templates/script-console.html");
- super.activate(bundleContext);
+ try {
+ TEMPLATE = readTemplateFile("/templates/script-console.html");
+ } catch (IOException e) {
+ throw new RuntimeException("Unable to read template file", e);
+ }
- Properties props = new Properties();
+ Dictionary<String, Object> props = new Hashtable<>();
props.put(Constants.SERVICE_VENDOR, "Apache Software Foundation");
props.put(Constants.SERVICE_DESCRIPTION, "Script Console Web Console
Plugin");
- props.put("felix.webconsole.label", ScriptConsolePlugin.NAME);
- props.put("felix.webconsole.title", "Script Console");
-
- registration =
getBundleContext().registerService(Servlet.class.getName(), this,
- props);
- }
-
+ props.put(ServletConstants.PLUGIN_LABEL, NAME);
+ props.put(ServletConstants.PLUGIN_TITLE, TITLE);
+ props.put(ServletConstants.PLUGIN_CATEGORY, CATEGORY);
+ props.put(ServletConstants.PLUGIN_CSS_REFERENCES,
processFileNames(CSS));
- public String getCategory()
- {
- return CATEGORY;
+ registration = bundleContext.registerService(Servlet.class, this,
props);
}
- @SuppressWarnings("unchecked")
@Override
- protected void renderContent(HttpServletRequest request,
HttpServletResponse response)
+ public void renderContent(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException
{
final PrintWriter pw = response.getWriter();
- DefaultVariableResolver varResolver = (DefaultVariableResolver)
WebConsoleUtil.getVariableResolver(request);
+ RequestVariableResolver varResolver =
this.getVariableResolver(request);
varResolver.put("__scriptConfig__", getScriptConfig());
pw.println(TEMPLATE);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException
- {
+ throws ServletException, IOException {
final String contentType = getContentType(req);
resp.setContentType(contentType);
if (contentType.startsWith("text/"))
@@ -102,10 +110,10 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
final String script = getCodeValue(req);
final Bindings bindings = new SimpleBindings();
final PrintWriter pw = resp.getWriter();
- final ScriptHelper osgi = new ScriptHelper(getBundleContext());
+ final ScriptHelper osgi = new ScriptHelper(this.bundleContext);
final Writer errorWriter = new LogWriter(log);
- final Reader reader = new StringReader(script)
- ;
+ final Reader reader = new StringReader(script);
+
//Populate bindings
bindings.put("request", req);
bindings.put("reader", reader);
@@ -115,12 +123,10 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
//Also expose the bundleContext to simplify scripts interaction with
the
//enclosing OSGi container
- bindings.put("bundleContext", getBundleContext());
-
- final String lang = WebConsoleUtil.getParameter(req, "lang");
- final boolean webClient =
"webconsole".equals(WebConsoleUtil.getParameter(req,
- "client"));
+ bindings.put("bundleContext", this.bundleContext);
+ final String lang = req.getParameter("lang");
+ final boolean webClient =
"webconsole".equals(req.getParameter("client"));
SimpleScriptContext sc = new SimpleScriptContext();
sc.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
@@ -131,7 +137,7 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
try
{
log.log(LogService.LOG_DEBUG, "Executing script" + script);
- eval(script, lang, sc);
+ eval(script, lang, sc);
}
catch (Throwable t)
{
@@ -165,9 +171,9 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
}
- private String getCodeValue(HttpServletRequest req) throws IOException
+ private String getCodeValue(HttpServletRequest req) throws IOException,
ServletException
{
- String script = WebConsoleUtil.getParameter(req, "code");
+ String script = req.getParameter("code");
if (script == null)
{
script = getContentFromFilePart(req, "code");
@@ -181,7 +187,7 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
private String getContentType(HttpServletRequest req)
{
- String passedContentType = WebConsoleUtil.getParameter(req,
"responseContentType");
+ String passedContentType = req.getParameter("responseContentType");
if (passedContentType != null)
{
return passedContentType;
@@ -262,27 +268,22 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
}
private String getContentFromFilePart(HttpServletRequest req, String
paramName)
- throws IOException
+ throws IOException, ServletException
{
- String value = WebConsoleUtil.getParameter(req, paramName);
+ String value = req.getParameter(paramName);
if (value != null)
{
return value;
}
- final Map params = (Map)
req.getAttribute(AbstractWebConsolePlugin.ATTR_FILEUPLOAD);
- if (params == null)
- {
- return null;
- }
- FileItem[] codeFile = getFileItems(params, paramName);
- if (codeFile.length == 0)
+ final Part part = req.getPart(paramName);
+ if (part == null)
{
return null;
}
InputStream is = null;
try
{
- is = codeFile[0].getInputStream();
+ is = part.getInputStream();
StringWriter sw = new StringWriter();
IOUtils.copy(is, sw, "utf-8");
return sw.toString();
@@ -293,26 +294,8 @@ class ScriptConsolePlugin extends SimpleWebConsolePlugin
}
}
- private FileItem[] getFileItems(Map params, String name)
- {
- final List<FileItem> files = new ArrayList<FileItem>();
- FileItem[] items = (FileItem[]) params.get(name);
- if (items != null)
- {
- for (int i = 0; i < items.length; i++)
- {
- if (!items[i].isFormField() && items[i].getSize() > 0)
- {
- files.add(items[i]);
- }
- }
- }
- return files.toArray(new FileItem[files.size()]);
- }
-
public void dispose()
{
- super.deactivate();
if (registration != null)
{
registration.unregister();
diff --git
a/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptEngineManager.java
b/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptEngineManager.java
index ce335e29a6..a8847985ea 100644
---
a/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptEngineManager.java
+++
b/webconsole-plugins/script-console/src/main/java/org/apache/felix/webconsole/plugins/scriptconsole/internal/ScriptEngineManager.java
@@ -204,8 +204,8 @@ class ScriptEngineManager implements BundleListener,
ServiceTrackerCustomizer
{
try
{
- Class<ScriptEngineFactory> clazz =
bundle.loadClass(className);
- ScriptEngineFactory spi = clazz.newInstance();
+ Class<ScriptEngineFactory> clazz =
(Class<ScriptEngineFactory>) bundle.loadClass(className);
+ ScriptEngineFactory spi =
clazz.getDeclaredConstructor().newInstance();
registerFactory(mgr, spi, null);
extensions.addAll(spi.getExtensions());
}
diff --git
a/webconsole-plugins/script-console/src/test/java/org/apache/felix/webconsole/plugins/scriptconsole/integration/ServerConfiguration.java
b/webconsole-plugins/script-console/src/test/java/org/apache/felix/webconsole/plugins/scriptconsole/integration/ServerConfiguration.java
index c53004fa5e..e716628753 100644
---
a/webconsole-plugins/script-console/src/test/java/org/apache/felix/webconsole/plugins/scriptconsole/integration/ServerConfiguration.java
+++
b/webconsole-plugins/script-console/src/test/java/org/apache/felix/webconsole/plugins/scriptconsole/integration/ServerConfiguration.java
@@ -81,10 +81,12 @@ public class ServerConfiguration
mavenBundle("org.ops4j.pax.logging", "pax-logging-api",
"1.7.0").startLevel(2),
mavenBundle("org.ops4j.pax.logging", "pax-logging-service",
"1.7.0").startLevel(2),
mavenBundle("org.apache.felix",
"org.apache.felix.configadmin").versionAsInProject(),
+ mavenBundle("org.apache.felix",
"org.apache.felix.http.servlet-api", "2.1.0"),
+ mavenBundle("org.owasp.encoder", "encoder", "1.2.3"),
mavenBundle("org.apache.felix",
"org.apache.felix.http.jetty").versionAsInProject(),
mavenBundle("org.apache.felix",
"org.apache.felix.webconsole").versionAsInProject(),
mavenBundle("commons-io", "commons-io").versionAsInProject(),
- wrappedBundle(mavenBundle("commons-fileupload",
"commons-fileupload").versionAsInProject()),
+ mavenBundle("commons-fileupload", "commons-fileupload", "1.5"),
mavenBundle("org.codehaus.groovy", "groovy-all", "2.1.0"),
frameworkProperty("osgi.clean").value("true"),
//
systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),