Since CArtAgO data model is based on Java object (POJO), a set of internal actions is provided on the agent side to create/manipulate Java objects. In particular:

It follows a simple example:

MAS example09_java_data_binding {

  environment:
  c4jason.CartagoEnvironment

  agents:
  java_data_binding_tester agentArchClass c4jason.CAgentArch;

  classpath: "../../../lib/cartago.jar";"../../../lib/c4jason.jar";
}

The agent source code:

!test_java_api.

+!test_java_api
  <- cartago.new_obj("c4jexamples.FlatCountObject",[10],Id);
     cartago.invoke_obj(Id,inc);
     cartago.invoke_obj(Id,getValue,Res);
     println(Res);
     cartago.invoke_obj("java.lang.System",currentTimeMillis,T);
     println(T);
     cartago.invoke_obj("java.lang.Class",
                   forName("c4jexamples.FlatCountObject"),Class);
     println(Class).

Where the class FlatCountObject is defined as follows:

package c4jexamples;

public class FlatCountObject {

  private int count;

  public FlatCountObject(int v){
    count = v;
  }

  public FlatCountObject(){
    count = 0;
  }

  public void inc(){
    count++;
  }

  public void inc(int dv){
    count+=dv;
  }

  public int getValue(){
    return count;
  }

}

Highlights: