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(); } }
/** * Disposes off this component deactivating and disabling it first as required. After disposing * off the component, it may not be used anymore. * * <p>This method unlike the other state change methods immediately takes action and disposes the * component. The reason for this is, that this method has to actually complete before other * actions like bundle stopping may continue. */ public void dispose(int reason) { m_disposed = true; disposeInternal(reason); }