package org.rhq.embeddedagent.extension; import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationFailedException; import org.jboss.as.controller.OperationStepHandler; import org.jboss.dmr.ModelNode; import org.jboss.logging.Logger; import org.jboss.msc.service.ServiceName; import org.jboss.msc.service.ServiceNotFoundException; import org.jboss.msc.service.StartException; class AgentSubsystemRestart implements OperationStepHandler { static final AgentSubsystemRestart INSTANCE = new AgentSubsystemRestart(); private final Logger log = Logger.getLogger(AgentSubsystemRestart.class); private AgentSubsystemRestart() { } @Override public void execute(OperationContext opContext, ModelNode model) throws OperationFailedException { try { ServiceName name = AgentService.SERVICE_NAME; AgentService service = (AgentService) opContext.getServiceRegistry(true).getRequiredService(name) .getValue(); log.info("Asked to restart the embedded agent"); service.stopAgent(); service.startAgent(); } catch (ServiceNotFoundException snfe) { throw new OperationFailedException("Cannot restart embedded agent - the agent is disabled", snfe); } catch (StartException se) { throw new OperationFailedException("Cannot restart embedded agent", se); } opContext.completeStep(); return; } }