You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2016/05/20 13:43:59 UTC
svn commit: r1744736 - in
/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl:
BundleComponentActivator.java ComponentRegistry.java
config/ConfigurableComponentHolder.java
config/RegionConfigurationSupport.java manager/AbstractComponentManager.java
Author: gnodet
Date: Fri May 20 13:43:54 2016
New Revision: 1744736
URL: http://svn.apache.org/viewvc?rev=1744736&view=rev
Log:
[FELIX-5243] Break dependency to ComponentRegistry
Modified:
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurableComponentHolder.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/RegionConfigurationSupport.java
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java?rev=1744736&r1=1744735&r2=1744736&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java Fri May 20 13:43:54 2016
@@ -849,8 +849,7 @@ public class BundleComponentActivator im
}
public RegionConfigurationSupport setRegionConfigurationSupport(ServiceReference<ConfigurationAdmin> reference) {
- RegionConfigurationSupport trialRcs = new RegionConfigurationSupport(reference, m_componentRegistry);
- RegionConfigurationSupport rcs = m_componentRegistry.registerRegionConfigurationSupport(trialRcs);
+ RegionConfigurationSupport rcs = m_componentRegistry.registerRegionConfigurationSupport(reference);
for (ComponentHolder<?> holder: m_holders)
{
rcs.configureComponentHolder(holder);
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java?rev=1744736&r1=1744735&r2=1744736&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/ComponentRegistry.java Fri May 20 13:43:54 2016
@@ -40,6 +40,7 @@ import org.apache.felix.scr.impl.metadat
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.component.ComponentConstants;
import org.osgi.service.component.ComponentException;
import org.osgi.service.log.LogService;
@@ -52,9 +53,6 @@ import org.osgi.service.log.LogService;
public class ComponentRegistry
{
- // the name of the ConfigurationAdmin service
- public static final String CONFIGURATION_ADMIN = "org.osgi.service.cm.ConfigurationAdmin";
-
/**
* The map of known components indexed by component name. The values are
* either null (for name reservations) or implementations
@@ -526,7 +524,18 @@ public class ComponentRegistry
private final ConcurrentMap<Long, RegionConfigurationSupport> bundleToRcsMap = new ConcurrentHashMap<Long, RegionConfigurationSupport>();
- public RegionConfigurationSupport registerRegionConfigurationSupport(
+ public RegionConfigurationSupport registerRegionConfigurationSupport(
+ ServiceReference<ConfigurationAdmin> reference) {
+ RegionConfigurationSupport trialRcs = new RegionConfigurationSupport(reference) {
+ protected Collection<ComponentHolder<?>> getComponentHolders(TargetedPID pid)
+ {
+ return ComponentRegistry.this.getComponentHoldersByPid(pid);
+ }
+ };
+ return registerRegionConfigurationSupport(trialRcs);
+ }
+
+ public RegionConfigurationSupport registerRegionConfigurationSupport(
RegionConfigurationSupport trialRcs) {
Long bundleId = trialRcs.getBundleId();
RegionConfigurationSupport existing = null;
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurableComponentHolder.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurableComponentHolder.java?rev=1744736&r1=1744735&r2=1744736&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurableComponentHolder.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurableComponentHolder.java Fri May 20 13:43:54 2016
@@ -29,7 +29,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.apache.felix.scr.impl.Activator;
import org.apache.felix.scr.impl.helper.ComponentMethods;
import org.apache.felix.scr.impl.helper.SimpleLogger;
import org.apache.felix.scr.impl.manager.AbstractComponentManager;
@@ -819,7 +818,12 @@ public class ConfigurableComponentHolder
public boolean isLogEnabled( int level )
{
- return Activator.isLogEnabled( level );
+ ComponentActivator activator = getActivator();
+ if ( activator != null )
+ {
+ return activator.isLogEnabled( level );
+ }
+ return false;
}
public void log( int level, String message, Throwable ex )
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/RegionConfigurationSupport.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/RegionConfigurationSupport.java?rev=1744736&r1=1744735&r2=1744736&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/RegionConfigurationSupport.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/RegionConfigurationSupport.java Fri May 20 13:43:54 2016
@@ -29,7 +29,6 @@ import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.felix.scr.impl.Activator;
-import org.apache.felix.scr.impl.ComponentRegistry;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
@@ -43,15 +42,15 @@ import org.osgi.service.cm.Configuration
import org.osgi.service.cm.ConfigurationPermission;
import org.osgi.service.log.LogService;
-public class RegionConfigurationSupport implements ConfigurationListener
+public abstract class RegionConfigurationSupport implements ConfigurationListener
{
+ // the name of the ConfigurationAdmin service
+ public static final String CONFIGURATION_ADMIN = "org.osgi.service.cm.ConfigurationAdmin";
+
private final BundleContext caBundleContext;
private final Long bundleId;
- // the registry of components to be configured
- private final ComponentRegistry m_registry;
-
private final AtomicInteger reference = new AtomicInteger(1);
// the service m_registration of the ConfigurationListener service
@@ -63,9 +62,8 @@ public class RegionConfigurationSupport
* @param bundleContext of the ConfigurationAdmin we are tracking
* @param registry
*/
- public RegionConfigurationSupport(ServiceReference<ConfigurationAdmin> reference, final ComponentRegistry registry)
+ public RegionConfigurationSupport(ServiceReference<ConfigurationAdmin> reference)
{
- this.m_registry = registry;
Bundle bundle = reference.getBundle();
this.bundleId = bundle.getBundleId();
this.caBundleContext = bundle.getBundleContext();
@@ -124,7 +122,7 @@ public class RegionConfigurationSupport
}
final List<String> confPids = holder.getComponentMetadata().getConfigurationPid();
- final ServiceReference<?> caRef = bundleContext.getServiceReference(ComponentRegistry.CONFIGURATION_ADMIN);
+ final ServiceReference<?> caRef = bundleContext.getServiceReference(CONFIGURATION_ADMIN);
if (caRef != null)
{
final Object cao = bundleContext.getService(caRef);
@@ -246,16 +244,7 @@ public class RegionConfigurationSupport
// iterate over all components which must be configured with this pid
// (since DS 1.2, components may specify a specific configuration PID (112.4.4 configuration-pid)
- Collection<ComponentHolder<?>> holders;
-
- if (factoryPid == null)
- {
- holders = this.m_registry.getComponentHoldersByPid(pid);
- }
- else
- {
- holders = this.m_registry.getComponentHoldersByPid(factoryPid);
- }
+ Collection<ComponentHolder<?>> holders = getComponentHolders(factoryPid != null ? factoryPid : pid);
Activator.log(LogService.LOG_DEBUG, null, "configurationEvent: Handling {0} of Configuration PID={1} for component holders {2}",
new Object[] {getEventType(event), pid, holders},
@@ -402,6 +391,8 @@ public class RegionConfigurationSupport
}
}
+ protected abstract Collection<ComponentHolder<?>> getComponentHolders(TargetedPID pid);
+
private String getEventType(ConfigurationEvent event)
{
@@ -463,8 +454,7 @@ public class RegionConfigurationSupport
private ConfigurationInfo getConfigurationInfo(final TargetedPID pid, TargetedPID targetedPid,
ComponentHolder<?> componentHolder, final BundleContext bundleContext)
{
- final ServiceReference caRef = bundleContext
- .getServiceReference(ComponentRegistry.CONFIGURATION_ADMIN);
+ final ServiceReference caRef = bundleContext.getServiceReference(CONFIGURATION_ADMIN);
if (caRef != null)
{
try
Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java?rev=1744736&r1=1744735&r2=1744736&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java Fri May 20 13:43:54 2016
@@ -40,7 +40,6 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
-import org.apache.felix.scr.impl.Activator;
import org.apache.felix.scr.impl.config.ComponentActivator;
import org.apache.felix.scr.impl.config.ComponentContainer;
import org.apache.felix.scr.impl.config.ComponentManager;
@@ -1028,7 +1027,12 @@ public abstract class AbstractComponentM
*/
public boolean isLogEnabled( int level )
{
- return Activator.isLogEnabled( level );
+ ComponentActivator activator = getActivator();
+ if ( activator != null )
+ {
+ return activator.isLogEnabled( level );
+ }
+ return false;
}