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 2010/02/15 19:29:54 UTC
svn commit: r910286 - in /incubator/aries/trunk/application:
application-api/src/main/java/org/apache/aries/application/management/
application-management/src/main/java/org/apache/aries/application/management/impl/
application-runtime/src/main/java/org...
Author: not
Date: Mon Feb 15 18:29:54 2010
New Revision: 910286
URL: http://svn.apache.org/viewvc?rev=910286&view=rev
Log:
ARIES-162 Ensure when we uninstall an ApplicationContext the ApplicationContextManager forgets about it, and the ApplicationContext state changes to UNINSTALLED.
Modified:
incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ApplicationContextManager.java
incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java
incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextManagerImpl.java
Modified: incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ApplicationContextManager.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ApplicationContextManager.java?rev=910286&r1=910285&r2=910286&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ApplicationContextManager.java (original)
+++ incubator/aries/trunk/application/application-api/src/main/java/org/apache/aries/application/management/ApplicationContextManager.java Mon Feb 15 18:29:54 2010
@@ -44,4 +44,11 @@
* @return The set of all ApplicationContexts.
*/
public Set<ApplicationContext> getApplicationContexts();
+
+ /**
+ * Remove the provided ApplicationContext from the running system.
+ *
+ * @param app the application to remove.
+ */
+ public void remove(ApplicationContext app);
}
Modified: incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java?rev=910286&r1=910285&r2=910286&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java (original)
+++ incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java Mon Feb 15 18:29:54 2010
@@ -231,12 +231,14 @@
return result;
}
- public void uninstall(ApplicationContext app) throws BundleException {
+ public void uninstall(ApplicationContext app) throws BundleException
+ {
Set<Bundle> bundles = app.getApplicationContent();
for (Bundle b : bundles) {
b.uninstall();
}
+ _applicationContextManager.remove(app);
}
public void addApplicationListener(ApplicationListener l) {
Modified: incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java?rev=910286&r1=910285&r2=910286&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java (original)
+++ incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextImpl.java Mon Feb 15 18:29:54 2010
@@ -160,4 +160,9 @@
}
_state = ApplicationState.RESOLVED;
}
+
+ public void setState(ApplicationState state)
+ {
+ _state = state;
+ }
}
Modified: incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextManagerImpl.java?rev=910286&r1=910285&r2=910286&view=diff
==============================================================================
--- incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextManagerImpl.java (original)
+++ incubator/aries/trunk/application/application-runtime/src/main/java/org/apache/aries/application/runtime/impl/ApplicationContextManagerImpl.java Mon Feb 15 18:29:54 2010
@@ -20,6 +20,7 @@
package org.apache.aries.application.runtime.impl;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -29,16 +30,17 @@
import org.apache.aries.application.management.ApplicationContextManager;
import org.apache.aries.application.management.AriesApplication;
import org.apache.aries.application.management.ManagementException;
+import org.apache.aries.application.management.ApplicationContext.ApplicationState;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
public class ApplicationContextManagerImpl implements ApplicationContextManager {
- ConcurrentMap<AriesApplication, ApplicationContext> _appToContextMap;
- BundleContext _bundleContext;
+ private ConcurrentMap<AriesApplication, ApplicationContextImpl> _appToContextMap;
+ private BundleContext _bundleContext;
public ApplicationContextManagerImpl () {
- _appToContextMap = new ConcurrentHashMap<AriesApplication, ApplicationContext>();
+ _appToContextMap = new ConcurrentHashMap<AriesApplication, ApplicationContextImpl>();
}
public void setBundleContext (BundleContext b) {
@@ -46,12 +48,12 @@
}
public ApplicationContext getApplicationContext(AriesApplication app) throws BundleException, ManagementException {
- ApplicationContext result;
+ ApplicationContextImpl result;
if (_appToContextMap.containsKey(app)) {
result = _appToContextMap.get(app);
} else {
result = new ApplicationContextImpl (_bundleContext, app);
- ApplicationContext previous = _appToContextMap.putIfAbsent(app, result);
+ ApplicationContextImpl previous = _appToContextMap.putIfAbsent(app, result);
if (previous != null) {
result = previous;
}
@@ -61,10 +63,28 @@
public Set<ApplicationContext> getApplicationContexts() {
Set<ApplicationContext> result = new HashSet<ApplicationContext>();
- for (Map.Entry<AriesApplication, ApplicationContext> entry: _appToContextMap.entrySet()) {
+ for (Map.Entry<AriesApplication, ApplicationContextImpl> entry: _appToContextMap.entrySet()) {
result.add (entry.getValue());
}
return result;
}
-}
+ public void remove(ApplicationContext app)
+ {
+ Iterator<Map.Entry<AriesApplication, ApplicationContextImpl>> it = _appToContextMap.entrySet().iterator();
+
+ while (it.hasNext()) {
+ Map.Entry<AriesApplication, ApplicationContextImpl> entry = it.next();
+
+ ApplicationContextImpl potentialMatch = entry.getValue();
+
+ if (potentialMatch == app) {
+ it.remove();
+
+ potentialMatch.setState(ApplicationState.UNINSTALLED);
+
+ break;
+ }
+ }
+ }
+}
\ No newline at end of file