You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by jw...@apache.org on 2013/07/01 21:36:14 UTC
svn commit: r1498639 -
/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java
Author: jwross
Date: Mon Jul 1 19:36:14 2013
New Revision: 1498639
URL: http://svn.apache.org/r1498639
Log:
[aries-1062] org.apache.aries.subsystem.core.internal.Activator needs to be improved
Refactor the Activator.addingService method. Start with patch
https://issues.apache.org/jira/secure/attachment/12581693/Activator.java.patch. Remove early returns
and simply always call activate(). Remove nested ifs.
Modified:
aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java
Modified: aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java
URL: http://svn.apache.org/viewvc/aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java?rev=1498639&r1=1498638&r2=1498639&view=diff
==============================================================================
--- aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java (original)
+++ aries/trunk/subsystem/subsystem-core/src/main/java/org/apache/aries/subsystem/core/internal/Activator.java Mon Jul 1 19:36:14 2013
@@ -240,34 +240,24 @@ public class Activator implements Bundle
@Override
public synchronized Object addingService(ServiceReference<Object> reference) {
Object service = bundleContext.getService(reference);
- if (service instanceof Coordinator) {
- if (coordinator == null) {
- coordinator = (Coordinator)service;
- activate();
- }
- }
- else if (service instanceof RegionDigraph) {
- if (regionDigraph == null) {
- regionDigraph = (RegionDigraph)service;
- activate();
- }
- }
- else if (service instanceof Resolver) {
- if (resolver == null) {
- resolver = (Resolver)service;
- activate();
- }
- }
- else if (service instanceof ModelledResourceManager) {
- if (modelledResourceManager == null) {
- modelledResourceManager = (ModelledResourceManager)service;
- activate();
- }
- }
- else if (service instanceof IDirectoryFinder)
- finders.add((IDirectoryFinder)service);
- else
- repositories.add((Repository)service);
+ // Use all of each type of the following services.
+ if (service instanceof IDirectoryFinder)
+ finders.add((IDirectoryFinder) service);
+ else if (service instanceof Repository)
+ repositories.add((Repository) service);
+ // Use only one of each type of the following services.
+ else if (service instanceof Coordinator && coordinator == null)
+ coordinator = (Coordinator) service;
+ else if (service instanceof RegionDigraph && regionDigraph == null)
+ regionDigraph = (RegionDigraph) service;
+ else if (service instanceof Resolver && resolver == null)
+ resolver = (Resolver) service;
+ else if (service instanceof ModelledResourceManager && modelledResourceManager == null)
+ modelledResourceManager = (ModelledResourceManager) service;
+ // Activation is harmless if already active or all required services
+ // have not yet been found.
+ activate();
+ // Filter guarantees we want to track all services received.
return service;
}