You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by no...@apache.org on 2011/07/23 14:17:59 UTC

svn commit: r1150090 - in /aries/trunk/application/application-runtime-isolated/src/main: java/org/apache/aries/application/runtime/isolated/impl/ resources/OSGI-INF/blueprint/

Author: not
Date: Sat Jul 23 12:17:58 2011
New Revision: 1150090

URL: http://svn.apache.org/viewvc?rev=1150090&view=rev
Log:
ARIES-709 Update the application runtime isolated to do some tidy up if the bundle framework manager service goes away. This has the upshot that the application runtime doesn't take 5 minutes to shutdown anymore.

Modified:
    aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java
    aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java
    aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml

Modified: aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java?rev=1150090&r1=1150089&r2=1150090&view=diff
==============================================================================
--- aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java (original)
+++ aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextImpl.java Sat Jul 23 12:17:58 2011
@@ -43,9 +43,9 @@ import org.apache.aries.application.mana
 import org.apache.aries.application.management.BundleInfo;
 import org.apache.aries.application.management.UpdateException;
 import org.apache.aries.application.management.spi.framework.BundleFrameworkManager;
+import org.apache.aries.application.management.spi.repository.BundleRepository.BundleSuggestion;
 import org.apache.aries.application.management.spi.repository.BundleRepositoryManager;
 import org.apache.aries.application.management.spi.repository.ContextException;
-import org.apache.aries.application.management.spi.repository.BundleRepository.BundleSuggestion;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
 import org.slf4j.Logger;
@@ -58,6 +58,7 @@ public class ApplicationContextImpl impl
   private final AriesApplication _application;
   private final Set<Bundle> _bundles;
   private ApplicationState _state = ApplicationState.UNINSTALLED;
+  private boolean _closed;
   private final BundleRepositoryManager _bundleRepositoryManager;
   private final BundleFrameworkManager _bundleFrameworkManager;
 
@@ -415,4 +416,18 @@ public class ApplicationContextImpl impl
       }
     }
   }
+
+  public synchronized void close() throws BundleException
+  {
+    uninstall();
+    _closed = true;
+  }
+  
+  public synchronized void open() throws BundleException
+  {
+    if (_closed) {
+      install();
+      _closed = false;
+    }
+  }
 }

Modified: aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java?rev=1150090&r1=1150089&r2=1150090&view=diff
==============================================================================
--- aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java (original)
+++ aries/trunk/application/application-runtime-isolated/src/main/java/org/apache/aries/application/runtime/isolated/impl/ApplicationContextManagerImpl.java Sat Jul 23 12:17:58 2011
@@ -35,7 +35,6 @@ import org.apache.aries.application.mana
 import org.apache.aries.application.management.AriesApplicationContext;
 import org.apache.aries.application.management.ManagementException;
 import org.apache.aries.application.management.UpdateException;
-import org.apache.aries.application.management.AriesApplicationContext.ApplicationState;
 import org.apache.aries.application.management.spi.framework.BundleFrameworkManager;
 import org.apache.aries.application.management.spi.repository.BundleRepositoryManager;
 import org.apache.aries.application.management.spi.runtime.AriesApplicationContextManager;
@@ -70,9 +69,6 @@ public class ApplicationContextManagerIm
 
   public void setBundleFrameworkManager(BundleFrameworkManager bfm)
   {
-    LOGGER.debug(LOG_ENTRY, "setBundleFrameworkManager", bfm);
-    LOGGER.debug(LOG_EXIT, "setBundleFrameworkManager");
-    
     _bundleFrameworkManager = bfm;
   }
   
@@ -193,4 +189,42 @@ public class ApplicationContextManagerIm
     return ctx;
   }
 
+  public void bindBundleFrameworkManager(BundleFrameworkManager bfm)
+  {
+    LOGGER.debug(LOG_ENTRY, "setBundleFrameworkManager", bfm);
+    LOGGER.debug(LOG_EXIT, "setBundleFrameworkManager");
+    
+    Iterator<AriesApplicationContext> it = _appToContextMap.values().iterator();
+    while (it.hasNext())
+    {      
+      try {
+        ApplicationContextImpl ctx = (ApplicationContextImpl)it.next();
+        ctx.open();
+      } catch (BundleException e)
+      {
+        LOGGER.debug(LOG_EXCEPTION,e);
+      }
+    }
+  }
+
+  public void unbindBundleFrameworkManager(BundleFrameworkManager bfm)
+  {
+    LOGGER.debug(LOG_ENTRY, "unbindBundleFrameworkManager", bfm);
+    
+    Iterator<AriesApplicationContext> it = _appToContextMap.values().iterator();
+    while (it.hasNext())
+    {      
+      try {
+        ApplicationContextImpl ctx = (ApplicationContextImpl)it.next();
+        ctx.close();
+      } catch (BundleException e)
+      {
+        LOGGER.debug(LOG_EXCEPTION,e);
+      }
+    }
+    
+    LOGGER.debug(LOG_EXIT, "unbindBundleFrameworkManager");
+    
+    
+  }
 }
\ No newline at end of file

Modified: aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml
URL: http://svn.apache.org/viewvc/aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml?rev=1150090&r1=1150089&r2=1150090&view=diff
==============================================================================
--- aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml (original)
+++ aries/trunk/application/application-runtime-isolated/src/main/resources/OSGI-INF/blueprint/app-context-management.xml Sat Jul 23 12:17:58 2011
@@ -26,7 +26,9 @@
 
   <service interface="org.apache.aries.application.management.spi.runtime.AriesApplicationContextManager" ref="app-context-manager" ranking="-1"/>
     
-  <reference id="bundle-framework-manager" interface="org.apache.aries.application.management.spi.framework.BundleFrameworkManager"/>
+  <reference id="bundle-framework-manager" interface="org.apache.aries.application.management.spi.framework.BundleFrameworkManager">
+    <reference-listener ref="app-context-manager" bind-method="bindBundleFrameworkManager" unbind-method="unbindBundleFrameworkManager"/>
+  </reference>
   <reference id="bundle-repository-manager" interface="org.apache.aries.application.management.spi.repository.BundleRepositoryManager"/>
   
 </blueprint>