public class BDIAgentFeature extends jadex.bridge.component.impl.AbstractComponentFeature implements IBDIAgentFeature, IInternalBDIAgentFeature
Modifier and Type | Class and Description |
---|---|
static class |
BDIAgentFeature.ChangeInfoEntryMapper
Map a change info as Map:Entry.
|
static class |
BDIAgentFeature.GoalsExistCondition
Condition that tests if goal instances of an mgoal exist.
|
static class |
BDIAgentFeature.LifecycleStateCondition
Condition for checking the lifecycle state of a goal.
|
static class |
BDIAgentFeature.NotInShutdownCondition
Condition that tests if goal instances of an mgoal exist.
|
static class |
BDIAgentFeature.PlansExistCondition
Condition that tests if goal instances of an mplan exist.
|
Modifier and Type | Field and Description |
---|---|
protected BDIModel |
bdimodel
The bdi model.
|
protected RCapability |
capa
The bdi state.
|
protected java.util.Map<jadex.rules.eca.EventType,jadex.commons.IResultCommand<jadex.commons.future.IFuture<java.lang.Void>,jadex.commons.beans.PropertyChangeEvent>> |
eventadders
The event adders.
|
static jadex.bridge.component.IComponentFeatureFactory |
FACTORY |
protected static java.util.Map<java.lang.Object,java.util.List<java.lang.Object[]>> |
initwrites
Saved init writes.
|
protected jadex.rules.eca.RuleSystem |
rulesystem
The rule system.
|
Constructor and Description |
---|
BDIAgentFeature(jadex.bridge.IInternalAccess component,
jadex.bridge.component.ComponentCreationInfo cinfo)
Factory method constructor for instance level.
|
Modifier and Type | Method and Description |
---|---|
protected static java.lang.Object |
adaptToCapability(java.lang.Object obj,
java.lang.String capa,
IBDIModel bdimodel)
Adapt element for use in inner capabilities.
|
static void |
addBeliefEvents(jadex.bridge.IInternalAccess ia,
java.util.List<jadex.rules.eca.EventType> events,
java.lang.String belname)
Create belief events from a belief name.
|
static void |
addBeliefEvents(MCapability mcapa,
java.util.List<jadex.rules.eca.EventType> events,
java.lang.String belname,
java.lang.ClassLoader cl)
Create belief events from a belief name.
|
void |
addBeliefListener(java.lang.String name,
IBeliefListener listener)
Add a belief listener.
|
static void |
addEvent(java.util.List<jadex.rules.eca.EventType> events,
jadex.rules.eca.EventType event) |
static void |
addExpressionEvents(jadex.bridge.modelinfo.UnparsedExpression expression,
java.util.List<jadex.rules.eca.EventType> events,
MParameterElement owner)
Init the event, when loaded from xml.
|
static void |
addInitArgs(java.lang.Object obj,
java.lang.Class<?> clazz,
java.lang.Class<?>[] argtypes,
java.lang.Object[] args)
Add an entry to the init calls.
|
protected static void |
addInitWrite(jadex.bridge.IInternalAccess agent,
java.lang.String belname,
java.lang.Object val)
Add an init write.
|
static void |
addParameterEvents(MParameterElement mpelem,
MCapability mcapa,
java.util.List<jadex.rules.eca.EventType> events,
java.lang.String paramname,
java.lang.ClassLoader cl)
Create parameter events from a belief name.
|
<T,E> jadex.commons.future.IFuture<E> |
adoptPlan(T plan)
Dispatch a pojo plan and wait for its result.
|
<T,E> jadex.commons.future.IFuture<E> |
adoptPlan(T plan,
java.lang.Object... args)
Dispatch a goal wait for its result.
|
static void |
createChangeEvent(java.lang.Object val,
java.lang.Object oldval,
java.lang.Object info,
jadex.bridge.IInternalAccess agent,
java.lang.String belname)
Caution: this method is used from byte engineered code, change signature with caution
Create a belief changed event.
|
static jadex.rules.eca.EventType |
createEventType(RawEvent rawev) |
<T,E> jadex.commons.future.IFuture<E> |
dispatchTopLevelGoal(T goal)
Dispatch a pojo goal wait for its result.
|
void |
dropGoal(java.lang.Object goal)
Drop a pojo goal.
|
protected static jadex.commons.Tuple2<java.lang.reflect.Field,java.lang.Object> |
findFieldWithOuterClass(java.lang.Object obj,
java.lang.String fieldname) |
protected static java.lang.reflect.Field |
findFieldWithSuperclass(java.lang.Class<?> cl,
java.lang.String fieldname) |
static java.lang.Object |
getAbstractBeliefValue(jadex.bridge.IInternalAccess component,
java.lang.String capa,
java.lang.String name,
java.lang.Class<?> type)
Get the value of an abstract belief.
|
static IBDIAgentFeature |
getBDIAgentFeature(jadex.bridge.IInternalAccess agent)
Get the feature from the agent.
|
IBDIModel |
getBDIModel()
Get the bdimodel.
|
protected static java.lang.String |
getBeliefName(java.lang.Object obj,
java.lang.String fieldname) |
RCapability |
getCapability()
Get the state.
|
static RCapability |
getCapability(jadex.bridge.IInternalAccess agent)
Get the rcapa.
|
java.lang.Object |
getCapabilityObject(java.lang.String name)
Get a capability pojo object.
|
java.util.List<jadex.bridge.service.types.monitoring.IMonitoringEvent> |
getCurrentStateEvents()
Get the current state as events.
|
protected static jadex.commons.IResultCommand<jadex.commons.future.IFuture<java.lang.Void>,jadex.commons.beans.PropertyChangeEvent> |
getEventAdder(jadex.bridge.IInternalAccess agent,
jadex.rules.eca.EventType etype,
MBelief mbel,
jadex.rules.eca.RuleSystem rs) |
java.util.Map<jadex.rules.eca.EventType,jadex.commons.IResultCommand<jadex.commons.future.IFuture<java.lang.Void>,jadex.commons.beans.PropertyChangeEvent>> |
getEventAdders()
Get the event type.
|
IGoal |
getGoal(java.lang.Object goal)
Get the goal api representation for a pojo goal.
|
static java.util.List<jadex.rules.eca.EventType> |
getGoalEvents(MGoal mgoal)
Create goal events for a goal name.
|
java.util.Collection<IGoal> |
getGoals()
Get the current goals as api representation.
|
<T> java.util.Collection<T> |
getGoals(java.lang.Class<T> clazz)
Get the goals of a given type as pojos.
|
static java.util.List<jadex.commons.Tuple2<java.lang.Class<?>[],java.lang.Object[]>> |
getInitCalls(java.lang.Object obj,
java.lang.Class<?> clazz)
Get the init calls.
|
static java.lang.Object[] |
getInjectionValues(java.lang.Class<?>[] ptypes,
java.lang.annotation.Annotation[][] anns,
MElement melement,
ChangeEvent event,
RPlan rplan,
RProcessableElement rpe,
java.util.Collection<java.lang.Object> vs,
jadex.bridge.IInternalAccess component)
Get parameter values for injection into method and constructor calls.
|
static java.lang.Object[] |
getInjectionValues(java.lang.Class<?>[] ptypes,
java.lang.annotation.Annotation[][] anns,
MElement melement,
ChangeEvent event,
RPlan rplan,
RProcessableElement rpe,
jadex.bridge.IInternalAccess component)
Get parameter values for injection into method and constructor calls.
|
static MCapability |
getMCapability(jadex.bridge.IInternalAccess agent)
Get the mcapa.
|
jadex.rules.eca.RuleSystem |
getRuleSystem()
Get the rulesystem.
|
jadex.commons.future.IFuture<java.lang.Void> |
init()
Initialize the feature.
|
protected jadex.commons.future.IFuture<java.lang.Void> |
initCapabilities(java.lang.Object agent,
jadex.commons.Tuple2<jadex.commons.FieldInfo,BDIModel>[] caps,
int i)
Init the capability pojo objects.
|
protected void |
injectAgent(jadex.bridge.IInternalAccess pa,
java.lang.Object agent,
jadex.micro.MicroModel model,
java.lang.String globalname)
Inject the agent into annotated fields.
|
protected void |
invokeInitCalls(java.lang.Object pojo)
Invoke init constructor calls.
|
protected boolean |
isComponentThread() |
static void |
observeValue(jadex.rules.eca.RuleSystem rs,
java.lang.Object val,
jadex.bridge.IInternalAccess agent,
jadex.rules.eca.EventType etype,
MBelief mbel)
Observe a value.
|
static void |
observeValue(jadex.rules.eca.RuleSystem rs,
java.lang.Object val,
jadex.bridge.IInternalAccess agent,
java.lang.String etype,
MBelief mbel)
Observe a value.
|
static void |
performInitWrites(jadex.bridge.IInternalAccess agent)
Perform the writes of the init.
|
static void |
publishToolBeliefEvent(jadex.bridge.IInternalAccess ia,
MBelief mbel) |
static java.util.List<jadex.rules.eca.EventType> |
readAnnotationEvents(jadex.bridge.IInternalAccess ia,
java.lang.annotation.Annotation[][] annos)
Read the annotation events from method annotations.
|
void |
removeBeliefListener(java.lang.String name,
IBeliefListener listener)
Remove a belief listener.
|
static void |
setAbstractBeliefValue(jadex.bridge.IInternalAccess component,
java.lang.String capa,
java.lang.String name,
java.lang.Object value)
Set the value of an abstract belief.
|
protected static java.lang.Object |
setFieldValue(java.lang.Object obj,
java.lang.String fieldname,
java.lang.Object val)
Set the value of a field.
|
protected void |
testBodyAborted(RPlan rplan)
Check if plan is already aborted.
|
static void |
unobserveObject(jadex.bridge.IInternalAccess agent,
java.lang.Object object,
jadex.rules.eca.EventType etype,
jadex.rules.eca.RuleSystem rs)
Unobserve an object.
|
static void |
unobserveValue(jadex.bridge.IInternalAccess agent,
java.lang.String belname)
Unobserving an old belief value.
|
protected void |
wrapCollections(MCapability mcapa,
java.lang.Object agent) |
static void |
writeArrayField(java.lang.Object array,
int index,
java.lang.Object val,
java.lang.Object agentobj,
java.lang.String fieldname)
Method that is called automatically when a belief
is written as array access.
|
static void |
writeArrayParameterField(java.lang.Object array,
int index,
java.lang.Object val,
java.lang.Object agentobj,
java.lang.String fieldname)
Method that is called automatically when a parameter
is written as array access.
|
static void |
writeField(java.lang.Object val,
java.lang.String fieldname,
java.lang.Object obj,
jadex.bridge.IInternalAccess agent)
Method that is called automatically when a belief
is written as field access.
|
protected void |
writeField(java.lang.Object val,
java.lang.String belname,
java.lang.String fieldname,
java.lang.Object obj)
Method that is called automatically when a belief
is written as field access.
|
protected void |
writeField(java.lang.Object val,
java.lang.String belname,
java.lang.String fieldname,
java.lang.Object obj,
jadex.rules.eca.EventType ev1,
jadex.rules.eca.EventType ev2)
Method that is called automatically when a belief
is written as field access.
|
static void |
writeParameterField(java.lang.Object val,
java.lang.String fieldname,
java.lang.Object obj,
jadex.bridge.IInternalAccess agent)
Method that is called automatically when a parameter
is written as field access.
|
public static final jadex.bridge.component.IComponentFeatureFactory FACTORY
protected BDIModel bdimodel
protected jadex.rules.eca.RuleSystem rulesystem
protected RCapability capa
protected java.util.Map<jadex.rules.eca.EventType,jadex.commons.IResultCommand<jadex.commons.future.IFuture<java.lang.Void>,jadex.commons.beans.PropertyChangeEvent>> eventadders
protected static final java.util.Map<java.lang.Object,java.util.List<java.lang.Object[]>> initwrites
public BDIAgentFeature(jadex.bridge.IInternalAccess component, jadex.bridge.component.ComponentCreationInfo cinfo)
public jadex.commons.future.IFuture<java.lang.Void> init()
init
in interface jadex.bridge.component.IComponentFeature
init
in class jadex.bridge.component.impl.AbstractComponentFeature
public static void addInitArgs(java.lang.Object obj, java.lang.Class<?> clazz, java.lang.Class<?>[] argtypes, java.lang.Object[] args)
obj
- object instance that owns the field __initargsclazz
- Class definition of the obj objectargtypes
- Signature of the init methodargs
- Actual argument values for the init methodpublic static java.util.List<jadex.commons.Tuple2<java.lang.Class<?>[],java.lang.Object[]>> getInitCalls(java.lang.Object obj, java.lang.Class<?> clazz)
protected void writeField(java.lang.Object val, java.lang.String belname, java.lang.String fieldname, java.lang.Object obj)
protected void writeField(java.lang.Object val, java.lang.String belname, java.lang.String fieldname, java.lang.Object obj, jadex.rules.eca.EventType ev1, jadex.rules.eca.EventType ev2)
protected static java.lang.Object setFieldValue(java.lang.Object obj, java.lang.String fieldname, java.lang.Object val) throws java.lang.IllegalAccessException
obj
- The object.fieldname
- The name of the field.java.lang.IllegalAccessException
protected static jadex.commons.Tuple2<java.lang.reflect.Field,java.lang.Object> findFieldWithOuterClass(java.lang.Object obj, java.lang.String fieldname)
obj
- fieldname
- protected static java.lang.reflect.Field findFieldWithSuperclass(java.lang.Class<?> cl, java.lang.String fieldname)
cl
- fieldname
- public static void writeField(java.lang.Object val, java.lang.String fieldname, java.lang.Object obj, jadex.bridge.IInternalAccess agent)
protected static void addInitWrite(jadex.bridge.IInternalAccess agent, java.lang.String belname, java.lang.Object val)
public static void performInitWrites(jadex.bridge.IInternalAccess agent)
public static void writeArrayField(java.lang.Object array, int index, java.lang.Object val, java.lang.Object agentobj, java.lang.String fieldname)
public static void unobserveValue(jadex.bridge.IInternalAccess agent, java.lang.String belname)
agent
- The agent.belname
- The belief name.public static void observeValue(jadex.rules.eca.RuleSystem rs, java.lang.Object val, jadex.bridge.IInternalAccess agent, java.lang.String etype, MBelief mbel)
public static void observeValue(jadex.rules.eca.RuleSystem rs, java.lang.Object val, jadex.bridge.IInternalAccess agent, jadex.rules.eca.EventType etype, MBelief mbel)
protected static jadex.commons.IResultCommand<jadex.commons.future.IFuture<java.lang.Void>,jadex.commons.beans.PropertyChangeEvent> getEventAdder(jadex.bridge.IInternalAccess agent, jadex.rules.eca.EventType etype, MBelief mbel, jadex.rules.eca.RuleSystem rs)
public static java.lang.Object getAbstractBeliefValue(jadex.bridge.IInternalAccess component, java.lang.String capa, java.lang.String name, java.lang.Class<?> type)
public static void setAbstractBeliefValue(jadex.bridge.IInternalAccess component, java.lang.String capa, java.lang.String name, java.lang.Object value)
public static void unobserveObject(jadex.bridge.IInternalAccess agent, java.lang.Object object, jadex.rules.eca.EventType etype, jadex.rules.eca.RuleSystem rs)
public static void createChangeEvent(java.lang.Object val, java.lang.Object oldval, java.lang.Object info, jadex.bridge.IInternalAccess agent, java.lang.String belname)
val
- The new value.agent
- The agent.belname
- The belief name.public static void publishToolBeliefEvent(jadex.bridge.IInternalAccess ia, MBelief mbel)
protected static java.lang.String getBeliefName(java.lang.Object obj, java.lang.String fieldname)
public static void writeParameterField(java.lang.Object val, java.lang.String fieldname, java.lang.Object obj, jadex.bridge.IInternalAccess agent)
public static void writeArrayParameterField(java.lang.Object array, int index, java.lang.Object val, java.lang.Object agentobj, java.lang.String fieldname)
protected boolean isComponentThread()
protected void injectAgent(jadex.bridge.IInternalAccess pa, java.lang.Object agent, jadex.micro.MicroModel model, java.lang.String globalname)
public java.lang.Object getCapabilityObject(java.lang.String name)
protected static java.lang.Object adaptToCapability(java.lang.Object obj, java.lang.String capa, IBDIModel bdimodel)
obj
- The object to adapt (e.g. a change event)capa
- The capability name or null for agent.protected jadex.commons.future.IFuture<java.lang.Void> initCapabilities(java.lang.Object agent, jadex.commons.Tuple2<jadex.commons.FieldInfo,BDIModel>[] caps, int i)
protected void invokeInitCalls(java.lang.Object pojo)
protected void wrapCollections(MCapability mcapa, java.lang.Object agent)
public <T> java.util.Collection<T> getGoals(java.lang.Class<T> clazz)
getGoals
in interface IBDIAgentFeature
clazz
- The pojo goal class.public java.util.Collection<IGoal> getGoals()
getGoals
in interface IBDIAgentFeature
public IGoal getGoal(java.lang.Object goal)
getGoal
in interface IBDIAgentFeature
goal
- The pojo goal.public <T,E> jadex.commons.future.IFuture<E> dispatchTopLevelGoal(T goal)
dispatchTopLevelGoal
in interface IBDIAgentFeature
goal
- The pojo goal.public void dropGoal(java.lang.Object goal)
dropGoal
in interface IBDIAgentFeature
goal
- The pojo goal.public <T,E> jadex.commons.future.IFuture<E> adoptPlan(T plan)
adoptPlan
in interface IBDIAgentFeature
plan
- The pojo plan or plan name.public <T,E> jadex.commons.future.IFuture<E> adoptPlan(T plan, java.lang.Object... args)
adoptPlan
in interface IBDIAgentFeature
plan
- The pojo plan or plan name.args
- The plan arguments.public void addBeliefListener(java.lang.String name, IBeliefListener listener)
addBeliefListener
in interface IBDIAgentFeature
addBeliefListener
in interface IInternalBDIAgentFeature
name
- The belief name.listener
- The belief listener.public void removeBeliefListener(java.lang.String name, IBeliefListener listener)
removeBeliefListener
in interface IBDIAgentFeature
removeBeliefListener
in interface IInternalBDIAgentFeature
name
- The belief name.listener
- The belief listener.protected void testBodyAborted(RPlan rplan)
public static java.lang.Object[] getInjectionValues(java.lang.Class<?>[] ptypes, java.lang.annotation.Annotation[][] anns, MElement melement, ChangeEvent event, RPlan rplan, RProcessableElement rpe, jadex.bridge.IInternalAccess component)
public static java.lang.Object[] getInjectionValues(java.lang.Class<?>[] ptypes, java.lang.annotation.Annotation[][] anns, MElement melement, ChangeEvent event, RPlan rplan, RProcessableElement rpe, java.util.Collection<java.lang.Object> vs, jadex.bridge.IInternalAccess component)
public jadex.rules.eca.RuleSystem getRuleSystem()
getRuleSystem
in interface IInternalBDIAgentFeature
public IBDIModel getBDIModel()
getBDIModel
in interface IInternalBDIAgentFeature
public RCapability getCapability()
getCapability
in interface IInternalBDIAgentFeature
public static java.util.List<jadex.rules.eca.EventType> getGoalEvents(MGoal mgoal)
public static void addBeliefEvents(jadex.bridge.IInternalAccess ia, java.util.List<jadex.rules.eca.EventType> events, java.lang.String belname)
public static void addBeliefEvents(MCapability mcapa, java.util.List<jadex.rules.eca.EventType> events, java.lang.String belname, java.lang.ClassLoader cl)
public static void addParameterEvents(MParameterElement mpelem, MCapability mcapa, java.util.List<jadex.rules.eca.EventType> events, java.lang.String paramname, java.lang.ClassLoader cl)
public static void addExpressionEvents(jadex.bridge.modelinfo.UnparsedExpression expression, java.util.List<jadex.rules.eca.EventType> events, MParameterElement owner)
public static void addEvent(java.util.List<jadex.rules.eca.EventType> events, jadex.rules.eca.EventType event)
public static java.util.List<jadex.rules.eca.EventType> readAnnotationEvents(jadex.bridge.IInternalAccess ia, java.lang.annotation.Annotation[][] annos)
public java.util.List<jadex.bridge.service.types.monitoring.IMonitoringEvent> getCurrentStateEvents()
public static jadex.rules.eca.EventType createEventType(RawEvent rawev)
public static IBDIAgentFeature getBDIAgentFeature(jadex.bridge.IInternalAccess agent)
public static MCapability getMCapability(jadex.bridge.IInternalAccess agent)
public static RCapability getCapability(jadex.bridge.IInternalAccess agent)
public java.util.Map<jadex.rules.eca.EventType,jadex.commons.IResultCommand<jadex.commons.future.IFuture<java.lang.Void>,jadex.commons.beans.PropertyChangeEvent>> getEventAdders()
getEventAdders
in interface IInternalBDIAgentFeature