You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/08/05 21:13:07 UTC

svn commit: r1694287 - /felix/trunk/webconsole-plugins/ds/src/main/java/org/apache/felix/webconsole/plugins/ds/internal/WebConsolePlugin.java

Author: cziegeler
Date: Wed Aug  5 19:13:06 2015
New Revision: 1694287

URL: http://svn.apache.org/r1694287
Log:
Fix class cast exception if pid is string[] or collection

Modified:
    felix/trunk/webconsole-plugins/ds/src/main/java/org/apache/felix/webconsole/plugins/ds/internal/WebConsolePlugin.java

Modified: felix/trunk/webconsole-plugins/ds/src/main/java/org/apache/felix/webconsole/plugins/ds/internal/WebConsolePlugin.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole-plugins/ds/src/main/java/org/apache/felix/webconsole/plugins/ds/internal/WebConsolePlugin.java?rev=1694287&r1=1694286&r2=1694287&view=diff
==============================================================================
--- felix/trunk/webconsole-plugins/ds/src/main/java/org/apache/felix/webconsole/plugins/ds/internal/WebConsolePlugin.java (original)
+++ felix/trunk/webconsole-plugins/ds/src/main/java/org/apache/felix/webconsole/plugins/ds/internal/WebConsolePlugin.java Wed Aug  5 19:13:06 2015
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -263,16 +264,43 @@ class WebConsolePlugin extends SimpleWeb
 
         final Map<String, Object> props = component.properties;
 
-        final String pid = (String) (props != null ? props.get(Constants.SERVICE_PID)
-            : null);
+        String pid = null;
+        String configurationPid = null;
+        final Object obj = props != null ? props.get(Constants.SERVICE_PID) : null;
+        if ( obj instanceof String )
+        {
+            pid = (String)obj;
+            configurationPid = pid;
+        }
+        else if ( obj instanceof String[] )
+        {
+            final String[] arr = (String[])obj;
+            if ( arr.length > 0 )
+            {
+                pid = Arrays.toString(arr);
+                configurationPid = arr[0];
+            }
+        }
+        else if ( obj instanceof Collection )
+        {
+            final Collection<?> col = (Collection<?>)obj;
+            if ( !col.isEmpty() )
+            {
+                pid = col.toString();
+                configurationPid = col.iterator().next().toString();
+            }
+        }
         if (pid != null)
         {
             jw.key("pid"); //$NON-NLS-1$
             jw.value(pid);
-            if (isConfigurable(this.getBundleContext().getBundle(0).getBundleContext().getBundle(component.description.bundle.id), pid))
+            if ( configurationPid != null )
             {
-                jw.key("configurable"); //$NON-NLS-1$
-                jw.value(pid);
+                if (isConfigurable(this.getBundleContext().getBundle(0).getBundleContext().getBundle(component.description.bundle.id), configurationPid))
+                {
+                    jw.key("configurable"); //$NON-NLS-1$
+                    jw.value(configurationPid);
+                }
             }
         }