//package fixmico; /** * <p>Title: ObjectReference.java </p> * <p>Description: </p> * * @author: Jessica Rogers */ import java.util.*; import java.io.*; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class ObjectReference { private Address _addr; private Transport _transp; private String _typeId; private String _host; private int _port; private String _ref; private StringBuffer _buffer_xml; private ObjectXmlReference _obj_xml_reference; public ObjectReference(String typeId, Address addr) { _typeId = typeId; _addr = addr; _ref = this.toString(); _transp = _addr.createTransport(); // We assume that we have a TCPAddress. Extract host and port. TCPAddress tcp_addr = (TCPAddress) (addr); assert tcp_addr != null; _host = tcp_addr.host (); _port = tcp_addr.port (); echo("host: "+getHost()); echo("port: "+getPort()); } public ObjectReference(String ior) { _ref = ior; _addr = new TCPAddress (_host, _port); _transp = _addr.createTransport (); } public ObjectReference(String ref, String host, String port){ _ref = ref; _host = host; _port = Integer.valueOf(port); _addr = new TCPAddress (host, Integer.valueOf(port)); _transp = _addr.createTransport (); } public String stringify() { return _ref; } /** * Atualiza a string que representa o ior * @param ref */ public void updateIor(String ref) { _ref = ref; } /** * Atualiza a referencia do object reference * @param ref * @param host * @param port */ public void updateReference(String ref, String host, String port) { String tmp_ref = stringify(); String tmp_host = getHost(); String tmp_port = String.valueOf(getPort()); updateIor(ref); setHost(host); setPort(Integer.valueOf(port)); _addr = new TCPAddress (getHost(), getPort()); _transp = _addr.createTransport (); } public Transport transport() { return _transp; } public String typeId() { return _typeId; } public String getHost() { return _host; } public void setHost(String _host) { this._host = _host; } public int getPort() { return _port; } public void setPort(int _port) { this._port = _port; } public String getXmlReference() { _buffer_xml = null; _buffer_xml = new StringBuffer(); _buffer_xml.append("<reference>\n"); _buffer_xml.append(" <object>"+stringify()+"</object>\n"); _buffer_xml.append(" <host>"+getHost()+"</host>\n"); _buffer_xml.append(" <port>"+getPort()+"</port>\n"); _buffer_xml.append("</reference>\n"); return _buffer_xml.toString(); } /** * Retorna objeto que mapeia o xml de referencia * @param xml * @return */ public ObjectXmlReference getObjectXml(String xml) { XStream _xstream = new XStream(new DomDriver()); _xstream.alias("reference", ObjectXmlReference.class); _obj_xml_reference = (ObjectXmlReference) _xstream.fromXML(xml); _xstream = null; return _obj_xml_reference; } public ObjectXmlReference getObjectXml() { return getObjectXml(getXmlReference()); } private void echo(String msg) { System.out.println("[ObjectReference] "+msg); } }