View Javadoc

1   package cz.cuni.amis.pogamut.base.agent.params;
2   
3   import cz.cuni.amis.pogamut.base.agent.IAgentId;
4   import cz.cuni.amis.pogamut.base.agent.utils.runner.IAgentRunner;
5   
6   /**
7    * Parent interface for all agent's parameters interfaces/implementations.
8    * <p><p>
9    * Note that this is the most general way for passing parameters to Java, i.e., you are allowed to pass
10   * arbitrary object (possibly containing getters for more objects) that configures your agent.
11   * <p><p>
12   * The best (and intended) usage is to put the implementation of this interface into the module for 
13   * Guice IOC which will allow you to inject those parameters to any class you want allowing you to 
14   * easily pass values from the outside to any inner agent's class (it suffice to put {@link IAgentParameters}
15   * as a parameter of the constructor used by Guice). 
16   * 
17   * @author Jimmy
18   */
19  public interface IAgentParameters {
20  
21  	/**
22  	 * Fills missing parameters of 'this' with values from 'defaults'.
23  	 * <p><p>
24  	 * This method is meant as a hook for {@link IAgentRunner}s that can ease the burden
25  	 * of instantiating&launching the agent into a specific environment.
26  	 * <p><p>
27  	 * It assigns params from 'default' only to fields (of this) that are null!
28  	 * 
29  	 * @param defaults values that should filled missing parameters
30  	 */
31  	public void assignDefaults(IAgentParameters defaults);
32  	
33  	/**
34  	 * Returns unique agent's id (and human-readable name) that is going to be used by the newly created agent instance.
35  	 * @return unique agent's id
36  	 */
37  	public IAgentId getAgentId();
38  	
39  }