You can achieve this using the AMSSubscriber class and listen for events when the container is added or removed. See the sample code below:
public class myAgent extends Agent { private ArrayList<ContainerID> availableContainers = new ArrayList<ContainerID>(); protected void setup() { AMSSubscriber subscriber = new AMSSubscriber(){ protected void installHandlers(Map handlers){ EventHandler addedHandler = new EventHandler(){ public void handle(Event event){ AddedContainer addedContainer = (AddedContainer) event; availableContainers.add(addedContainer.getContainer()); } }; handlers.put(IntrospectionVocabulary.ADDEDCONTAINER,addedHandler); EventHandler removedHandler = new EventHandler(){ public void handle(Event event){ RemovedContainer removedContainer = (RemovedContainer) event; ArrayList<ContainerID> temp = new ArrayList<ContainerID>(availableContainers); for(ContainerID container : temp){ if(container.getID().equalsIgnoreCase(removedContainer.getContainer().getID())) availableContainers.remove(container); } } }; handlers.put(IntrospectionVocabulary.REMOVEDCONTAINER,removedHandler); } }; addBehaviour(subscriber); } }
Link: 1) Development of multi-agent systems with JADE Fabio Luigi Bellifemin, Giovanni Kayr, Dominic Greenwood (p. 111) 2) Jade API
source share