| /* |
| * |
| * 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; |
| } |
| } |