/** Starts the factory. This method is not called when holding the monitor lock. */ public void starting() { if (m_tracker == null) { if (m_requiredHandlers.size() != 0) { try { String filter = "(&(" + Handler.HANDLER_TYPE_PROPERTY + "=" + PrimitiveHandler.HANDLER_TYPE + ")" + "(factory.state=1)" + ")"; m_tracker = new Tracker(m_context, m_context.createFilter(filter), this); m_tracker.open(); } catch (InvalidSyntaxException e) { m_logger.log( Logger.ERROR, "A factory filter is not valid: " + e.getMessage()); // Holding the lock should not be an issue here. stop(); } } } // Else, the tracking has already started. }
/** Stops all the instance managers. This method is called when holding the lock. */ public void stopping() { if (m_tracker != null) { m_tracker.close(); m_tracker = null; } }