package context.arch.subscriber;
import context.arch.storage.Attributes;
import context.arch.comm.DataObject;
import context.arch.comm.DataObjects;
/**
* This class is a container for a callback and associated attributes.
*/
public class Callback {
/**
* Tag for the name of the callback
*/
public static final String CALLBACK_NAME = "callbackName";
/**
* Tag for a callback
*/
public static final String CALLBACK = "callback";
private String name;
private Attributes attributes;
/**
* Empty constructor
*/
public Callback() {
}
/**
* Constructor that takes a name and attributes object
*
* @param name Name of callback to store
* @param atts Attributes of the callback
*/
public Callback(String name, Attributes atts) {
this.name = name;
this.attributes = atts;
}
/**
* Constructor that takes a DataObject holding the callback info.
* The expected tag of the DataObject is <CALLBACK>
*
* @param data DataObject containing the callback info
*/
public Callback(DataObject data) {
DataObject nameObj = data.getDataObject(CALLBACK_NAME);
this.name = nameObj.getValue();
this.attributes = Attributes.fromDataObject(data);
}
/**
* This method converts the Callback object to a DataObject
*
* @return Callback object converted to a <CALLBACK> DataObject
*/
public DataObject toDataObject() {
DataObjects v = new DataObjects();
v.addElement(new DataObject(CALLBACK_NAME, name));
v.addElement(attributes.toDataObject());
return new DataObject(CALLBACK, v);
}
/**
* Sets the name of a callback
*
* @param name Name of the callback to store
*/
public void setName(String name) {
this.name = name;
}
/**
* Sets the attributes for the callback
*
* @param atts Attributes of the callback
*/
public void setAttributes(Attributes atts) {
this.attributes = atts;
}
/**
* Returns the name of the callback
*
* @return name of the callback
*/
public String getName() {
return name;
}
/**
* Returns the attributes for the callback
*
* @return attributes for the callback
*/
public Attributes getAttributes() {
return attributes;
}
/**
* A printable version of this class.
*
* @return String version of this class
*/
public String toString() {
return new String("name=" + getName() + ",attributes=" + attributes);
}
}