package jadex.bdi.testcases.service;
import jadex.bdi.runtime.IBDIExternalAccess;
import jadex.bdi.runtime.IBDIInternalAccess;
import jadex.bridge.IComponentStep;
import jadex.bridge.IExternalAccess;
import jadex.bridge.IInternalAccess;
import jadex.commons.Future;
import jadex.commons.IFuture;
import jadex.commons.service.BasicService;
/**
* Simple service that fetches a belief value.
*/
public class BeliefGetter extends BasicService implements IBeliefGetter
{
//-------- attributes --------
/** The agent's external access. */
protected IBDIExternalAccess agent;
//-------- constructors --------
/**
* Create a service.
*/
public BeliefGetter(IExternalAccess agent)
{
super(agent.getServiceProvider().getId(), IBeliefGetter.class, null);
this.agent = (IBDIExternalAccess)agent;
}
//-------- methods --------
/**
* Get the fact of a belief.
* @param belname The belief name.
* @return The fact.
*/
public IFuture getFact(final String belname)
{
final Future ret = new Future();
agent.scheduleStep(new IComponentStep()
{
public Object execute(IInternalAccess ia)
{
IBDIInternalAccess bia = (IBDIInternalAccess)ia;
ret.setResult(bia.getBeliefbase().getBelief(belname).getFact());
return null;
}
});
// agent.getBeliefbase().getBeliefFact(belname).addResultListener(new DelegationResultListener(ret));
return ret;
}
}