You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ma...@apache.org on 2010/08/20 14:21:17 UTC

svn commit: r987473 - /felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/ServiceUtil.java

Author: marrs
Date: Fri Aug 20 12:21:17 2010
New Revision: 987473

URL: http://svn.apache.org/viewvc?rev=987473&view=rev
Log:
Made the toString(ServiceReference) more robust with respect to dealing with references that belong to services that are no longer registered.

Modified:
    felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/ServiceUtil.java

Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/ServiceUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/ServiceUtil.java?rev=987473&r1=987472&r2=987473&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/ServiceUtil.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/ServiceUtil.java Fri Aug 20 12:21:17 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.felix.dm;
 
+import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 
@@ -82,21 +83,30 @@ public class ServiceUtil {
      */
     public static String toString(ServiceReference ref) {
         if (ref == null) {
-            throw new IllegalArgumentException("Service reference cannot be null.");
+            return "ServiceReference[null]";
         }
-        StringBuffer buf = new StringBuffer();
-        
-        buf.append("ServiceReference[" + ref.getBundle().getBundleId() + "]{");
-        String[] keys = ref.getPropertyKeys();
-        for (int i = 0; i < keys.length; i++) {
-            if (i > 0) { 
-                buf.append(','); 
+        else {
+            StringBuffer buf = new StringBuffer();
+            Bundle bundle = ref.getBundle();
+            if (bundle != null) {
+                buf.append("ServiceReference[");
+                buf.append(bundle.getBundleId());
+                buf.append("]{");
             }
-            buf.append(keys[i]);
-            buf.append('=');
-            buf.append(ref.getProperty(keys[i]));
+            else {
+                buf.append("ServiceReference[unregistered]{");
+            }
+            String[] keys = ref.getPropertyKeys();
+            for (int i = 0; i < keys.length; i++) {
+                if (i > 0) { 
+                    buf.append(','); 
+                }
+                buf.append(keys[i]);
+                buf.append('=');
+                buf.append(ref.getProperty(keys[i]));
+            }
+            buf.append("}");
+            return buf.toString();
         }
-        buf.append("}");
-        return buf.toString();
     }
 }