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
17
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 }