View Javadoc

1   package cz.cuni.amis.pogamut.base.agent.jmx.adapter;
2   
3   import javax.management.InstanceAlreadyExistsException;
4   import javax.management.MBeanRegistrationException;
5   import javax.management.MBeanServer;
6   import javax.management.MalformedObjectNameException;
7   import javax.management.NotCompliantMBeanException;
8   import javax.management.ObjectName;
9   
10  import cz.cuni.amis.pogamut.base.agent.IAgent;
11  import cz.cuni.amis.pogamut.base.agent.exceptions.AgentException;
12  import cz.cuni.amis.pogamut.base.agent.state.level0.IAgentState;
13  import cz.cuni.amis.pogamut.base.utils.jmx.flag.JMXFlagDecorator;
14  
15  /**
16   * Class for exporting arbitrary agents as managed MBeans.
17   * @author Ik
18   */
19  public class AgentMBeanAdapter<T extends IAgent> implements IAgentMBeanAdapter {
20  
21      public static final String AGENT_STATE_FLAG_NAME = "agent_state_flag";
22  
23  	public static final String AGENT_NAME_FLAG_NAME = "agent_name_flag";
24      
25      T agent = null;
26      
27      JMXFlagDecorator<IAgentState> jmxAgentState = null;
28      JMXFlagDecorator<String> jmxAgentName = null;
29  
30  
31      public AgentMBeanAdapter(T agent, ObjectName objectName, MBeanServer mbs) throws MalformedObjectNameException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException {
32          this.agent = agent;
33          jmxAgentState = new JMXFlagDecorator<IAgentState>(agent.getState(), objectName, mbs, AGENT_STATE_FLAG_NAME);
34          jmxAgentName = new JMXFlagDecorator<String>(agent.getComponentId().getName(), objectName, mbs, AGENT_NAME_FLAG_NAME);
35      }
36  
37      protected T getAgent() {
38          return agent;
39      }
40  
41      @Override
42      public ObjectName getObjectName(String domain) throws MalformedObjectNameException {
43          return ObjectName.getInstance(domain + ":name=" + agent.getComponentId().getToken().replace(".", "_") + ",type=agent");
44      }
45  
46      @Override
47      public String getComponentId() {
48          return agent.getComponentId().getToken();
49      }
50  
51      @Override
52      public IAgentState getState() {
53          return agent.getState().getFlag();
54      }
55      
56      @Override
57      public void start() throws AgentException {
58          agent.start();
59      }
60  
61      @Override
62      public void pause() throws AgentException {
63          agent.pause();
64      }
65  
66      @Override
67      public void resume() throws AgentException {
68          agent.resume();
69      }
70  
71      @Override
72      public void stop() throws AgentException {
73          agent.stop();
74      }
75  
76      @Override
77      public void kill() {
78          agent.kill();
79      }
80  
81  	@Override
82  	public String getName() {
83  		return agent.getComponentId().getName().getFlag();
84  	}
85  
86  }