package org.jacorb.test.listenendpoints.echo_corbaloc; import java.net.InetAddress; import java.net.UnknownHostException; public class Endpoint { private InetAddress hostInetAddr = null; private String hostName = null; private int port = -1; private int ssl_port = -1; private String protocol = null; public Endpoint () { } public Endpoint (String hostName, int port) throws Exception { this(hostName, port, -1, null); } public Endpoint (String hostName, int port, int ssl_port) throws Exception { this(hostName, port, ssl_port, null); } public Endpoint (String hostName, int port, int ssl_port, String protocol) { this.hostName = hostName; setPort(port); setSSLPort(ssl_port); this.protocol = protocol; if (protocol == null) { this.protocol = "iiop"; } } public void init() { if (hostName == null || hostName.length() <= 0) { hostInetAddr = null; } else { try { hostInetAddr = InetAddress.getByName(hostName); } catch (UnknownHostException e) { System.out.println("Got an exception in Endpoint.init()" + e.getMessage()); try { hostInetAddr = InetAddress.getLocalHost(); } catch (Exception ex) { System.out.println("Got an exception in Endpoint.init()" + e.getMessage()); } } } } public InetAddress getHostInetAddress () { return hostInetAddr; } public String getHostName() { if (hostInetAddr !=null) { return hostInetAddr.getHostName(); } return null; } public void setPort(int port) { this.port = port; if(port == -1) { this.port = 0; } } public int getPort() { return port; } public int getSSLPort() { return ssl_port; } public void setSSLPort(int port) { this.ssl_port = port; if(port == -1) { this.ssl_port = 0; } } public void setProtocol(String protocol) { this.protocol = protocol; } public String getProtocol() { return protocol; } public boolean fromString(String s) { if (s.charAt(0) == '[') { return fromStringIPv6(s); } return fromStringIPv4(s); } //NOTE: IPv6 format is "[address]:port" since address will include colons. private boolean fromStringIPv6(String s) { int end_bracket = s.indexOf(']'); if (end_bracket < 0) { return false; } // In case the IIOPAddress object is created using the host inetAddress // as the source_name which normally contains the routing zone id delimted // by the percent (%). As such, it needs to be removed. int route_delim = s.lastIndexOf('%', end_bracket); if (route_delim < 0) { hostName = s.substring(1, end_bracket); } else { hostName = s.substring(1, route_delim); } int port_colon = s.indexOf(':', end_bracket); if (port_colon < 0) { return false; } int _port = Integer.parseInt(s.substring(port_colon + 1)); init(); setPort (_port); return true; } private boolean fromStringIPv4(String s) { int colon = s.indexOf (':'); if (colon == -1) { return false; } if (colon > 0) { hostName = s.substring(0,colon); } else { hostName = ""; } int _port = 0; if (colon < s.length()-1) { _port = Integer.parseInt(s.substring(colon+1)); } init(); setPort(_port); return true; } }