/******************************************************************************* * Copyright 2014 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. ******************************************************************************/ /* * Copyright 2003 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egovernment.moa.id.proxy; import java.util.HashMap; import java.util.Map; import at.gv.egovernment.moa.id.config.ConfigurationException; import at.gv.egovernment.moa.id.config.proxy.OAProxyParameter; import at.gv.egovernment.moa.id.config.proxy.ProxyConfigurationProvider; /** * Factory delivering a {@link ConnectionBuilder} implementation for * an online application, initialized from configuration data. * @author Paul Ivancsics * @version $Id$ */ public class ConnectionBuilderFactory { /** default connection builder to be used for online application * where no special implementation of the ConnectionBuilder * interface is configured */ private static ConnectionBuilder defaultConnectionBuilder; /** mapping from online application public URL prefix to an implementation * of the ConnectionBuilder interface to be used; * if no mapping is given for an online application, the * DefaultConnectionBuilder will be used */ private static Map connectionBuilderMap; /** * Initializes the ConnectionBuilder map from the configuration data. * @throws ConfigurationException when the configuration cannot be read, * or when a class name configured cannot be instantiated */ public static void initialize() throws ConfigurationException { defaultConnectionBuilder = new DefaultConnectionBuilder(); connectionBuilderMap = new HashMap(); ProxyConfigurationProvider proxyConf = ProxyConfigurationProvider.getInstance(); for (int i = 0; i < proxyConf.getOnlineApplicationParameters().length; i++) { OAProxyParameter oaParam = proxyConf.getOnlineApplicationParameters()[i]; String publicURLPrefix = oaParam.getPublicURLPrefix(); String className = oaParam.getConnectionBuilderImpl(); if (className != null) { try { ConnectionBuilder cb = (ConnectionBuilder)Class.forName(className).newInstance(); connectionBuilderMap.put(publicURLPrefix, cb); } catch (Throwable ex) { throw new ConfigurationException("config.07", new Object[] {publicURLPrefix}, ex); } } } } /** * Gets the ConnectionBuilder implementation to be used for the given * online application. * @param publicURLPrefix public URL prefix of the online application * @return ConnectionBuilder implementation */ public static ConnectionBuilder getConnectionBuilder(String publicURLPrefix) { ConnectionBuilder cb = (ConnectionBuilder) connectionBuilderMap.get(publicURLPrefix); if (cb == null) return defaultConnectionBuilder; else return cb; } }