bdi4jade

Blocks world

8/21/2014 6:46:51 AM

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>
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