blob: 5e860d2de744d146b5038f2c588cb2419aa8e09d [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.qpid.proton.reactor.impl;
/**
* Address
*
*/
public class Address
{
private String _address;
private boolean _passive;
private String _scheme;
private String _user;
private String _pass;
private String _host;
private String _port;
private String _name;
public void clear()
{
_passive = false;
_scheme = null;
_user = null;
_pass = null;
_host = null;
_port = null;
_name = null;
}
public Address()
{
clear();
}
public Address(String address)
{
clear();
int start = 0;
int schemeEnd = address.indexOf("://", start);
if (schemeEnd >= 0) {
_scheme = address.substring(start, schemeEnd);
start = schemeEnd + 3;
}
String uphp;
int slash = address.indexOf("/", start);
if (slash >= 0) {
uphp = address.substring(start, slash);
_name = address.substring(slash + 1);
} else {
uphp = address.substring(start);
}
String hp;
int at = uphp.indexOf('@');
if (at >= 0) {
String up = uphp.substring(0, at);
hp = uphp.substring(at + 1);
int colon = up.indexOf(':');
if (colon >= 0) {
_user = up.substring(0, colon);
_pass = up.substring(colon + 1);
} else {
_user = up;
}
} else {
hp = uphp;
}
if (hp.startsWith("[")) {
int close = hp.indexOf(']');
if (close >= 0) {
_host = hp.substring(1, close);
if (hp.substring(close + 1).startsWith(":")) {
_port = hp.substring(close + 2);
}
}
}
if (_host == null) {
int colon = hp.indexOf(':');
if (colon >= 0) {
_host = hp.substring(0, colon);
_port = hp.substring(colon + 1);
} else {
_host = hp;
}
}
if (_host.startsWith("~")) {
_host = _host.substring(1);
_passive = true;
}
}
public String toString()
{
String str = new String();
if (_scheme != null) str += _scheme + "://";
if (_user != null) str += _user;
if (_pass != null) str += ":" + _pass;
if (_user != null || _pass != null) str += "@";
if (_host != null) {
if (_host.contains(":")) str += "[" + _host + "]";
else str += _host;
}
if (_port != null) str += ":" + _port;
if (_name != null) str += "/" + _name;
return str;
}
public boolean isPassive()
{
return _passive;
}
public String getScheme()
{
return _scheme;
}
public String getUser()
{
return _user;
}
public String getPass()
{
return _pass;
}
public String getHost()
{
return _host;
}
public String getPort()
{
return _port;
}
public String getImpliedPort()
{
if (_port == null) {
return getDefaultPort();
} else {
return getPort();
}
}
public String getDefaultPort()
{
if ("amqps".equals(_scheme)) return "5671";
else return "5672";
}
public String getName()
{
return _name;
}
public void setScheme(String scheme)
{
_scheme= scheme;
}
public void setUser(String user)
{
_user= user;
}
public void setPass(String pass)
{
_pass= pass;
}
public void setHost(String host)
{
_host= host;
}
public void setPort(String port)
{
_port= port;
}
public void setName(String name)
{
_name= name;
}
}