All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.lightbody.bmp.proxy.jetty.util.InetAddrPort Maven / Gradle / Ivy

// ========================================================================
// $Id: InetAddrPort.java,v 1.7 2004/10/23 09:03:22 gregwilkins Exp $
// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at 
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========================================================================

package net.lightbody.bmp.proxy.jetty.util;

import java.io.Serializable;
import java.net.InetAddress;

/**
 * InetAddress and Port.
 */
public class InetAddrPort implements Serializable {
    
    public static final String __0_0_0_0 = "0.0.0.0";

    private InetAddress _addr = null;
    private boolean _addrIsHost = false;
    private int _port = 0;

    public InetAddrPort() {
    }

    /**
     * Constructor for a port on all local host address.
     *
     * @param port
     */
    public InetAddrPort(int port) {
        _port = port;
    }

    /**
     * Constructor.
     *
     * @param addr
     * @param port
     */
    public InetAddrPort(InetAddress addr, int port) {
        _addr = addr;
        _port = port;
    }

    /**
     * Constructor.
     *
     * @param host
     * @param port
     */
    public InetAddrPort(String host, int port) throws java.net.UnknownHostException {
        setHost(host);
        setPort(port);
    }

    /**
     * Constructor.
     *
     * @param inetAddrPort String of the form "addr:port"
     */
    public InetAddrPort(String inetAddrPort) throws java.net.UnknownHostException {
        int c = inetAddrPort.indexOf(':');
        if (c >= 0) {
            String addr = inetAddrPort.substring(0, c);
            if (addr.indexOf('/') > 0) {
                addr = addr.substring(addr.indexOf('/') + 1);
            }
            inetAddrPort = inetAddrPort.substring(c + 1);

            if (addr.length() > 0 && !__0_0_0_0.equals(addr)) {
                _addrIsHost = !Character.isDigit((addr.charAt(0)));
                this._addr = InetAddress.getByName(addr);
            }
        }

        _port = Integer.parseInt(inetAddrPort);
    }

    /**
     * Constructor.
     *
     * @param address InetAddrPort top copy.
     */
    public InetAddrPort(InetAddrPort address) {
        if (address != null) {
            _addr = address._addr;
            _port = address._port;
        }
    }

    /**
     * Get the Host.
     *
     * @return The IP address
     */
    public String getHost() {
        if (_addr == null) {
            return __0_0_0_0;
        }

        return _addrIsHost ? _addr.getHostName() : _addr.getHostAddress();
    }

    /**
     * Set the Host.
     *
     * @param host
     * @throws java.net.UnknownHostException
     */
    public void setHost(String host) throws java.net.UnknownHostException {
        _addr = null;
        if (host != null) {
            if (host.indexOf('/') > 0) {
                host = host.substring(0, host.indexOf('/'));
            }
            _addrIsHost = !Character.isDigit((host.charAt(0)));
            _addr = InetAddress.getByName(host);
        }
    }

    /**
     * Get the IP address.
     *
     * @return The IP address
     */
    public InetAddress getInetAddress() {
        return _addr;
    }

    /**
     * Set the IP address.
     *
     * @param addr The IP address
     */
    public void setInetAddress(InetAddress addr) {
        _addrIsHost = false;
        _addr = addr;
    }

    /**
     * Get the port.
     *
     * @return The port number
     */
    public int getPort() {
        return _port;
    }

    /**
     * Set the port.
     *
     * @param port The port number
     */
    public void setPort(int port) {
        _port = port;
    }

    public String toString() {
        return getHost() + ':' + _port;
    }

    /**
     * Clone the InetAddrPort.
     *
     * @return A new instance.
     */
    public Object clone() {
        return new InetAddrPort(this);
    }

    /**
     * Hash Code.
     *
     * @return hash Code.
     */
    public int hashCode() {
        return _port + ((_addr == null) ? 0 : _addr.hashCode());
    }

    /**
     * Equals.
     *
     * @param o
     * @return True if is the same address and port.
     */
    public boolean equals(Object o) {
        if (o == null) {
            return false;
        }
        if (o == this) {
            return true;
        }
        if (o instanceof InetAddrPort) {
            InetAddrPort addr = (InetAddrPort) o;
            return addr._port == _port &&
                    (addr._addr == _addr || addr._addr != null && addr._addr.equals(_addr));
        }
        return false;
    }
}

    








© 2015 - 2025 Weber Informatics LLC | Privacy Policy