001: /*
002: * Copyright 2000-2001,2004 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: /*
018:
019: */
020:
021: package org.apache.wsrp4j.producer;
022:
023: import java.util.Properties;
024:
025: import org.apache.wsrp4j.exception.ErrorCodes;
026: import org.apache.wsrp4j.exception.WSRPException;
027: import org.apache.wsrp4j.exception.WSRPXHelper;
028: import org.apache.wsrp4j.log.LogManager;
029: import org.apache.wsrp4j.log.Logger;
030: import org.apache.wsrp4j.util.Utility;
031:
032: /**
033: * This class provides a static method to access the ConsumerRegistry.
034: * Reads in the file "wsrp-services.properties".
035: *
036: * @author <a href="mailto:stefan.behl@de.ibm.com">Stefan Behl</a>
037: */
038: public class ConsumerRegistryAccess {
039:
040: // the name of the .properties file
041: private static String WSRP_SERVICES = "wsrp-services.properties";
042:
043: /** String representing a factory type */
044: public static String CONSUMER_REGISTRY_FACTORY = "consumer.registry.factory";
045:
046: // the content of the properties file
047: private static Properties pFactories = null;
048:
049: // holds an instance of a consumer registry
050: private static ConsumerRegistry consumerRegistry = null;
051:
052: // log and trace support
053: private static Logger logger = LogManager.getLogManager()
054: .getLogger(ConsumerRegistryAccess.class);
055:
056: /**
057: * Fetches a ConsumerRegistry-instance utilizing the read
058: * ConsumerRegistryFactory and returns it.
059: *
060: * @return ConsumerRegistry-interface.
061: */
062: public static ConsumerRegistry getConsumerRegistry()
063: throws WSRPException {
064: String MN = "getConsumerRegistry";
065: if (logger.isLogging(Logger.TRACE_HIGH)) {
066: logger.entry(Logger.TRACE_HIGH, MN);
067: }
068:
069: if (consumerRegistry == null) {
070: // get ConsumerRegistry
071: ConsumerRegistryFactory factory = (ConsumerRegistryFactory) getFactory(CONSUMER_REGISTRY_FACTORY);
072: consumerRegistry = factory
073: .getConsumerRegistry(ProviderAccess.getProvider());
074: }
075:
076: if (logger.isLogging(Logger.TRACE_HIGH)) {
077: logger.exit(Logger.TRACE_HIGH, MN);
078: }
079:
080: return consumerRegistry;
081: }
082:
083: /**
084: Internal mehtod.
085: Returns a configured Factory class.
086: @param type java.lang.String representing the factory type.
087: @return java.lang.Object
088: */
089: private static Object getFactory(String type) throws WSRPException {
090: String MN = "getFactory";
091: if (logger.isLogging(Logger.TRACE_HIGH)) {
092: logger.entry(Logger.TRACE_HIGH, MN);
093: }
094:
095: Object obj = null;
096:
097: try {
098: pFactories = Utility.loadPropertiesFromFile(WSRP_SERVICES);
099: String factoryName = (String) pFactories.get(type);
100: Class cl = Class.forName(factoryName);
101:
102: if (logger.isLogging(Logger.TRACE_HIGH)) {
103: logger.exit(Logger.TRACE_HIGH, MN);
104: }
105:
106: obj = cl.newInstance();
107:
108: } catch (Exception e) {
109:
110: WSRPXHelper.throwX(logger, Logger.ERROR, MN,
111: ErrorCodes.CONSUMER_REGISTRY_FACTORY_NOT_FOUND);
112:
113: }
114:
115: return obj;
116: }
117: }
|