001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.services.binding;
023:
024: import java.net.InetAddress;
025: import java.net.UnknownHostException;
026:
027: /** A ServiceBinding is a {name,virtualHost,port,interfaceAddress}
028: * quad specifying a named binding for a service.
029: *
030: * @author <a href="mailto:bitpushr@rochester.rr.com">Mike Finn</a>.
031: * @author Scott.Stark@jboss.org
032: * @version $Revision: 57210 $
033: */
034: public class ServiceBinding implements Cloneable {
035: /** The name of the binding. A null or empty name implies the default
036: binding for a service.
037: */
038: private String name = null;
039: /** The virtual host name. This is the interface name used to
040: construct the bindAddress value. A null value implies bind on any
041: interface.
042: */
043: private String hostName = null;
044: /** The port the service should listen on. A 0 value implies an
045: anonymous port.
046: */
047: private int port = 0;
048: /** The interface on which the service should bind its listening port. A
049: null address implies bind on any interface.
050: */
051: private InetAddress bindAddress = null;
052:
053: /** Make a copy of the ServiceBinding
054: */
055: public Object clone() {
056: Object copy = null;
057: try {
058: copy = super .clone();
059: } catch (CloneNotSupportedException cantHappend) {
060: }
061: return copy;
062: }
063:
064: /**
065: * Creates a new instance of ServiceDescriptor
066: *
067: * @param name The name of the binding. A null or empty name
068: * implies that default binding for a service.
069: * @param hostName The virtual host name. This is the interface name used to
070: * construct the bindAddress value. A null value implies bind on any
071: * interface.
072: * @param port The port the service should listen on. A 0 value implies an
073: * anonymous port.
074: *
075: * @exception UnknownHostException If hostName is not resolvable.
076: */
077: public ServiceBinding(String name, String hostName, int port)
078: throws UnknownHostException {
079: this .setName(name);
080: this .setHostName(hostName);
081: this .setBindAddress(hostName);
082: this .setPort(port);
083: }
084:
085: /**
086: * Getter for property name.
087: *
088: * @return The name of the binding
089: */
090: public String getName() {
091: return this .name;
092: }
093:
094: /**
095: * Setter for property name.
096: *
097: * @param name the name of the binding
098: */
099: public void setName(String name) {
100: this .name = name;
101: }
102:
103: /**
104: * Sets the bindAddress attribute of the ServiceDescriptor object
105: *
106: * @param pInetAddr The new bindAddress value
107: */
108: public void setBindAddress(InetAddress bindAddress) {
109: this .bindAddress = bindAddress;
110: }
111:
112: /**
113: * Sets the bindAddress, given a hostname
114: *
115: * @param pHostName The hostname with which to create an InetAddress
116: *
117: * @exception UnknownHostException Hostname is not resolvable
118: */
119: public void setBindAddress(String hostName)
120: throws UnknownHostException {
121: this .bindAddress = InetAddress.getByName(hostName);
122: }
123:
124: /**
125: * Gets the bindAddress attribute of the ServiceDescriptor object
126: *
127: * @return The listen address
128: */
129: public InetAddress getBindAddress() {
130: return this .bindAddress;
131: }
132:
133: /**
134: * Sets the port attribute of the ServiceDescriptor object
135: *
136: * @param pPort The new listen port number
137: */
138: public void setPort(int port) {
139: this .port = port;
140: }
141:
142: /**
143: * Gets the port attribute of the ServiceDescriptor object
144: *
145: * @return The listen port number
146: */
147: public int getPort() {
148: return this .port;
149: }
150:
151: /**
152: * Returns host name
153: *
154: * @return the hostname or address
155: */
156: public String getHostName() {
157: return this .hostName;
158: }
159:
160: /**
161: * Sets the host name
162: *
163: * @param hostName, the hostname or address
164: */
165: public void setHostName(String hostName) {
166: this .hostName = hostName;
167: }
168:
169: /**
170: * Create string representation of the service descriptor
171: *
172: * @return String containing service descriptor properties
173: */
174: public String toString() {
175: StringBuffer sBuf = new StringBuffer("ServiceBinding [name=");
176: String host = getHostName();
177:
178: if (hostName == null) {
179: host = "<ANY>";
180: }
181:
182: sBuf.append(this .getName());
183: sBuf.append(";hostName=");
184: sBuf.append(host);
185: sBuf.append(";bindAddress=");
186: sBuf.append(this .getBindAddress().toString());
187: sBuf.append(";port=");
188: sBuf.append(this .getPort());
189: sBuf.append("]");
190: return sBuf.toString();
191: }
192: }
|