You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/04/23 09:57:00 UTC
svn commit: r1792348 - in /felix/trunk/scr: changelog.txt
src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java
Author: cziegeler
Date: Sun Apr 23 09:56:59 2017
New Revision: 1792348
URL: http://svn.apache.org/viewvc?rev=1792348&view=rev
Log:
FELIX-5613 : SCR bundle fails to start without Config Admin
Modified:
felix/trunk/scr/changelog.txt
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/RegionConfigurationSupport.java
Modified: felix/trunk/scr/changelog.txt
URL: http://svn.apache.org/viewvc/felix/trunk/scr/changelog.txt?rev=1792348&r1=1792347&r2=1792348&view=diff
==============================================================================
--- felix/trunk/scr/changelog.txt (original)
+++ felix/trunk/scr/changelog.txt Sun Apr 23 09:56:59 2017
@@ -5,6 +5,7 @@ Changes from 2.0.8 to 2.0.10
** Bug
* [FELIX-5572] Reference target filter fails when using field strategy for multiple cardinality reference with multiple component instances
* [FELIX-5615] Global lock in BaseMethod.NotResolved::resolve method can cause deadlock
+ * [FELIX-5613] SCR bundle fails to start without Config Admin
Changes from 2.0.6 to 2.0.8
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=1792348&r1=1792347&r2=1792348&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 Sun Apr 23 09:56:59 2017
@@ -40,13 +40,11 @@ import org.osgi.framework.ServiceRegistr
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.cm.ConfigurationEvent;
-import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ConfigurationListener;
import org.osgi.service.cm.ConfigurationPermission;
-import org.osgi.service.cm.ManagedService;
import org.osgi.service.log.LogService;
-public abstract class RegionConfigurationSupport implements ConfigurationListener
+public abstract class RegionConfigurationSupport
{
private final SimpleLogger logger;
@@ -79,8 +77,19 @@ public abstract class RegionConfiguratio
Dictionary<String, Object> props = new Hashtable<String, Object>();
props.put( Constants.SERVICE_DESCRIPTION, "Declarative Services Configuration Support Listener" );
props.put( Constants.SERVICE_VENDOR, "The Apache Software Foundation" );
- this.m_registration = caBundleContext.registerService( ConfigurationListener.class, this, props );
+ // If RegionConfigurationSupport *directly* implements ConfigurationListener then we get NoClassDefFoundError
+ // when SCR is started without a wiring to an exporter of Config Admin API. This construction allows the
+ // class loading exception to be caught and confined.
+ ConfigurationListener serviceDelegator = new ConfigurationListener()
+ {
+ @Override
+ public void configurationEvent(ConfigurationEvent event)
+ {
+ RegionConfigurationSupport.this.configurationEvent(event);
+ }
+ };
+ this.m_registration = caBundleContext.registerService(ConfigurationListener.class, serviceDelegator, props );
}
public Long getBundleId()