1
16
17
20
21 package org.apache.wsrp4j.producer;
22
23 import java.util.Properties;
24
25 import org.apache.wsrp4j.exception.ErrorCodes;
26 import org.apache.wsrp4j.exception.WSRPException;
27 import org.apache.wsrp4j.exception.WSRPXHelper;
28 import org.apache.wsrp4j.log.LogManager;
29 import org.apache.wsrp4j.log.Logger;
30 import org.apache.wsrp4j.producer.provider.Provider;
31 import org.apache.wsrp4j.producer.provider.ProviderFactory;
32 import org.apache.wsrp4j.util.Utility;
33
34
40 public class ProviderAccess {
41
42 private static String WSRP_SERVICES = "wsrp-services.properties";
44
45 private static String PROVIDER_FACTORY = "provider.factory";
47
48 private static Properties pFactories = null;
50
51 private static Provider provider = null;
53
54 private static Logger logger = LogManager.getLogManager().getLogger(
56 ProviderAccess.class);
57
58
63 public static Provider getProvider() throws WSRPException {
64 String MN = "getProvider";
65 if (logger.isLogging(Logger.TRACE_HIGH)) {
66 logger.entry(Logger.TRACE_HIGH, MN);
67 }
68
69 if (provider == null) {
70 ProviderFactory factory = (ProviderFactory) getFactory(PROVIDER_FACTORY);
72 provider = factory.getProvider();
73 }
74
75 if (logger.isLogging(Logger.TRACE_HIGH)) {
76 logger.exit(Logger.TRACE_HIGH, MN);
77 }
78
79 return provider;
80 }
81
82
88 private static Object getFactory(String type) throws WSRPException {
89 String MN = "getFactory";
90 if (logger.isLogging(Logger.TRACE_HIGH)) {
91 logger.entry(Logger.TRACE_HIGH, MN);
92 }
93
94 Object obj = null;
95
96 try {
97 pFactories = Utility
98 .loadPropertiesFromFile(ProviderAccess.WSRP_SERVICES);
99
100 String factoryName = (String) pFactories.get(type);
101 Class cl = Class.forName(factoryName);
102
103 if (logger.isLogging(Logger.TRACE_HIGH)) {
104 logger.exit(Logger.TRACE_HIGH, MN);
105 }
106
107 obj = cl.newInstance();
108
109 }
110 catch (Exception e) {
111
112 WSRPXHelper.throwX(logger, Logger.ERROR, MN,
113 ErrorCodes.PROVIDER_FACTORY_NOT_FOUND);
114
115 }
116
117 return obj;
118 }
119
120 }