001 /**
002 *
003 * Copyright 2003-2004 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 //
019 // This source code implements specifications defined by the Java
020 // Community Process. In order to remain compliant with the specification
021 // DO NOT add / change / or delete method signatures!
022 //
023 package javax.xml.registry;
024
025 import java.util.Properties;
026 import java.util.Collection;
027
028 /**
029 * @version $Revision$ $Date$
030 */
031 public abstract class ConnectionFactory {
032 public ConnectionFactory() {
033 }
034
035 public abstract Connection createConnection() throws JAXRException;
036
037 public abstract FederatedConnection createFederatedConnection(Collection connections) throws JAXRException;
038
039 public abstract Properties getProperties() throws JAXRException;
040
041 public abstract void setProperties(Properties properties) throws JAXRException;
042
043 public static ConnectionFactory newInstance() throws JAXRException {
044 String className = System.getProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl");
045 ClassLoader cl = Thread.currentThread().getContextClassLoader();
046 if (cl == null) {
047 cl = ConnectionFactory.class.getClassLoader();
048 }
049 try {
050 Class factoryClass = cl.loadClass(className);
051 return (ConnectionFactory) factoryClass.newInstance();
052 } catch (ClassNotFoundException e) {
053 throw new JAXRException("Unable to load JAXR ConnectionFactoryClass: " + className, e);
054 } catch (InstantiationException e) {
055 throw new JAXRException("Unable to instantiate JAXR ConnectionFactoryClass: " + className, e);
056 } catch (IllegalAccessException e) {
057 throw new JAXRException("Unable to instantiate JAXR ConnectionFactoryClass: " + className, e);
058 }
059 }
060 }