public abstract class RegionConfigurationSupport
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
RegionConfigurationSupport.CMDomainCombiner |
private static class |
RegionConfigurationSupport.CMProtectionDomain |
private static class |
RegionConfigurationSupport.ConfigurationInfo |
Modifier and Type | Field and Description |
---|---|
private java.lang.Long |
bundleId |
private org.osgi.framework.BundleContext |
caBundleContext |
private org.osgi.framework.ServiceReference<org.osgi.service.cm.ConfigurationAdmin> |
caReference |
private ScrLogger |
logger |
private org.osgi.framework.ServiceRegistration<org.osgi.service.cm.ConfigurationListener> |
m_registration |
private java.util.concurrent.atomic.AtomicInteger |
referenceCount |
Constructor and Description |
---|
RegionConfigurationSupport(ScrLogger logger,
org.osgi.framework.ServiceReference<org.osgi.service.cm.ConfigurationAdmin> reference,
org.osgi.framework.Bundle bundle) |
Modifier and Type | Method and Description |
---|---|
private boolean |
checkBundleLocation(org.osgi.service.cm.Configuration config,
org.osgi.framework.Bundle bundle) |
private boolean |
checkBundleLocation(java.lang.String configBundleLocation,
org.osgi.framework.Bundle bundle) |
void |
configurationEvent(org.osgi.service.cm.ConfigurationEvent event)
Called by the Configuration Admin service if a configuration is updated
or removed.
|
boolean |
configureComponentHolder(ComponentHolder<?> holder)
The return value is only relevant for the call from
configurationEvent(ConfigurationEvent)
in the case of a deleted configuration which is not a factory configuration! |
boolean |
dereference() |
(package private) static java.lang.String |
escape(java.lang.String value)
see core spec 3.2.7.
|
private java.lang.String |
filter(java.lang.String rawPid) |
private org.osgi.service.cm.Configuration[] |
findConfigurations(org.osgi.service.cm.ConfigurationAdmin ca,
java.lang.String filter) |
private java.util.Collection<org.osgi.service.cm.Configuration> |
findFactoryConfigurations(org.osgi.service.cm.ConfigurationAdmin ca,
java.lang.String factoryPid,
org.osgi.framework.Bundle bundle)
Returns all configurations whose factory PID equals the given factory PID
or
null if no such configurations exist |
org.osgi.service.cm.Configuration |
findSingletonConfiguration(org.osgi.service.cm.ConfigurationAdmin ca,
java.lang.String pid,
org.osgi.framework.Bundle bundle)
Returns the configuration whose PID equals the given pid.
|
java.lang.Long |
getBundleId() |
protected abstract java.util.Collection<ComponentHolder<?>> |
getComponentHolders(TargetedPID pid) |
private org.osgi.service.cm.ConfigurationAdmin |
getConfigAdmin(org.osgi.framework.BundleContext bundleContext) |
private RegionConfigurationSupport.ConfigurationInfo |
getConfigurationInfo(TargetedPID pid,
TargetedPID targetedPid,
ComponentHolder<?> componentHolder,
org.osgi.framework.BundleContext bundleContext)
This gets config admin, gets the requested configuration, extracts the info we need from it, and ungets config admin.
|
private java.lang.String |
getEventType(org.osgi.service.cm.ConfigurationEvent event) |
private org.osgi.framework.ServiceReference<org.osgi.service.cm.ManagedService> |
getManagedServiceReference(org.osgi.framework.BundleContext bundleContext) |
private java.lang.String |
getTargetedPidFilter(java.lang.String pid,
org.osgi.framework.Bundle bundle,
java.lang.String key) |
boolean |
reference() |
void |
start() |
private final ScrLogger logger
private final org.osgi.framework.ServiceReference<org.osgi.service.cm.ConfigurationAdmin> caReference
private final org.osgi.framework.BundleContext caBundleContext
private final java.lang.Long bundleId
private final java.util.concurrent.atomic.AtomicInteger referenceCount
private volatile org.osgi.framework.ServiceRegistration<org.osgi.service.cm.ConfigurationListener> m_registration
public RegionConfigurationSupport(ScrLogger logger, org.osgi.framework.ServiceReference<org.osgi.service.cm.ConfigurationAdmin> reference, org.osgi.framework.Bundle bundle)
bundleContext
- of the ConfigurationAdmin we are trackingregistry
- public void start()
public java.lang.Long getBundleId()
public boolean reference()
public boolean dereference()
public boolean configureComponentHolder(ComponentHolder<?> holder)
configurationEvent(ConfigurationEvent)
in the case of a deleted configuration which is not a factory configuration!public void configurationEvent(org.osgi.service.cm.ConfigurationEvent event)
This method is really only called upon configuration changes; it is not
called for existing configurations upon startup of the Configuration
Admin service. To bridge this gap, the
ComponentRegistry#serviceChanged(org.osgi.framework.ServiceEvent)
method called when the
Configuration Admin service is registered calls #configureComponentHolders which calls this method for all
existing configurations to be able to forward existing configurations to
components.
event
- The configuration change eventprotected abstract java.util.Collection<ComponentHolder<?>> getComponentHolders(TargetedPID pid)
private java.lang.String getEventType(org.osgi.service.cm.ConfigurationEvent event)
private RegionConfigurationSupport.ConfigurationInfo getConfigurationInfo(TargetedPID pid, TargetedPID targetedPid, ComponentHolder<?> componentHolder, org.osgi.framework.BundleContext bundleContext)
pid
- TargetedPID for the desired configurationtargetedPid
- the targeted factory pid for a factory configuration or the pid for a singleton configurationcomponentHolder
- ComponentHolder that holds the old change count (for r4 fake change counting)bundleContext
- BundleContext to get the CA fromprivate org.osgi.framework.ServiceReference<org.osgi.service.cm.ManagedService> getManagedServiceReference(org.osgi.framework.BundleContext bundleContext)
private java.lang.String filter(java.lang.String rawPid)
public org.osgi.service.cm.Configuration findSingletonConfiguration(org.osgi.service.cm.ConfigurationAdmin ca, java.lang.String pid, org.osgi.framework.Bundle bundle)
null
is returned.ca
- Configuration Admin servicepid
- Pid for desired configurationbundle
- bundle of the component we are configuring (used in targeted pids)private java.util.Collection<org.osgi.service.cm.Configuration> findFactoryConfigurations(org.osgi.service.cm.ConfigurationAdmin ca, java.lang.String factoryPid, org.osgi.framework.Bundle bundle)
null
if no such configurations existca
- ConfigurationAdmin servicefactoryPid
- factory Pid we want the configurations forbundle
- bundle we're working for (for location and location permission)private boolean checkBundleLocation(org.osgi.service.cm.Configuration config, org.osgi.framework.Bundle bundle)
private boolean checkBundleLocation(java.lang.String configBundleLocation, org.osgi.framework.Bundle bundle)
private org.osgi.service.cm.Configuration[] findConfigurations(org.osgi.service.cm.ConfigurationAdmin ca, java.lang.String filter)
private java.lang.String getTargetedPidFilter(java.lang.String pid, org.osgi.framework.Bundle bundle, java.lang.String key)
static final java.lang.String escape(java.lang.String value)
value
- private org.osgi.service.cm.ConfigurationAdmin getConfigAdmin(org.osgi.framework.BundleContext bundleContext)