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 }