View Javadoc

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   * Adds Agent3D special JMX abilities.
25   * @author ik
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  }