Class ServiceFactoryComponentManager<S>
- java.lang.Object
-
- org.apache.felix.scr.impl.manager.AbstractComponentManager<S>
-
- org.apache.felix.scr.impl.manager.SingleComponentManager<S>
-
- org.apache.felix.scr.impl.manager.ServiceFactoryComponentManager<S>
-
- All Implemented Interfaces:
ComponentManager<S>
,org.osgi.framework.ServiceFactory<S>
- Direct Known Subclasses:
PrototypeServiceFactoryComponentManager
public class ServiceFactoryComponentManager<S> extends SingleComponentManager<S>
TheServiceFactoryComponentManager
for components specified with <service serviceFactory='true'/> in the xml metadata. The component must be delayed, not immediate or factory.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.felix.scr.impl.manager.SingleComponentManager
SingleComponentManager.SetImplementationObject<S>
-
Nested classes/interfaces inherited from class org.apache.felix.scr.impl.manager.AbstractComponentManager
AbstractComponentManager.State
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.IdentityHashMap<S,ComponentContextImpl<S>>
serviceContexts
-
Fields inherited from class org.apache.felix.scr.impl.manager.AbstractComponentManager
m_activationLock, m_container, m_factoryInstance, REASONS, registrationManager
-
Fields inherited from interface org.apache.felix.scr.impl.manager.ComponentManager
STATE_ACTIVE, STATE_DISPOSED, STATE_SATISFIED, STATE_UNSATISFIED_CONFIGURATION, STATE_UNSATISFIED_REFERENCE
-
-
Constructor Summary
Constructors Constructor Description ServiceFactoryComponentManager(ComponentContainer<S> container, ComponentMethods<S> componentMethods)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
deleteComponent(int reason)
private java.util.Collection<ComponentContextImpl<S>>
getComponentContexts()
org.osgi.service.component.ComponentInstance
getComponentInstance()
S
getService(org.osgi.framework.Bundle bundle, org.osgi.framework.ServiceRegistration<S> serviceRegistration)
(package private) boolean
hasInstance()
(package private) <T> void
invokeBindMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> refPair, int trackingCount)
protected MethodResult
invokeModifiedMethod()
(package private) <T> void
invokeUnbindMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> oldRefPair, int trackingCount)
(package private) <T> boolean
invokeUpdatedMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> refPair, int trackingCount)
Invoke updated method(package private) void
postRegister()
void
setServiceProperties(java.util.Dictionary<java.lang.String,?> serviceProperties)
void
ungetService(org.osgi.framework.Bundle bundle, org.osgi.framework.ServiceRegistration<S> registration, S service)
-
Methods inherited from class org.apache.felix.scr.impl.manager.SingleComponentManager
clear, clearServiceProperties, createImplementationObject, disposeImplementationObject, getComponentManagers, getProperties, getServiceInternal, getServiceProperties, getServiceReference, getServiceRegistration, preDeregister, reconfigure, reconfigure, registerComponentId, setFactoryProperties, unregisterComponentId
-
Methods inherited from class org.apache.felix.scr.impl.manager.AbstractComponentManager
activateInternal, collectDependencies, copyTo, copyToDictionary, copyToMap, deactivateInternal, disable, disableInternal, dispose, dispose, dumpThreads, enable, enableInternal, enableLatchWait, getActivator, getBundle, getBundleContext, getComponentMetadata, getComponentMethods, getDependencyManager, getDependencyManagers, getFailureReason, getId, getLockTimeout, getLogger, getProvidedServices, getReferenceManagers, getRegisteredServiceReference, getReversedDependencyManagers, getSpecState, getState, getTrackingCount, isFactory, isImmediate, isStateLocked, notifyWaiters, obtainActivationReadLock, obtainActivationWriteLock, obtainStateLock, registerMissingDependency, registerService, releaseActivationReadLock, releaseActivationWriteeLock, releaseStateLock, setFailureReason, setServiceProperties, setState, toString, tracked, unregisterService, updateTargets, verifyDependencyManagers, waitForTracked
-
-
-
-
Field Detail
-
serviceContexts
private java.util.IdentityHashMap<S,ComponentContextImpl<S>> serviceContexts
-
-
Constructor Detail
-
ServiceFactoryComponentManager
public ServiceFactoryComponentManager(ComponentContainer<S> container, ComponentMethods<S> componentMethods)
- Parameters:
container
- ComponentHolder for configuration managementcomponentMethods
-
-
-
Method Detail
-
setServiceProperties
public void setServiceProperties(java.util.Dictionary<java.lang.String,?> serviceProperties)
- Overrides:
setServiceProperties
in classSingleComponentManager<S>
-
postRegister
void postRegister()
- Overrides:
postRegister
in classSingleComponentManager<S>
-
deleteComponent
protected void deleteComponent(int reason)
- Overrides:
deleteComponent
in classSingleComponentManager<S>
-
getService
public S getService(org.osgi.framework.Bundle bundle, org.osgi.framework.ServiceRegistration<S> serviceRegistration)
- Specified by:
getService
in interfaceorg.osgi.framework.ServiceFactory<S>
- Overrides:
getService
in classSingleComponentManager<S>
-
ungetService
public void ungetService(org.osgi.framework.Bundle bundle, org.osgi.framework.ServiceRegistration<S> registration, S service)
- Specified by:
ungetService
in interfaceorg.osgi.framework.ServiceFactory<S>
- Overrides:
ungetService
in classSingleComponentManager<S>
-
getComponentContexts
private java.util.Collection<ComponentContextImpl<S>> getComponentContexts()
-
invokeBindMethod
<T> void invokeBindMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> refPair, int trackingCount)
- Overrides:
invokeBindMethod
in classSingleComponentManager<S>
-
invokeUpdatedMethod
<T> boolean invokeUpdatedMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> refPair, int trackingCount)
Description copied from class:AbstractComponentManager
Invoke updated method- Overrides:
invokeUpdatedMethod
in classSingleComponentManager<S>
- Returns:
true
if the component needs reactivation,false
otherwise.
-
invokeUnbindMethod
<T> void invokeUnbindMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> oldRefPair, int trackingCount)
- Overrides:
invokeUnbindMethod
in classSingleComponentManager<S>
-
invokeModifiedMethod
protected MethodResult invokeModifiedMethod()
- Overrides:
invokeModifiedMethod
in classSingleComponentManager<S>
-
hasInstance
boolean hasInstance()
- Overrides:
hasInstance
in classSingleComponentManager<S>
-
getComponentInstance
public org.osgi.service.component.ComponentInstance getComponentInstance()
- Overrides:
getComponentInstance
in classSingleComponentManager<S>
-
-