[FELIX-1994]Web Console admin,features and gogo plugins do not work with Equinox
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@900659 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/karaf/webconsole/admin/src/main/java/org/apache/felix/karaf/webconsole/admin/AdminPlugin.java b/karaf/webconsole/admin/src/main/java/org/apache/felix/karaf/webconsole/admin/AdminPlugin.java
index 71542f3..cd2d3c7 100644
--- a/karaf/webconsole/admin/src/main/java/org/apache/felix/karaf/webconsole/admin/AdminPlugin.java
+++ b/karaf/webconsole/admin/src/main/java/org/apache/felix/karaf/webconsole/admin/AdminPlugin.java
@@ -174,6 +174,15 @@
protected URL getResource(String path) {
path = path.substring(NAME.length() + 1);
+ if (path.length() == 0) {
+ //it means input parameter path is just plugin name like /admin but not real resource path.
+ //on felix the return url would be null in this case, which is correct expected behavior.
+ //but on equinox the return url is like bundleresource://184.fwk1674485910/,
+ //which cause NPE in AbstractWebConsolePlugin.spoolResource
+ //so just return null ensure it works both with felix and equinox
+ return null;
+ }
+
URL url = this.classLoader.getResource(path);
try {
InputStream ins = url.openStream();
diff --git a/karaf/webconsole/features/src/main/java/org/apache/felix/karaf/webconsole/features/FeaturesPlugin.java b/karaf/webconsole/features/src/main/java/org/apache/felix/karaf/webconsole/features/FeaturesPlugin.java
index ea2c087..4036b52 100644
--- a/karaf/webconsole/features/src/main/java/org/apache/felix/karaf/webconsole/features/FeaturesPlugin.java
+++ b/karaf/webconsole/features/src/main/java/org/apache/felix/karaf/webconsole/features/FeaturesPlugin.java
@@ -195,6 +195,15 @@
protected URL getResource( String path )
{
path = path.substring( NAME.length() + 1 );
+ if (path.length() == 0) {
+ //it means input parameter path is just plugin name like /features but not real resource path.
+ //on felix the return url would be null in this case, which is correct expected behavior.
+ //but on equinox the return url is like bundleresource://184.fwk1674485910/,
+ //which cause NPE in AbstractWebConsolePlugin.spoolResource
+ //so just return null ensure it works both with felix and equinox
+ return null;
+ }
+
URL url = this.classLoader.getResource( path );
try
{
diff --git a/karaf/webconsole/gogo/src/main/java/org/apache/felix/karaf/webconsole/gogo/GogoPlugin.java b/karaf/webconsole/gogo/src/main/java/org/apache/felix/karaf/webconsole/gogo/GogoPlugin.java
index ed61eac..8f2f3ec 100644
--- a/karaf/webconsole/gogo/src/main/java/org/apache/felix/karaf/webconsole/gogo/GogoPlugin.java
+++ b/karaf/webconsole/gogo/src/main/java/org/apache/felix/karaf/webconsole/gogo/GogoPlugin.java
@@ -135,6 +135,15 @@
protected URL getResource( String path )
{
path = path.substring( NAME.length() + 1 );
+ if (path.length() == 0) {
+ //it means input parameter path is just plugin name like /gogo but not real resource path.
+ //on felix the return url would be null in this case, which is correct expected behavior.
+ //but on equinox the return url is like bundleresource://184.fwk1674485910/,
+ //which cause NPE in AbstractWebConsolePlugin.spoolResource
+ //so just return null ensure it works both with felix and equinox
+ return null;
+ }
+
URL url = this.getClass().getClassLoader().getResource( path );
try
{