1 package cz.cuni.amis.pogamut.base3d.agent;
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 com.google.inject.Inject;
11
12 import cz.cuni.amis.pogamut.base.agent.IAgentId;
13 import cz.cuni.amis.pogamut.base.agent.impl.AbstractEmbodiedAgent;
14 import cz.cuni.amis.pogamut.base.agent.jmx.AgentJMXComponents;
15 import cz.cuni.amis.pogamut.base.agent.jmx.adapter.AgentMBeanAdapter;
16 import cz.cuni.amis.pogamut.base.communication.command.IAct;
17 import cz.cuni.amis.pogamut.base.component.bus.IComponentBus;
18 import cz.cuni.amis.pogamut.base.utils.guice.AgentScoped;
19 import cz.cuni.amis.pogamut.base.utils.logging.IAgentLogger;
20 import cz.cuni.amis.pogamut.base3d.agent.jmx.Agent3DMBeanAdapter;
21 import cz.cuni.amis.pogamut.base3d.worldview.IVisionWorldView;
22
23
24
25
26
27 @AgentScoped
28 public abstract class AbstractAgent3D<WORLD_VIEW extends IVisionWorldView, ACT extends IAct> extends AbstractEmbodiedAgent<WORLD_VIEW, ACT> implements IAgent3D {
29
30 @Inject
31 public AbstractAgent3D(IAgentId agentId, IComponentBus eventBus, IAgentLogger logger, WORLD_VIEW worldView, ACT act) {
32 super(agentId, eventBus, logger, worldView, act);
33 }
34
35 @Override
36 protected AgentJMXComponents createAgentJMX() {
37 return new AgentJMXComponents<IAgent3D>(this) {
38
39 @Override
40 protected AgentMBeanAdapter createAgentMBean(ObjectName objectName, MBeanServer mbs) throws MalformedObjectNameException, InstanceAlreadyExistsException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException {
41 return new Agent3DMBeanAdapter(AbstractAgent3D.this, objectName, mbs);
42 }
43 };
44 }
45 }