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 2000-2004 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: ConfigurationManager.java,v 1.16 2004/01/03 04:00:56 tanderson Exp $ 44 * 45 * Date Author Changes 46 * 05/15/2000 jima Created 47 */ 48 package org.exolab.jms.config; 49 50 import java.io.File; 51 52 import org.exolab.castor.xml.MarshalException; 53 import org.exolab.castor.xml.Unmarshaller; 54 import org.exolab.castor.xml.ValidationException; 55 import org.exolab.jms.config.types.SchemeType; 56 57 58 /*** 59 * The ConfigurationManager manages provides class methods for setting and 60 * getting the configuration file. It should be set by the application main 61 * line through {@link #setConfig} and subsequently accessed by other 62 * components through {@link #getConfig}. 63 * 64 * @version $Revision: 1.16 $ $Date: 2004/01/03 04:00:56 $ 65 * @author <a href="mailto:jima@intalio.com">Jim Alateras</a> 66 */ 67 public class ConfigurationManager { 68 69 /*** 70 * The loaded configuration 71 */ 72 private static Configuration _config = null; 73 74 /*** 75 * Load the configuration file 76 * 77 * @param path xml config file conforming to openjms.xsd schema 78 * @throws FileDoesNotExistException if the file does not exist 79 * @throws ConfigurationFileException if the file is not well-formed 80 */ 81 public static synchronized void setConfig(String path) 82 throws FileDoesNotExistException, ConfigurationFileException { 83 File config = new File(path); 84 85 if (config.exists()) { 86 ConfigurationLoader loader = new ConfigurationLoader(); 87 try { 88 _config = loader.load(path); 89 } catch (Exception exception) { 90 throw new ConfigurationFileException( 91 "Error occured in " + path + " " + exception); 92 } 93 } else { 94 throw new FileDoesNotExistException( 95 "Configuration file " + path + " does not exist."); 96 } 97 } 98 99 /*** 100 * Set the configuration 101 * 102 * @param config the configuration 103 */ 104 public static synchronized void setConfig(Configuration config) { 105 if (config == null) { 106 throw new IllegalArgumentException("Argument 'config' is null"); 107 } 108 _config = config; 109 } 110 111 /*** 112 * Returns the configuration 113 * 114 * @throws IllegalStateException if the configuration has not been 115 * initialised 116 * @return the configuration 117 */ 118 public static synchronized Configuration getConfig() { 119 if (_config == null) { 120 throw new IllegalStateException( 121 "Configuration manager has not been initialised"); 122 } 123 return _config; 124 } 125 126 /*** 127 * Returns the connector configuration for the supplied scheme 128 * 129 * @param scheme the connector scheme 130 * @return the connector configuration for the supplied scheme, or null, 131 * if no configuration exists 132 * @throws IllegalArgumentException if scheme is null 133 * @throws IllegalStateException if the configuration is not initialised 134 */ 135 public static Connector getConnector(SchemeType scheme) { 136 if (scheme == null) { 137 throw new IllegalArgumentException("Argument scheme is null"); 138 } 139 Connector result = null; 140 Configuration config = getConfig(); 141 Connector[] connectors = config.getConnectors().getConnector(); 142 for (int i = 0; i < connectors.length; ++i) { 143 if (connectors[i].getScheme().equals(scheme)) { 144 result = connectors[i]; 145 break; 146 } 147 } 148 return result; 149 } 150 151 /*** 152 * Returns the default connector. This is the first configured connector 153 * in the configuration. 154 * 155 * @return the default connector 156 * @throws IllegalStateException if the configuration is not initialised 157 * @deprecated This method relies on users knowing that the first connector 158 * is the one that will be used. 159 * @see #getConnector(SchemeType) 160 */ 161 public static Connector getConnector() { 162 Configuration config = getConfig(); 163 return config.getConnectors().getConnector(0); 164 } 165 166 } //-- ConfigurationManager

This page was automatically generated by Maven