protected void installAction(AliasControllerContext context) throws Throwable { Object alias = context.getAlias(); Object jmxAlias = JMXObjectNameFix.needsAnAlias(alias); if (jmxAlias != null) alias = jmxAlias; Object original = context.getOriginal(); Object jmxOriginal = JMXObjectNameFix.needsAnAlias(original); if (jmxOriginal != null) original = jmxOriginal; // get the context's controller - not the one we registered with AbstractController controller = (AbstractController)context.getController(); lockWrite(); try { ControllerContext lookup = controller.getRegisteredControllerContext(original, true); controller.registerControllerContext(alias, lookup); if (log.isTraceEnabled()) log.trace("Added alias " + alias + " for context " + context); } finally { unlockWrite(); } }
protected void uninstallAction(AliasControllerContext context) { lockWrite(); try { Object alias = context.getAlias(); Object jmxAlias = JMXObjectNameFix.needsAnAlias(alias); if (jmxAlias != null) alias = jmxAlias; // get the context's controller - not the one we registered with AbstractController controller = (AbstractController)context.getController(); controller.unregisterControllerContext(alias); if (log.isTraceEnabled()) log.trace("Removed alias " + alias); } finally { unlockWrite(); } } }
public void addAlias(Object alias, Object original) throws Throwable { Map<ControllerState, ControllerContextAction> map = createAliasActions(); ControllerContextActions actions = new AbstractControllerContextActions(map); AliasControllerContext context = new InnerAliasControllerContext(alias, getId(), original, actions); preAliasInstall(context); install(context); // is alias in error Throwable error = context.getError(); if (error != null) throw error; if (ControllerState.ERROR.equals(context.getState())) throw new IllegalArgumentException("Alias " + context + " is in error."); }