View Javadoc
1 /*** 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Exoffice Technologies. For written permission, 18 * please contact info@exolab.org. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Exoffice Technologies. Exolab is a registered 23 * trademark of Exoffice Technologies. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 2001-2003 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: AdminConnectionFactory.java,v 1.12 2003/08/18 10:15:32 tanderson Exp $ 44 */ 45 package org.exolab.jms.administration; 46 47 import java.net.MalformedURLException; 48 49 import javax.jms.JMSException; 50 import javax.jms.JMSSecurityException; 51 52 import org.exolab.core.util.URI; 53 import org.exolab.jms.administration.http.HttpJmsAdminConnection; 54 import org.exolab.jms.administration.http.SslHttpJmsAdminConnection; 55 import org.exolab.jms.administration.intravm.IntravmJmsAdminConnection; 56 import org.exolab.jms.administration.mipc.IpcJmsAdminConnection; 57 import org.exolab.jms.administration.mipc.SslIpcJmsAdminConnection; 58 import org.exolab.jms.administration.rmi.RmiJmsAdminConnection; 59 import org.exolab.jms.config.types.SchemeType; 60 61 62 /*** 63 * This class is a factory for creating {@link AdminConnection} instances. 64 * 65 * @version $Revision: 1.12 $ $Date: 2003/08/18 10:15:32 $ 66 * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a> 67 * @author <a href="mailto:knut@lerpold.no">Knut Lerpold</a> 68 * @see JmsAdminServerIfc 69 */ 70 public class AdminConnectionFactory { 71 72 /*** 73 * Attempt to establish an admin connection 74 * 75 * @param url the OpenJMS server URL 76 * @param username the admin user name 77 * @param password the admin user password 78 * @return an admin connection 79 * @throws JMSException if a connection cannot be established 80 * @throws MalformedURLException if <code>url</code> is invalid 81 */ 82 private static AdminConnection getConnection(String url, String username, 83 String password) 84 throws JMSException, MalformedURLException { 85 // made private for the time being. Need to sort out the 86 // AdminConnection interface post 0.7.6 87 AdminConnection result = null; 88 89 URI parser = null; 90 try { 91 parser = new URI(url); 92 } catch (URI.MalformedURIException exception) { 93 throw new MalformedURLException(exception.getMessage()); 94 } 95 96 String protocol = parser.getScheme(); 97 String host = parser.getHost(); 98 int port = parser.getPort(); 99 String path = parser.getPath(); 100 if (host != null) { 101 if (host.trim().length() == 0) { 102 host = null; 103 } 104 } 105 if (path != null) { 106 if (path.trim().length() == 0) { 107 path = null; 108 } else if (path.startsWith("/")) { 109 path = path.substring(1); 110 if (path.length() == 0) { 111 path = null; 112 } 113 } 114 } 115 116 SchemeType scheme = null; 117 try { 118 scheme = SchemeType.valueOf(protocol); 119 } catch (IllegalArgumentException exception) { 120 throw new MalformedURLException("Invalid scheme: " + protocol); 121 } 122 123 // check URL validity 124 switch (scheme.getType()) { 125 case SchemeType.TCP_TYPE: 126 case SchemeType.TCPS_TYPE: 127 if (host == null || port == -1 || path != null) { 128 throw new MalformedURLException("Invalid URL: " + url); 129 } 130 break; 131 case SchemeType.RMI_TYPE: 132 case SchemeType.HTTP_TYPE: 133 case SchemeType.HTTPS_TYPE: 134 if (host == null || port == -1) { 135 throw new MalformedURLException("Invalid URL: " + url); 136 } 137 break; 138 case SchemeType.EMBEDDED_TYPE: 139 if (host != null || port != -1 || path != null) { 140 throw new MalformedURLException("Invalid URL: " + url); 141 } 142 break; 143 } 144 145 // create the connection 146 switch (scheme.getType()) { 147 case SchemeType.TCP_TYPE: 148 result = new IpcJmsAdminConnection(host, port, username, 149 password); 150 break; 151 case SchemeType.TCPS_TYPE: 152 result = new SslIpcJmsAdminConnection(host, port, username, 153 password); 154 break; 155 case SchemeType.RMI_TYPE: 156 result = new RmiJmsAdminConnection(host, port, path, 157 username, password); 158 break; 159 case SchemeType.HTTP_TYPE: 160 result = new HttpJmsAdminConnection(host, port, path, 161 username, password); 162 break; 163 case SchemeType.HTTPS_TYPE: 164 result = new SslHttpJmsAdminConnection(host, port, path, 165 username, password); 166 break; 167 case SchemeType.EMBEDDED_TYPE: 168 result = new IntravmJmsAdminConnection(username, password); 169 break; 170 } 171 172 return result; 173 } 174 175 /*** 176 * Create an unauthenticated admin connection, using the specified server 177 * URL 178 * 179 * @param url the OpenJMS server URL 180 * @return JmsAdminServerIfc the administration API 181 * @throws JMSException if a connection cannot be established 182 * @throws MalformedURLException if <code>url</code> is invalid 183 */ 184 public static JmsAdminServerIfc create(String url) 185 throws JMSException, MalformedURLException { 186 return create(url, null, null); 187 } 188 189 /*** 190 * Create an authenticated admin connection, using the specified server 191 * URL, name, and password 192 * 193 * @param url the OpenJMS server URL 194 * @param username the admin user name 195 * @param password the admin user password 196 * @return JmsAdminServerIfc the administration API 197 * @throws JMSException if a connection cannot be established 198 * @throws MalformedURLException if <code>url</code> is invalid 199 */ 200 public static JmsAdminServerIfc create(String url, String username, 201 String password) 202 throws JMSException, MalformedURLException { 203 JmsAdminServerIfc result = null; 204 205 URI parser = null; 206 try { 207 parser = new URI(url); 208 } catch (URI.MalformedURIException exception) { 209 throw new MalformedURLException(exception.getMessage()); 210 } 211 String protocol = parser.getScheme(); 212 String host = parser.getHost(); 213 int port = parser.getPort(); 214 String path = parser.getPath(); 215 if (host != null) { 216 if (host.trim().length() == 0) { 217 host = null; 218 } 219 } 220 if (path != null) { 221 if (path.trim().length() == 0) { 222 path = null; 223 } else if (path.startsWith("/")) { 224 path = path.substring(1); 225 if (path.length() == 0) { 226 path = null; 227 } 228 } 229 } 230 231 SchemeType scheme = null; 232 try { 233 scheme = SchemeType.valueOf(protocol); 234 } catch (IllegalArgumentException exception) { 235 throw new MalformedURLException("Invalid scheme: " + protocol); 236 } 237 238 // check URL validity 239 switch (scheme.getType()) { 240 case SchemeType.TCP_TYPE: 241 case SchemeType.TCPS_TYPE: 242 if (host == null || port == -1 || path != null) { 243 throw new MalformedURLException("Invalid URL: " + url); 244 } 245 break; 246 case SchemeType.RMI_TYPE: 247 case SchemeType.HTTP_TYPE: 248 case SchemeType.HTTPS_TYPE: 249 if (host == null || port == -1) { 250 throw new MalformedURLException("Invalid URL: " + url); 251 } 252 break; 253 case SchemeType.EMBEDDED_TYPE: 254 if (host != null || port != -1 || path != null) { 255 throw new MalformedURLException("Invalid URL: " + url); 256 } 257 break; 258 } 259 260 // create the connection 261 switch (scheme.getType()) { 262 case SchemeType.TCP_TYPE: 263 result = new IpcJmsAdminConnection(host, port, username, 264 password); 265 break; 266 case SchemeType.TCPS_TYPE: 267 result = new SslIpcJmsAdminConnection(host, port, username, 268 password); 269 break; 270 case SchemeType.RMI_TYPE: 271 result = new RmiJmsAdminConnection(host, port, path, 272 username, password); 273 break; 274 case SchemeType.HTTP_TYPE: 275 result = new HttpJmsAdminConnection(host, port, path, 276 username, password); 277 break; 278 case SchemeType.HTTPS_TYPE: 279 result = new SslHttpJmsAdminConnection(host, port, path, 280 username, password); 281 break; 282 case SchemeType.EMBEDDED_TYPE: 283 result = new IntravmJmsAdminConnection(username, password); 284 break; 285 } 286 return result; 287 } 288 289 } //-- AdminConnectionFactory 290

This page was automatically generated by Maven