You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dj...@apache.org on 2016/08/02 05:08:29 UTC

svn commit: r1754817 - in /felix/trunk/scr/src/main/java/org/apache/felix/scr/impl: helper/ConfigAdminTracker.java manager/RegionConfigurationSupport.java

Author: djencks
Date: Tue Aug  2 05:08:29 2016
New Revision: 1754817

URL: http://svn.apache.org/viewvc?rev=1754817&view=rev
Log:
FELIX-5315 (at least partial) fix, getting the correct ConfigAdmin for each bundle

Modified:
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/ConfigAdminTracker.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/ConfigAdminTracker.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/ConfigAdminTracker.java?rev=1754817&r1=1754816&r2=1754817&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/ConfigAdminTracker.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/ConfigAdminTracker.java Tue Aug  2 05:08:29 2016
@@ -20,7 +20,6 @@ package org.apache.felix.scr.impl.helper
 
 import org.apache.felix.scr.impl.manager.ComponentActivator;
 import org.apache.felix.scr.impl.manager.RegionConfigurationSupport;
-import org.osgi.framework.Bundle;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.util.tracker.ServiceTracker;
@@ -28,76 +27,43 @@ import org.osgi.util.tracker.ServiceTrac
 
 public class ConfigAdminTracker
 {
-	public static final String CONFIGURATION_ADMIN = "org.osgi.service.cm.ConfigurationAdmin";
-	
-	private final ServiceTracker<ConfigurationAdmin, RegionConfigurationSupport> configAdminTracker;
-
-	static ConfigAdminTracker getRegionConfigurationSupport(final ComponentActivator componentActivator, final Bundle dsBundle)
-	{
-		Class<?> ourCA;
-		Class<?> theirCA;
-		try
-		{
-			ourCA = dsBundle.loadClass(CONFIGURATION_ADMIN);
-		}
-		catch (ClassNotFoundException e)
-		{
-			return null;
-		}
-		try
-		{
-			Bundle bundle = componentActivator.getBundleContext().getBundle();
-			if ( bundle == null )
-			{
-				return null;
-			}
-			theirCA = dsBundle.loadClass(CONFIGURATION_ADMIN);
-		}
-		catch (ClassNotFoundException e)
-		{
-			return null;
-		}
-		if ( ourCA != theirCA )
-		{
-			return null;
-		}
-		ConfigAdminTracker tracker = new ConfigAdminTracker(componentActivator);
-		return tracker;
-	}
-
-	public ConfigAdminTracker(final ComponentActivator componentActivator)
-	{
-		
-		//TODO this assumes that there is 0 or 1 ca service visible to the bundle being extended.
-		//Is this sure to be true?
-		configAdminTracker = new ServiceTracker<ConfigurationAdmin, RegionConfigurationSupport>(componentActivator.getBundleContext(),
-				CONFIGURATION_ADMIN, 
-				new ServiceTrackerCustomizer<ConfigurationAdmin, RegionConfigurationSupport>() 
-				{
-
-			public RegionConfigurationSupport addingService(
-					ServiceReference<ConfigurationAdmin> reference) {
-				return componentActivator.setRegionConfigurationSupport(reference);
-			}
-
-			public void modifiedService(
-					ServiceReference<ConfigurationAdmin> reference,
-					RegionConfigurationSupport service) {
-			}
-
-			public void removedService(
-					ServiceReference<ConfigurationAdmin> reference,
-					RegionConfigurationSupport rcs) {
-				componentActivator.unsetRegionConfigurationSupport(rcs);
-			}
-				});
-
-		configAdminTracker.open();
-	}
-
-	public void dispose()
-	{
-		configAdminTracker.close();
-	}
-	
+    public static final String CONFIGURATION_ADMIN = "org.osgi.service.cm.ConfigurationAdmin";
+
+    private final ServiceTracker<ConfigurationAdmin, RegionConfigurationSupport> configAdminTracker;
+
+    public ConfigAdminTracker(final ComponentActivator componentActivator)
+    {
+
+        //TODO this assumes that there is 0 or 1 ca service visible to the bundle being extended.
+        //Is this sure to be true?
+        configAdminTracker = new ServiceTracker<ConfigurationAdmin, RegionConfigurationSupport>(
+            componentActivator.getBundleContext(), CONFIGURATION_ADMIN,
+            new ServiceTrackerCustomizer<ConfigurationAdmin, RegionConfigurationSupport>()
+            {
+
+                public RegionConfigurationSupport addingService(ServiceReference<ConfigurationAdmin> reference)
+                {
+                    return componentActivator.setRegionConfigurationSupport( reference );
+                }
+
+                public void modifiedService(ServiceReference<ConfigurationAdmin> reference,
+                    RegionConfigurationSupport service)
+                {
+                }
+
+                public void removedService(ServiceReference<ConfigurationAdmin> reference,
+                    RegionConfigurationSupport rcs)
+                {
+                    componentActivator.unsetRegionConfigurationSupport( rcs );
+                }
+            } );
+
+        configAdminTracker.open();
+    }
+
+    public void dispose()
+    {
+        configAdminTracker.close();
+    }
+
 }

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java?rev=1754817&r1=1754816&r2=1754817&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java Tue Aug  2 05:08:29 2016
@@ -124,7 +124,7 @@ public abstract class RegionConfiguratio
             }
             final List<String> confPids = holder.getComponentMetadata().getConfigurationPid();
 
-            final ConfigurationAdmin ca = getConfigAdmin();
+            final ConfigurationAdmin ca = getConfigAdmin( bundleContext );
             try
             {
                 for ( final String confPid : confPids )
@@ -439,7 +439,7 @@ public abstract class RegionConfiguratio
     {
         try
         {
-            final ConfigurationAdmin ca = getConfigAdmin();
+            final ConfigurationAdmin ca = getConfigAdmin( bundleContext );
             try
             {
                 Configuration[] configs = ca.listConfigurations( filter( pid.getRawPid() ) );
@@ -628,9 +628,9 @@ public abstract class RegionConfiguratio
         return value.replaceAll( "([\\\\\\*\\(\\)])", "\\\\$1" );
     }
 
-    private ConfigurationAdmin getConfigAdmin()
+    private ConfigurationAdmin getConfigAdmin(BundleContext bundleContext)
     {
-        return caBundleContext.getService( caReference );
+        return bundleContext.getService( caReference );
     }
 
 }