bdi4jade
Changes
bdi-jade/src/bdi4jade/annotation/Belief.java 14(+12 -2)
Details
diff --git a/bdi-jade/.settings/org.eclipse.jdt.ui.prefs b/bdi-jade/.settings/org.eclipse.jdt.ui.prefs
index a80706a..11b50e9 100644
--- a/bdi-jade/.settings/org.eclipse.jdt.ui.prefs
+++ b/bdi-jade/.settings/org.eclipse.jdt.ui.prefs
@@ -1,3 +1,3 @@
eclipse.preferences.version=1
org.eclipse.jdt.ui.javadoc=true
-org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">//----------------------------------------------------------------------------\r\n// Copyright (C) 2011 Ingrid Nunes\r\n// \r\n// This library is free software; you can redistribute it and/or\r\n// modify it under the terms of the GNU Lesser General Public\r\n// License as published by the Free Software Foundation; either\r\n// version 2.1 of the License, or (at your option) any later version.\r\n// \r\n// This library is distributed in the hope that it will be useful,\r\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r\n// Lesser General Public License for more details.\r\n// \r\n// You should have received a copy of the GNU Lesser General Public\r\n// License along with this library; if not, write to the Free Software\r\n// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r\n// \r\n// To contact the authors\:\r\n// http\://inf.ufrgs.br/~ingridnunes/bdi4jade/\r\n//\r\n//----------------------------------------------------------------------------\r\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">//----------------------------------------------------------------------------\n// Copyright (C) 2011 Ingrid Nunes\n// \n// This library is free software; you can redistribute it and/or\n// modify it under the terms of the GNU Lesser General Public\n// License as published by the Free Software Foundation; either\n// version 2.1 of the License, or (at your option) any later version.\n// \n// This library is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n// Lesser General Public License for more details.\n// \n// You should have received a copy of the GNU Lesser General Public\n// License along with this library; if not, write to the Free Software\n// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n// \n// To contact the authors\:\n// http\://inf.ufrgs.br/prosoft/bdi4jade/\n//\n//----------------------------------------------------------------------------\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
bdi-jade/src/bdi4jade/annotation/Belief.java 14(+12 -2)
diff --git a/bdi-jade/src/bdi4jade/annotation/Belief.java b/bdi-jade/src/bdi4jade/annotation/Belief.java
index dcbc622..4599bc5 100644
--- a/bdi-jade/src/bdi4jade/annotation/Belief.java
+++ b/bdi-jade/src/bdi4jade/annotation/Belief.java
@@ -35,8 +35,9 @@ import bdi4jade.plan.planbody.PlanBody;
* This annotation allows to specify that an attribute of a {@link Capability}
* is a belief that should be added to the capability belief base. It can also
* be used in plan bodies ({@link PlanBody}) so that beliefs are injected in
- * plan body attributes. The annotated field should be of the type
- * {@link bdi4jade.belief.Belief}.
+ * plan body attributes and, in this case, a name may be provided to retrieve
+ * the belief. If no name is provided, the attribute name is used. The annotated
+ * field should be of the type {@link bdi4jade.belief.Belief}.
*
* @author Ingrid Nunes
*/
@@ -45,4 +46,13 @@ import bdi4jade.plan.planbody.PlanBody;
@Target(ElementType.FIELD)
public @interface Belief {
+ /**
+ * Returns the name of the belief to be retrieved from the belief base, in
+ * case this annotation is used in a {@link PlanBody}. If no name is
+ * provided, the attribute name is used.
+ *
+ * @return the belief name.
+ */
+ String name() default "";
+
}
diff --git a/bdi-jade/src/bdi4jade/annotation/PartCapability.java b/bdi-jade/src/bdi4jade/annotation/PartCapability.java
index adf9044..79ffa90 100644
--- a/bdi-jade/src/bdi4jade/annotation/PartCapability.java
+++ b/bdi-jade/src/bdi4jade/annotation/PartCapability.java
@@ -16,7 +16,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// To contact the authors:
-// http://inf.ufrgs.br/~ingridnunes/bdi4jade/
+// http://inf.ufrgs.br/prosoft/bdi4jade/
//
//----------------------------------------------------------------------------
diff --git a/bdi-jade/src/bdi4jade/annotation/TransientBelief.java b/bdi-jade/src/bdi4jade/annotation/TransientBelief.java
index f62da01..9a3b5aa 100644
--- a/bdi-jade/src/bdi4jade/annotation/TransientBelief.java
+++ b/bdi-jade/src/bdi4jade/annotation/TransientBelief.java
@@ -16,7 +16,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// To contact the authors:
-// http://inf.ufrgs.br/~ingridnunes/bdi4jade/
+// http://inf.ufrgs.br/prosoft/bdi4jade/
//
//----------------------------------------------------------------------------
diff --git a/bdi-jade/src/bdi4jade/annotation/TransientBeliefSet.java b/bdi-jade/src/bdi4jade/annotation/TransientBeliefSet.java
index cd22c59..9d643a3 100644
--- a/bdi-jade/src/bdi4jade/annotation/TransientBeliefSet.java
+++ b/bdi-jade/src/bdi4jade/annotation/TransientBeliefSet.java
@@ -16,7 +16,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// To contact the authors:
-// http://inf.ufrgs.br/~ingridnunes/bdi4jade/
+// http://inf.ufrgs.br/prosoft/bdi4jade/
//
//----------------------------------------------------------------------------
diff --git a/bdi-jade/src/bdi4jade/core/AbstractBDIAgent.java b/bdi-jade/src/bdi4jade/core/AbstractBDIAgent.java
index 076c9a1..1ed6af3 100644
--- a/bdi-jade/src/bdi4jade/core/AbstractBDIAgent.java
+++ b/bdi-jade/src/bdi4jade/core/AbstractBDIAgent.java
@@ -16,7 +16,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// To contact the authors:
-// http://inf.ufrgs.br/~ingridnunes/bdi4jade/
+// http://inf.ufrgs.br/prosoft/bdi4jade/
//
//----------------------------------------------------------------------------
diff --git a/bdi-jade/src/bdi4jade/core/MultipleCapabilityAgent.java b/bdi-jade/src/bdi4jade/core/MultipleCapabilityAgent.java
index 11928da..28dac52 100644
--- a/bdi-jade/src/bdi4jade/core/MultipleCapabilityAgent.java
+++ b/bdi-jade/src/bdi4jade/core/MultipleCapabilityAgent.java
@@ -16,7 +16,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// To contact the authors:
-// http://inf.ufrgs.br/~ingridnunes/bdi4jade/
+// http://inf.ufrgs.br/prosoft/bdi4jade/
//
//----------------------------------------------------------------------------
diff --git a/bdi-jade/src/bdi4jade/core/SingleCapabilityAgent.java b/bdi-jade/src/bdi4jade/core/SingleCapabilityAgent.java
index fefe2c8..3b7506c 100644
--- a/bdi-jade/src/bdi4jade/core/SingleCapabilityAgent.java
+++ b/bdi-jade/src/bdi4jade/core/SingleCapabilityAgent.java
@@ -16,7 +16,7 @@
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// To contact the authors:
-// http://inf.ufrgs.br/~ingridnunes/bdi4jade/
+// http://inf.ufrgs.br/prosoft/bdi4jade/
//
//----------------------------------------------------------------------------
diff --git a/bdi-jade/src/bdi4jade/util/ReflectionUtils.java b/bdi-jade/src/bdi4jade/util/ReflectionUtils.java
index 971cdf5..b371666 100644
--- a/bdi-jade/src/bdi4jade/util/ReflectionUtils.java
+++ b/bdi-jade/src/bdi4jade/util/ReflectionUtils.java
@@ -189,8 +189,14 @@ public abstract class ReflectionUtils {
if (field
.isAnnotationPresent(bdi4jade.annotation.Belief.class)) {
if (Belief.class.isAssignableFrom(field.getType())) {
+ bdi4jade.annotation.Belief beliefAnnotation = field
+ .getAnnotation(bdi4jade.annotation.Belief.class);
+ String beliefName = beliefAnnotation.name();
+ if (beliefName == null || "".equals(beliefName)) {
+ beliefName = field.getName();
+ }
Belief<?> belief = capability.getBeliefBase()
- .getBelief(field.getName());
+ .getBelief(beliefName);
field.set(planBody, belief);
} else {
throw new ClassCastException("Field "
diff --git a/bdi-jade-test/.settings/org.eclipse.jdt.ui.prefs b/bdi-jade-test/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..19d840a
--- /dev/null
+++ b/bdi-jade-test/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">//----------------------------------------------------------------------------\n// Copyright (C) 2011 Ingrid Nunes\n// \n// This library is free software; you can redistribute it and/or\n// modify it under the terms of the GNU Lesser General Public\n// License as published by the Free Software Foundation; either\n// version 2.1 of the License, or (at your option) any later version.\n// \n// This library is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n// Lesser General Public License for more details.\n// \n// You should have received a copy of the GNU Lesser General Public\n// License along with this library; if not, write to the Free Software\n// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n// \n// To contact the authors\:\n// http\://inf.ufrgs.br/prosoft/bdi4jade/\n//\n//----------------------------------------------------------------------------\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/bdi-jade-test/src/bdi4jade/examples/BDI4JADEExamplesPanel.java b/bdi-jade-test/src/bdi4jade/examples/BDI4JADEExamplesPanel.java
index 8fa7605..fecb7d7 100644
--- a/bdi-jade-test/src/bdi4jade/examples/BDI4JADEExamplesPanel.java
+++ b/bdi-jade-test/src/bdi4jade/examples/BDI4JADEExamplesPanel.java
@@ -35,6 +35,7 @@ import bdi4jade.examples.capabilities.TopCapability;
import bdi4jade.examples.helloworld.HelloWorldAgent;
import bdi4jade.examples.helloworld.HelloWorldAnnotatedCapability;
import bdi4jade.examples.ping.PingPongCapability;
+import bdi4jade.goal.BeliefValueGoal;
import bdi4jade.goal.CompositeGoal;
import bdi4jade.goal.Goal;
import bdi4jade.goal.ParallelGoal;
@@ -77,9 +78,16 @@ public class BDI4JADEExamplesPanel extends JPanel {
frame.setVisible(true);
}
});
- blocksWorldAgent.addGoal(
- new BlocksWorldCapability.AchieveBlocksStacked(target),
- this);
+
+ Set<On> target = new HashSet<>();
+ target.add(new On(Thing.BLOCK_5, Thing.TABLE));
+ target.add(new On(Thing.BLOCK_4, Thing.BLOCK_5));
+ target.add(new On(Thing.BLOCK_3, Thing.BLOCK_4));
+ target.add(new On(Thing.BLOCK_2, Thing.BLOCK_3));
+ target.add(new On(Thing.BLOCK_1, Thing.BLOCK_2));
+
+ blocksWorldAgent.addGoal(new BeliefValueGoal<Set<On>>(
+ BlocksWorldCapability.BELIEF_ON, target), this);
}
@Override
@@ -343,12 +351,6 @@ public class BDI4JADEExamplesPanel extends JPanel {
private static final long serialVersionUID = -1080267169700651610L;
- private static final On[] target = { new On(Thing.BLOCK_5, Thing.TABLE),
- new On(Thing.BLOCK_4, Thing.BLOCK_5),
- new On(Thing.BLOCK_3, Thing.BLOCK_4),
- new On(Thing.BLOCK_2, Thing.BLOCK_3),
- new On(Thing.BLOCK_1, Thing.BLOCK_2) };
-
private final BDI4JADEExamplesAction[] actions;
public BDI4JADEExamplesPanel() {
diff --git a/bdi-jade-test/src/bdi4jade/examples/blocksworld/BlocksWorldCapability.java b/bdi-jade-test/src/bdi4jade/examples/blocksworld/BlocksWorldCapability.java
index 8eff90d..629c3d7 100644
--- a/bdi-jade-test/src/bdi4jade/examples/blocksworld/BlocksWorldCapability.java
+++ b/bdi-jade-test/src/bdi4jade/examples/blocksworld/BlocksWorldCapability.java
@@ -22,6 +22,8 @@
package bdi4jade.examples.blocksworld;
+import java.util.Set;
+
import bdi4jade.annotation.Belief;
import bdi4jade.annotation.GoalOwner;
import bdi4jade.annotation.Parameter;
@@ -46,32 +48,6 @@ import bdi4jade.plan.DefaultPlan;
*/
public class BlocksWorldCapability extends Capability {
- @GoalOwner(capability = BlocksWorldCapability.class, internal = false)
- public static class AchieveBlocksStacked implements Goal {
- private static final long serialVersionUID = -8126833927953226126L;
-
- private On[] target;
-
- public AchieveBlocksStacked(On[] target) {
- this.target = target;
- }
-
- @Parameter(direction = Direction.IN)
- public On[] getTarget() {
- return target;
- }
-
- @Override
- public String toString() {
- StringBuffer sb = new StringBuffer("AchieveBlocksStacked: ");
- for (On on : target) {
- sb.append(on).append(" ");
- }
- return sb.toString();
- }
-
- }
-
@GoalOwner(capability = BlocksWorldCapability.class, internal = true)
public static class PerformMove implements Goal {
private static final long serialVersionUID = 8286023371969088149L;
@@ -107,7 +83,8 @@ public class BlocksWorldCapability extends Capability {
@Plan
private bdi4jade.plan.Plan achieveBlocksStackedPlan = new DefaultPlan(
- AchieveBlocksStacked.class, TopLevelPlanBody.class);
+ GoalTemplateFactory.beliefTypeGoal(BELIEF_ON, Set.class),
+ TopLevelPlanBody.class);
@Plan
private bdi4jade.plan.Plan achieveOnPlan = new DefaultPlan(
@@ -115,7 +92,7 @@ public class BlocksWorldCapability extends Capability {
AchieveOnPlanBody.class);
@Belief
- private BeliefSet<Clear> clear = new TransientBeliefSet<Clear>(BELIEF_CLEAR);
+ private BeliefSet<Clear> clear = new TransientBeliefSet<>(BELIEF_CLEAR);
@Plan
private bdi4jade.plan.Plan clearPlan = new DefaultPlan(
@@ -123,7 +100,7 @@ public class BlocksWorldCapability extends Capability {
ClearPlanBody.class);
@Belief
- private BeliefSet<On> on = new TransientBeliefSet<On>(BELIEF_ON);
+ private BeliefSet<On> on = new TransientBeliefSet<>(BELIEF_ON);
@Plan
private bdi4jade.plan.Plan performMovePlan;
diff --git a/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/PerformMovePlanBody.java b/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/PerformMovePlanBody.java
index 56dae54..7a75775 100644
--- a/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/PerformMovePlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/PerformMovePlanBody.java
@@ -26,6 +26,7 @@ import bdi4jade.annotation.Belief;
import bdi4jade.annotation.Parameter;
import bdi4jade.annotation.Parameter.Direction;
import bdi4jade.belief.BeliefSet;
+import bdi4jade.examples.blocksworld.BlocksWorldCapability;
import bdi4jade.examples.blocksworld.domain.Clear;
import bdi4jade.examples.blocksworld.domain.On;
import bdi4jade.examples.blocksworld.domain.Thing;
@@ -39,10 +40,10 @@ public class PerformMovePlanBody extends AbstractPlanBody {
private static final long serialVersionUID = -5919677537834351951L;
- @Belief
- private BeliefSet<Clear> clear;
- @Belief
- private BeliefSet<On> on;
+ @Belief(name = BlocksWorldCapability.BELIEF_CLEAR)
+ private BeliefSet<Clear> clearSet;
+ @Belief(name = BlocksWorldCapability.BELIEF_ON)
+ private BeliefSet<On> onSet;
private Thing thing1;
private Thing thing2;
@@ -50,19 +51,19 @@ public class PerformMovePlanBody extends AbstractPlanBody {
public void action() {
// If thing1 was over something, this something will now be clear
for (Thing thing : Thing.THINGS) {
- On onVal = new On(thing1, thing);
- if (on.hasValue(onVal)) {
- on.removeValue(onVal);
+ On on = new On(thing1, thing);
+ if (onSet.hasValue(on)) {
+ onSet.removeValue(on);
if (!Thing.TABLE.equals(thing)) {
- clear.addValue(new Clear(thing));
+ clearSet.addValue(new Clear(thing));
}
}
}
if (!thing2.equals(Thing.TABLE)) {
- clear.removeValue(new Clear(thing2));
+ clearSet.removeValue(new Clear(thing2));
}
- on.addValue(new On(thing1, thing2));
+ onSet.addValue(new On(thing1, thing2));
setEndState(EndState.SUCCESSFULL);
}
diff --git a/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/TopLevelPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/TopLevelPlanBody.java
index f3448bd..d47b8dc 100644
--- a/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/TopLevelPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/blocksworld/plan/TopLevelPlanBody.java
@@ -22,20 +22,23 @@
package bdi4jade.examples.blocksworld.plan;
+import java.util.Set;
+
import bdi4jade.annotation.Parameter;
import bdi4jade.annotation.Parameter.Direction;
import bdi4jade.event.GoalEvent;
import bdi4jade.examples.blocksworld.BlocksWorldCapability;
import bdi4jade.examples.blocksworld.domain.On;
+import bdi4jade.examples.blocksworld.domain.Thing;
import bdi4jade.goal.BeliefSetValueGoal;
import bdi4jade.goal.GoalStatus;
import bdi4jade.plan.Plan.EndState;
-import bdi4jade.plan.planbody.AbstractPlanBody;
+import bdi4jade.plan.planbody.BeliefGoalPlanBody;
/**
* @author Ingrid Nunes
*/
-public class TopLevelPlanBody extends AbstractPlanBody {
+public class TopLevelPlanBody extends BeliefGoalPlanBody {
private static final long serialVersionUID = -5919677537834351951L;
@@ -43,7 +46,7 @@ public class TopLevelPlanBody extends AbstractPlanBody {
private On[] target;
@Override
- public void action() {
+ public void execute() {
// If a subgoal has been dispatched, wait for its completion
if (counter != 0) {
GoalEvent goalEvent = getGoalEvent();
@@ -60,10 +63,14 @@ public class TopLevelPlanBody extends AbstractPlanBody {
BlocksWorldCapability.BELIEF_ON, target[counter]));
}
counter++;
+ }
- if (counter > target.length) {
- setEndState(EndState.SUCCESSFULL);
+ private On getOnOverThing(Set<On> target, Thing thing) {
+ for (On on : target) {
+ if (on.getThing2().equals(thing))
+ return on;
}
+ return null;
}
@Override
@@ -76,14 +83,30 @@ public class TopLevelPlanBody extends AbstractPlanBody {
@Override
public void onStart() {
this.counter = 0;
-
log.info("World Model at start is:");
log.info(getBeliefBase());
}
+ /**
+ * This method sets the target block configuration to be achieved. It is
+ * given in the form of a set of {@link On} values, and the method organize
+ * these values in the order in which they should be stacked, from table to
+ * top. This organized configuration is set in the target array of this plan
+ * body.
+ *
+ * @param target
+ * the target to set.
+ */
@Parameter(direction = Direction.IN, mandatory = true)
- public void setTarget(On[] target) {
- this.target = target;
+ public void setValue(Set<On> target) {
+ this.target = new On[target.size()];
+ Thing thing = Thing.TABLE;
+ for (int i = 0; i < target.size(); i++) {
+ On on = getOnOverThing(target, thing);
+ this.target[i] = on;
+ thing = on.getThing1();
+ }
+ log.info(target);
}
}
diff --git a/bdi-jade-test/src/bdi4jade/examples/log4j.properties b/bdi-jade-test/src/bdi4jade/examples/log4j.properties
index ccea3e4..0a27ef3 100644
--- a/bdi-jade-test/src/bdi4jade/examples/log4j.properties
+++ b/bdi-jade-test/src/bdi4jade/examples/log4j.properties
@@ -29,6 +29,6 @@ log4j.logger.org.apache.struts2=FATAL
# Spring Stuff
log4j.logger.org.springframework=FATAL
-log4j.logger.bdi4jade=DEBUG
+log4j.logger.bdi4jade=WARN
log4j.logger.bdi4jade.examples=DEBUG