You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by db...@apache.org on 2010/05/24 11:47:59 UTC

svn commit: r947581 - /felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProxy.java

Author: dbaum
Date: Mon May 24 09:47:59 2010
New Revision: 947581

URL: http://svn.apache.org/viewvc?rev=947581&view=rev
Log:
avoid possible IllegalStateException if framework is stopped during CommandProxy method execution.

Modified:
    felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProxy.java

Modified: felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProxy.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProxy.java?rev=947581&r1=947580&r2=947581&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProxy.java (original)
+++ felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/CommandProxy.java Mon May 24 09:47:59 2010
@@ -38,23 +38,39 @@ public class CommandProxy implements Fun
         this.reference = reference;
         this.function = function;
     }
-    
+
     public CommandProxy(Object target, String function)
     {
         this.function = function;
         this.target = target;
     }
-    
+
     public Object getTarget()
     {
         return (context != null ? context.getService(reference) : target);
     }
 
+    public void ungetTarget()
+    {
+        if (context != null)
+        {
+            try
+            {
+                context.ungetService(reference);
+            }
+            catch (IllegalStateException e)
+            {
+                // ignore - probably due to shutdown
+                // java.lang.IllegalStateException: BundleContext is no longer valid
+            }
+        }
+    }
+
     public Object execute(CommandSession session, List<Object> arguments)
         throws Exception
     {
         Object tgt = getTarget();
-        
+
         try
         {
             if (tgt instanceof Function)
@@ -68,10 +84,7 @@ public class CommandProxy implements Fun
         }
         finally
         {
-            if (context != null)
-            {
-                context.ungetService(reference);
-            }
+            ungetTarget();
         }
     }
 }
\ No newline at end of file