![JAR search and dependency download from the Maven repository](/logo.png)
jason.infra.jade.JadeRuntimeServices Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jason Show documentation
Show all versions of jason Show documentation
Jason is a programming language to develop BDI/cognitive agents
The newest version!
package jason.infra.jade;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import jade.core.Agent;
import jade.domain.DFService;
import jade.domain.FIPAAgentManagement.DFAgentDescription;
import jade.domain.FIPAAgentManagement.SearchConstraints;
import jade.domain.FIPAAgentManagement.ServiceDescription;
import jade.wrapper.AgentController;
import jade.wrapper.ContainerController;
import jade.wrapper.ControllerException;
import jason.JasonException;
import jason.architecture.AgArch;
import jason.mas2j.AgentParameters;
import jason.mas2j.ClassParameters;
import jason.runtime.RuntimeServices;
import jason.runtime.Settings;
public class JadeRuntimeServices implements RuntimeServices {
private static Logger logger = Logger.getLogger(JadeRuntimeServices.class.getName());
private ContainerController cc;
private Agent jadeAgent;
JadeRuntimeServices(ContainerController cc, Agent ag) {
this.cc = cc;
jadeAgent = ag;
}
@Override
public String getNewAgentName(String baseName) {
return baseName;
}
@Override
public boolean isRunning() {
return cc != null;
}
public String createAgent(String agName, String agSource, String agClass, Collection archClasses, ClassParameters bbPars, Settings stts, jason.asSemantics.Agent father) throws Exception {
try {
if (logger.isLoggable(Level.FINE)) {
logger.fine("Creating jade agent " + agName + "from source " + agSource + "(agClass=" + agClass + ", archClass=" + archClasses + ", settings=" + stts);
}
AgentParameters ap = new AgentParameters();
ap.setAgClass(agClass);
ap.addArchClass(archClasses);
ap.setBB(bbPars);
ap.setSource(agSource);
if (stts == null) stts = new Settings();
agName = getNewAgentName(agName);
cc.createNewAgent(agName, JadeAgArch.class.getName(), new Object[] { ap, false, false }).start();
return agName;
} catch (Exception e) {
logger.log(Level.SEVERE, "Error creating agent " + agName, e);
}
return null;
}
public void startAgent(String agName) {
// nothing to do, the jade create new agent is enough
}
public AgArch clone(jason.asSemantics.Agent source, Collection archClasses, String agName) throws JasonException {
throw new JasonException("clone for JADE is not implemented!");
}
public Collection getAgentsNames() {
// TODO: make a cache list and update it when a new agent enters the system
if (jadeAgent == null) return null;
try {
Set ags = new HashSet<>();
DFAgentDescription template = new DFAgentDescription();
ServiceDescription sd = new ServiceDescription();
sd.setType("jason");
sd.setName(JadeAgArch.dfName);
template.addServices(sd);
DFAgentDescription[] ans = DFService.search(jadeAgent, template);
for (int i=0; i0) {
// copy current services
@SuppressWarnings("unchecked")
Iterator i = result[0].getAllServices();
while (i.hasNext()) {
dfd.addServices(i.next());
}
DFService.deregister(jadeAgent);
}
// add new service
ServiceDescription sd = new ServiceDescription();
sd.setType( type );
sd.setName( service );
dfd.addServices(sd);
DFService.register(jadeAgent, dfd );
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void dfDeRegister(String agName, String service, String type) {
try {
// removes only service
DFAgentDescription dfd = new DFAgentDescription();
dfd.setName( jadeAgent.getAID() );
DFAgentDescription[] result = DFService.search(jadeAgent, dfd);
if (result.length>0) {
// copy current services
@SuppressWarnings("unchecked")
Iterator i = result[0].getAllServices();
while (i.hasNext()) {
if (!i.next().toString().contains(service))
dfd.addServices(i.next());
}
DFService.deregister(jadeAgent);
}
DFService.register(jadeAgent, dfd );
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public Collection dfSearch(String service, String type) {
List r = new ArrayList<>();
try {
DFAgentDescription dfd = new DFAgentDescription();
ServiceDescription sd = new ServiceDescription();
sd.setType( type );
sd.setName( service );
dfd.addServices(sd);
DFAgentDescription[] result = DFService.search(jadeAgent, dfd);
for (int i=0; i defaultAgArchs = new ArrayList<>();
@Override
public void registerDefaultAgArch(String agArch) {
defaultAgArchs.add(agArch);
}
@Override
public Collection getDefaultAgArchs() {
return defaultAgArchs;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy