You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by mn...@apache.org on 2010/10/11 17:01:45 UTC
svn commit: r1021368 -
/incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
Author: mnuttall
Date: Mon Oct 11 15:01:44 2010
New Revision: 1021368
URL: http://svn.apache.org/viewvc?rev=1021368&view=rev
Log:
ARIES-466: AriesApplicationManager registers an application BundleRepository even when one already exists. Patch by Chris Wilkinson.
Modified:
incubator/aries/trunk/application/application-management/src/main/java/org/apache/aries/application/management/impl/AriesApplicationManagerImpl.java
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=1021368&r1=1021367&r2=1021368&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 Oct 11 15:01:44 2010
@@ -69,7 +69,9 @@ import org.apache.aries.application.util
import org.apache.aries.application.utils.manifest.ManifestProcessor;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
+import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceException;
+import org.osgi.framework.ServiceReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -282,17 +284,31 @@ public class AriesApplicationManagerImpl
}
public AriesApplicationContext install(AriesApplication app) throws BundleException, ManagementException, ResolverException {
+
if (!app.isResolved()) {
- app = resolve(app);
+ app = resolve(app);
+ }
+
+ // Register an Application Repository for this application if none exists
+ String appScope = app.getApplicationMetadata().getApplicationScope();
+ ServiceReference[] ref = null;
+ try {
+ String filter = "(" + BundleRepository.REPOSITORY_SCOPE + "=" + appScope + ")";
+ ref = _bundleContext.getServiceReferences(BundleRepository.class.getName(),filter);
+ }
+ catch (InvalidSyntaxException e) {
+ // Something went wrong attempting to find a service so we will act as if
+ // there is no existing service.
}
- // Register an Application Repository for this application
- Dictionary dict = new Hashtable();
- dict.put(BundleRepository.REPOSITORY_SCOPE, app.getApplicationMetadata().getApplicationScope());
- _bundleContext.registerService(BundleRepository.class.getName(),
- new ApplicationRepository(app),
- dict);
-
+ if (ref == null || ref.length == 0) {
+ Dictionary dict = new Hashtable();
+ dict.put(BundleRepository.REPOSITORY_SCOPE, appScope);
+ _bundleContext.registerService(BundleRepository.class.getName(),
+ new ApplicationRepository(app),
+ dict);
+ }
+
AriesApplicationContext result = _applicationContextManager.getApplicationContext(app);
return result;
}