1 /* 2 * Conditions Of Use 3 * 4 * This software was developed by employees of the National Institute of 5 * Standards and Technology (NIST), an agency of the Federal Government. 6 * Pursuant to title 15 Untied States Code Section 105, works of NIST 7 * employees are not subject to copyright protection in the United States 8 * and are considered to be in the public domain. As a result, a formal 9 * license is not needed to use the software. 10 * 11 * This software is provided by NIST as a service and is expressly 12 * provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED 13 * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF 14 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT 15 * AND DATA ACCURACY. NIST does not warrant or make any representations 16 * regarding the use of the software or the results thereof, including but 17 * not limited to the correctness, accuracy, reliability or usefulness of 18 * the software. 19 * 20 * Permission to use this software is contingent upon your acceptance 21 * of the terms of this agreement 22 * 23 * . 24 * 25 */ 26 /******************************************************************************* 27 * Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * 28 *******************************************************************************/ 29 package gov.nist.core; 30 import java.net.*; 31 32 /** 33 * Holds the hostname:port. 34 * 35 *@version 1.2 36 * 37 *@author M. Ranganathan 38 * 39 * 40 * 41 */ 42 public final class HostPort extends GenericObject { 43 44 45 private static final long serialVersionUID = -7103412227431884523L; 46 47 // host / ipv4/ ipv6/ 48 /** host field 49 */ 50 protected Host host; 51 52 /** port field 53 * 54 */ 55 protected int port; 56 57 /** Default constructor 58 */ 59 public HostPort() { 60 61 host = null; 62 port = -1; // marker for not set. 63 } 64 65 /** 66 * Encode this hostport into its string representation. 67 * Note that this could be different from the string that has 68 * been parsed if something has been edited. 69 * @return String 70 */ 71 public String encode() { 72 return encode(new StringBuffer()).toString(); 73 } 74 75 public StringBuffer encode(StringBuffer buffer) { 76 host.encode(buffer); 77 if (port != -1) 78 buffer.append(COLON).append(port); 79 return buffer; 80 } 81 82 /** returns true if the two objects are equals, false otherwise. 83 * @param other Object to set 84 * @return boolean 85 */ 86 public boolean equals(Object other) { 87 if (other == null) return false; 88 if (getClass () != other.getClass ()) { 89 return false; 90 } 91 HostPort that = (HostPort) other; 92 return port == that.port && host.equals(that.host); 93 } 94 95 /** get the Host field 96 * @return host field 97 */ 98 public Host getHost() { 99 return host; 100 } 101 102 /** get the port field 103 * @return int 104 */ 105 public int getPort() { 106 return port; 107 } 108 109 /** 110 * Returns boolean value indicating if Header has port 111 * @return boolean value indicating if Header has port 112 */ 113 public boolean hasPort() { 114 return port != -1; 115 } 116 117 /** remove port. 118 */ 119 public void removePort() { 120 port = -1; 121 } 122 123 /** 124 * Set the host member 125 * @param h Host to set 126 */ 127 public void setHost(Host h) { 128 host = h; 129 } 130 131 /** 132 * Set the port member 133 * @param p int to set 134 */ 135 public void setPort(int p) { 136 port = p; 137 } 138 139 /** Return the internet address corresponding to the host. 140 *@throws java.net.UnkownHostException if host name cannot be resolved. 141 *@return the inet address for the host. 142 */ 143 public InetAddress getInetAddress() throws java.net.UnknownHostException { 144 if (host == null) 145 return null; 146 else 147 return host.getInetAddress(); 148 } 149 150 public void merge(Object mergeObject) { 151 super.merge (mergeObject); 152 if (port == -1) 153 port = ((HostPort) mergeObject).port; 154 } 155 156 public Object clone() { 157 HostPort retval = (HostPort) super.clone(); 158 if (this.host != null) 159 retval.host = (Host) this.host.clone(); 160 return retval; 161 } 162 163 public String toString() { 164 return this.encode(); 165 } 166 167 @Override 168 public int hashCode() { 169 return this.host.hashCode() + this.port; 170 } 171 } 172