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 );
}
}