protected AbstractComponentManager(
      BundleComponentActivator activator,
      ComponentMetadata metadata,
      ComponentMethods componentMethods,
      boolean factoryInstance) {
    m_factoryInstance = factoryInstance;
    m_activator = activator;
    m_componentMetadata = metadata;
    this.m_componentMethods = componentMethods;
    m_componentId = -1;

    m_dependencyManagers = loadDependencyManagers(metadata);

    m_stateLock = new ReentrantLock(true);

    // dump component details
    if (isLogEnabled(LogService.LOG_DEBUG)) {
      log(
          LogService.LOG_DEBUG,
          "Component {0} created: DS={1}, implementation={2}, immediate={3}, default-enabled={4}, factory={5}, configuration-policy={6}, activate={7}, deactivate={8}, modified={9} configuration-pid={10}",
          new Object[] {
            metadata.getName(),
            metadata.getNamespaceCode(),
            metadata.getImplementationClassName(),
            metadata.isImmediate(),
            metadata.isEnabled(),
            metadata.getFactoryIdentifier(),
            metadata.getConfigurationPolicy(),
            metadata.getActivate(),
            metadata.getDeactivate(),
            metadata.getModified(),
            metadata.getConfigurationPid()
          },
          null);

      if (metadata.getServiceMetadata() != null) {
        log(
            LogService.LOG_DEBUG,
            "Component {0} Services: servicefactory={1}, services={2}",
            new Object[] {
              metadata.getName(),
              Boolean.valueOf(metadata.getServiceMetadata().isServiceFactory()),
              Arrays.asList(metadata.getServiceMetadata().getProvides())
            },
            null);
      }

      if (metadata.getProperties() != null) {
        log(
            LogService.LOG_DEBUG,
            "Component {0} Properties: {1}",
            new Object[] {metadata.getName(), metadata.getProperties()},
            null);
      }
    }
  }
 public boolean isImmediate() {
   return m_componentMetadata.isImmediate();
 }