final void deactivateInternal(int reason, boolean disable, int trackingCount) { if (m_disposed) { return; } if (m_factoryInstance) { disposeInternal(reason); return; } log(LogService.LOG_DEBUG, "Deactivating component", null); // catch any problems from deleting the component to prevent the // component to remain in the deactivating state ! obtainActivationReadLock("deactivateInternal"); try { doDeactivate(reason, disable); } finally { releaseActivationReadLock("deactivateInternal"); } if (isFactory()) { clear(); } }
final void activateInternal(int trackingCount) { log(LogService.LOG_DEBUG, "ActivateInternal", null); if (m_disposed) { log(LogService.LOG_DEBUG, "ActivateInternal: disposed", null); return; } if (m_activated) { log(LogService.LOG_DEBUG, "ActivateInternal: already activated", null); return; } if (!isEnabled()) { log(LogService.LOG_DEBUG, "Component is not enabled; not activating component", null); return; } if (!isActivatorActive()) { log( LogService.LOG_DEBUG, "Bundle's component activator is not active; not activating component", null); return; } log( LogService.LOG_DEBUG, "Activating component from state {0}", new Object[] {getState()}, null); // Before creating the implementation object, we are going to // test if we have configuration if such is required if (!hasConfiguration() && getComponentMetadata().isConfigurationRequired()) { log(LogService.LOG_DEBUG, "Missing required configuration, cannot activate", null); return; } // Before creating the implementation object, we are going to // test that the bundle has enough permissions to register services if (!hasServiceRegistrationPermissions()) { log( LogService.LOG_DEBUG, "Component is not permitted to register all services, cannot activate", null); return; } obtainActivationReadLock("activateInternal"); try { // Before creating the implementation object, we are going to // test if all the mandatory dependencies are satisfied if (!verifyDependencyManagers()) { log(LogService.LOG_DEBUG, "Not all dependencies satisfied, cannot activate", null); return; } if (!registerService()) { // some other thread is activating us, or we got concurrently deactivated. return; } if ((isImmediate() || getComponentMetadata().isFactory())) { getServiceInternal(); } } finally { releaseActivationReadLock("activateInternal"); } }