Class SingleComponentManager<S>

java.lang.Object
org.apache.felix.scr.impl.manager.AbstractComponentManager<S>
org.apache.felix.scr.impl.manager.SingleComponentManager<S>
All Implemented Interfaces:
ComponentManager<S>, org.osgi.framework.ServiceFactory<S>
Direct Known Subclasses:
ServiceFactoryComponentManager

public class SingleComponentManager<S> extends AbstractComponentManager<S> implements org.osgi.framework.ServiceFactory<S>
The default ComponentManager. Objects of this class are responsible for managing implementation object's lifecycle.
  • Field Details

  • Constructor Details

    • SingleComponentManager

      public SingleComponentManager(ComponentContainer<S> container, ComponentMethods<S> componentMethods)
      The constructor receives both the activator and the metadata
      Parameters:
      componentMethods -
    • SingleComponentManager

      public SingleComponentManager(ComponentContainer<S> container, ComponentMethods<S> componentMethods, boolean factoryInstance)
  • Method Details

    • clear

      void clear()
      Overrides:
      clear in class AbstractComponentManager<S>
    • createComponent

      private boolean createComponent(ComponentContextImpl<S> componentContext)
    • deleteComponent

      protected void deleteComponent(int reason)
      Specified by:
      deleteComponent in class AbstractComponentManager<S>
    • clearServiceProperties

      void clearServiceProperties()
    • getComponentInstance

      public org.osgi.service.component.ComponentInstance<S> getComponentInstance()
    • getInstance

      private S getInstance()
      Get the object that is implementing this descriptor
      Returns:
      the object that implements the services
    • createImplementationObject

      protected S createImplementationObject(org.osgi.framework.Bundle usingBundle, SingleComponentManager.SetImplementationObject<S> setter, ComponentContextImpl<S> componentContext)
    • disposeImplementationObject

      protected void disposeImplementationObject(ComponentContextImpl<S> componentContext, int reason)
    • hasInstance

      boolean hasInstance()
      Specified by:
      hasInstance in class AbstractComponentManager<S>
    • invokeBindMethod

      <T> void invokeBindMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> refPair, int trackingCount)
      Specified by:
      invokeBindMethod in class AbstractComponentManager<S>
    • invokeUpdatedMethod

      <T> boolean invokeUpdatedMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> refPair, int trackingCount)
      Description copied from class: AbstractComponentManager
      Invoke updated method
      Specified by:
      invokeUpdatedMethod in class AbstractComponentManager<S>
      Returns:
      true if the component needs reactivation, false otherwise.
    • invokeUnbindMethod

      <T> void invokeUnbindMethod(DependencyManager<S,T> dependencyManager, RefPair<S,T> oldRefPair, int trackingCount)
      Specified by:
      invokeUnbindMethod in class AbstractComponentManager<S>
    • setFactoryProperties

      protected void setFactoryProperties(Dictionary<String,?> dictionary)
    • registerComponentId

      void registerComponentId()
      Overrides:
      registerComponentId in class AbstractComponentManager<S>
    • unregisterComponentId

      void unregisterComponentId()
      Overrides:
      unregisterComponentId in class AbstractComponentManager<S>
    • getProperties

      public Map<String,Object> getProperties()
      Returns the (private copy) of the Component properties to be used for the ComponentContext as well as eventual service registration.

      Method implements the Component Properties provisioning as described in 112.6, Component Properties.

      Specified by:
      getProperties in interface ComponentManager<S>
      Specified by:
      getProperties in class AbstractComponentManager<S>
      Returns:
      a private map of component properties
    • setServiceProperties

      public void setServiceProperties(Dictionary<String,?> serviceProperties)
      Specified by:
      setServiceProperties in class AbstractComponentManager<S>
    • postRegister

      void postRegister()
      Specified by:
      postRegister in class AbstractComponentManager<S>
    • preDeregister

      void preDeregister()
      Specified by:
      preDeregister in class AbstractComponentManager<S>
    • getServiceProperties

      public Dictionary<String,Object> getServiceProperties()
      Description copied from class: AbstractComponentManager
      Returns the subset of component properties to be used as service properties. These properties are all component properties where property name does not start with dot (.), properties which are considered private.
      Overrides:
      getServiceProperties in class AbstractComponentManager<S>
    • getServiceReference

      final org.osgi.framework.ServiceReference<S> getServiceReference()
    • getServiceRegistration

      protected org.osgi.framework.ServiceRegistration<S> getServiceRegistration()
      Overrides:
      getServiceRegistration in class AbstractComponentManager<S>
    • updateServiceRegistration

      private void updateServiceRegistration()
    • reconfigure

      public void reconfigure(Map<String,Object> configuration, boolean configurationDeleted, TargetedPID factoryPid)
      Called by the Configuration Admin Service to update the component with Configuration properties.

      This causes the component to be reactivated with the new configuration unless no configuration has ever been set on this component and the configuration parameter is null. In this case nothing is to be done. If a configuration has previously been set and now the configuration is deleted, the configuration parameter is null and the component has to be reactivated with the default configuration.

      Specified by:
      reconfigure in class AbstractComponentManager<S>
      Parameters:
      configuration - The configuration properties for the component from the Configuration Admin Service or null if there is no configuration or if the configuration has just been deleted.
      configurationDeleted - TODO
      factoryPid - TODO
    • reconfigure

      void reconfigure(boolean configurationDeleted)
    • modify

      private boolean modify(boolean configurationDeleted)
    • invokeModifiedMethod

      protected MethodResult invokeModifiedMethod()
    • servicePropertiesMatches

      private boolean servicePropertiesMatches(org.osgi.framework.ServiceRegistration<S> reg, Dictionary<String,Object> props)
      Checks if the given service registration properties matches another set of properties.
      Parameters:
      reg - the service registration whose service properties will be compared to the props parameter
      props - the properties to be compared with the registration service properties.
      Returns:
      true if the registration service properties equals the prop properties, false if not.
    • getService

      public S getService(org.osgi.framework.Bundle bundle, org.osgi.framework.ServiceRegistration<S> serviceRegistration)
      Specified by:
      getService in interface org.osgi.framework.ServiceFactory<S>
    • getServiceInternal

      boolean getServiceInternal(org.osgi.framework.ServiceRegistration<S> serviceRegistration)
      Overrides:
      getServiceInternal in class AbstractComponentManager<S>
    • getService

      private S getService(ComponentContextImpl<S> componentContext)
    • ungetService

      public void ungetService(org.osgi.framework.Bundle bundle, org.osgi.framework.ServiceRegistration<S> serviceRegistration, S o)
      Specified by:
      ungetService in interface org.osgi.framework.ServiceFactory<S>
    • keepInstances

      private boolean keepInstances()
    • getComponentManagers

      public void getComponentManagers(List<AbstractComponentManager<S>> cms)
      Specified by:
      getComponentManagers in class AbstractComponentManager<S>