@@ -67,55 +67,58 @@ public class ProviderFactory
6767 */
6868 public static synchronized ProviderFactory createFactory (AdvancedProperties adapterProps )
6969 {
70- synchronized (locked )
71- {
72- logger .debug ("Total Threads running before initialising provider Factory: " +Thread .activeCount ()+ " threads." );
73- if (factory == null )
74- {
75- try
76- {
77- factory = new ProviderFactory (adapterProps );
78- }
79- catch (Exception ex )
80- {
81- logger .error ("Failed to initialise provider factory. Provider won't run." , ex );
82- factory = null ;
83- }
84- }
85- logger .debug ("Total Threads running after initialising Provider Factory: " +Thread .activeCount ()+ " threads." );
86- return factory ;
87- }
70+ synchronized (locked )
71+ {
72+ logger .debug ("Total Threads running before initialising provider Factory: " + Thread .activeCount () + " threads." );
73+ if (factory == null )
74+ {
75+ try
76+ {
77+ factory = new ProviderFactory (adapterProps );
78+ }
79+ catch (Exception ex )
80+ {
81+ logger .error ("Failed to initialise provider factory. Provider won't run." , ex );
82+ factory = null ;
83+ }
84+ }
85+ logger .debug ("Total Threads running after initialising Provider Factory: " + Thread .activeCount () + " threads." );
86+ return factory ;
87+ }
8888 }
8989
9090 /**
9191 * This will shut down each provider class that make up this provider
9292 */
9393 public static synchronized void shutdown ()
9494 {
95- synchronized (locked )
96- {
97- if (factory != null )
98- {
99- for (BaseProvider provider : factory .eventProviders .values ())
100- {
101- try
102- {
103- logger .debug ("Finalise provider " +provider .getMultiObjectClassInfo ().getObjectName ()+"..." );
104- provider .finalise ();
105- }
106- catch (Exception ex )
107- {
108- // nothing we can really do. We are shutting down anyway...
109- }
110- }
111-
112- // Shut down provider threads.
113- logger .debug ("Shut Down Provider Thread Pool..." );
114- factory .providerService .shutdownNow ();
115- logger .debug ("Shut Down Provider Thread Pool: Done" );
116- }
117- logger .info ("All providers are shut down." );
118- }
95+ synchronized (locked )
96+ {
97+ if (factory != null )
98+ {
99+ for (BaseProvider provider : factory .eventProviders .values ())
100+ {
101+ try
102+ {
103+ logger .debug ("Finalise provider " + provider .getMultiObjectClassInfo ().getObjectName () + "..." );
104+ provider .finalise ();
105+ }
106+ catch (Exception ex )
107+ {
108+ // nothing we can really do. We are shutting down anyway...
109+ }
110+ }
111+
112+ // Shut down provider threads.
113+ logger .debug ("Shut Down Provider Thread Pool..." );
114+ if (factory .providerService != null )
115+ {
116+ factory .providerService .shutdownNow ();
117+ }
118+ logger .debug ("Shut Down Provider Thread Pool: Done" );
119+ }
120+ logger .info ("All providers are shut down." );
121+ }
119122 }
120123
121124 /**
@@ -138,37 +141,37 @@ public static ProviderFactory getInstance()
138141 */
139142 public Provider getProvider (ModelObjectInfo objectInfo )
140143 {
141- if ((objectInfo != null ) && (StringUtils .notEmpty (objectInfo .getObjectName ())))
142- {
143- ProviderClassInfo providerClassInfo = providerClasses .get (objectInfo );
144- if (providerClassInfo != null )
145- {
146- try
147- {
148- return (BaseProvider )providerClassInfo .getClassInstance (null );
149- }
150- catch (Exception ex )
151- {
152- logger .error ("Failed to instantiate a provider for " + objectInfo .getObjectName ()+ ": " + ex .getMessage (), ex );
153- return null ;
154- }
155- }
156- else // no known provider for the given Object Type
157- {
158- return null ;
159- }
160- }
161- else
162- {
163- logger .error ("The ModelObjectInfo parameter is either null or does not have the ObjectName property set. This is required! No Provider returned." );
164- return null ;
165- }
144+ if ((objectInfo != null ) && (StringUtils .notEmpty (objectInfo .getObjectName ())))
145+ {
146+ ProviderClassInfo providerClassInfo = providerClasses .get (objectInfo );
147+ if (providerClassInfo != null )
148+ {
149+ try
150+ {
151+ return (BaseProvider ) providerClassInfo .getClassInstance (null );
152+ }
153+ catch (Exception ex )
154+ {
155+ logger .error ("Failed to instantiate a provider for " + objectInfo .getObjectName () + ": " + ex .getMessage (), ex );
156+ return null ;
157+ }
158+ }
159+ else // no known provider for the given Object Type
160+ {
161+ return null ;
162+ }
163+ }
164+ else
165+ {
166+ logger .error ("The ModelObjectInfo parameter is either null or does not have the ObjectName property set. This is required! No Provider returned." );
167+ return null ;
168+ }
166169 }
167170
168171 /*---------------------*/
169172 /*-- Private Methods --*/
170173 /*---------------------*/
171- private ProviderFactory (AdvancedProperties adapterProps ) throws Exception
174+ private ProviderFactory (AdvancedProperties adapterProps ) throws Exception
172175 {
173176 super ();
174177
@@ -177,48 +180,48 @@ private ProviderFactory(AdvancedProperties adapterProps) throws Exception
177180 startProviders (adapterProps );
178181 }
179182
180- private void initialiseProviders (AdvancedProperties adapterProps )
183+ private void initialiseProviders (AdvancedProperties adapterProps )
181184 {
182- List <String > classList = adapterProps .getFromCommaSeparated ("provider.classes" );
183- String basePackageName = makePackageName (adapterProps .getPropertyAsString ("provider.basePackageName" , "" ));
184- for (String className : classList )
185- {
186- logger .debug ("Provider class to initialse: " + className );
187- try
188- {
189- Class <?> clazz = Class .forName (basePackageName + className );
190- ProviderClassInfo providerClassInfo = new ProviderClassInfo (clazz , new Class [] {});
191-
192- Object classObj = providerClassInfo .getClassInstance (null );
193-
194- // Set properties and add it to correct structure
195- if (classObj instanceof BaseProvider )
185+ List <String > classList = adapterProps .getFromCommaSeparated ("provider.classes" );
186+ String basePackageName = makePackageName (adapterProps .getPropertyAsString ("provider.basePackageName" , "" ));
187+ for (String className : classList )
188+ {
189+ logger .debug ("Provider class to initialse: " + className );
190+ try
196191 {
197- BaseProvider provider = (BaseProvider )classObj ;
198- ModelObjectInfo objectInfo = provider .getMultiObjectClassInfo ();
199- if ((objectInfo != null ) && (StringUtils .notEmpty (objectInfo .getObjectName ())))
200- {
201- // First add it to the standard request/response hashmap
202- providerClasses .put (objectInfo , providerClassInfo );
203-
204- // Add it to hasmap for background threads
205- eventProviders .put (objectInfo , provider );
206- }
207- else
208- {
209- logger .error ("The ModelObjectInfo parameter is either null or does not have the ObjectName property set. This is required! Provider '" +provider .getClass ().getSimpleName ()+" not added to provider factory." );
210- }
192+ Class <?> clazz = Class .forName (basePackageName + className );
193+ ProviderClassInfo providerClassInfo = new ProviderClassInfo (clazz , new Class [] {});
194+
195+ Object classObj = providerClassInfo .getClassInstance (null );
196+
197+ // Set properties and add it to correct structure
198+ if (classObj instanceof BaseProvider )
199+ {
200+ BaseProvider provider = (BaseProvider ) classObj ;
201+ ModelObjectInfo objectInfo = provider .getMultiObjectClassInfo ();
202+ if ((objectInfo != null ) && (StringUtils .notEmpty (objectInfo .getObjectName ())))
203+ {
204+ // First add it to the standard request/response hashmap
205+ providerClasses .put (objectInfo , providerClassInfo );
206+
207+ // Add it to hasmap for background threads
208+ eventProviders .put (objectInfo , provider );
209+ }
210+ else
211+ {
212+ logger .error ("The ModelObjectInfo parameter is either null or does not have the ObjectName property set. This is required! Provider '" + provider .getClass ().getSimpleName () + " not added to provider factory." );
213+ }
214+ }
215+ else
216+ {
217+ logger .error ("Provider class " + className + " doesn't extend BaseProvider. Cannot initialse the Provider." );
218+ }
211219 }
212- else
220+ catch ( Exception ex )
213221 {
214- logger .error ("Provider class " + className + " doesn't extend BaseProvider. Cannot initialse the Provider." );
222+ logger .error ("Cannot create Provider Class " + basePackageName + className + ": " + ex . getMessage (), ex );
215223 }
216- }
217- catch (Exception ex )
218- {
219- logger .error ("Cannot create Provider Class " + basePackageName + className + ": " + ex .getMessage (), ex );
220- }
221- }
224+ }
222225 }
223226
224227 private String makePackageName (String packageName )
@@ -240,7 +243,7 @@ private void startProviders(AdvancedProperties adapterProps) throws Exception
240243 // Ensure there is 10 seconds between the start of each publisher so that they don't hammer
241244 // the system at the same time during startup. Startup thread on thread pool.
242245 providerService .schedule (provider , i *delay , TimeUnit .SECONDS );
243- i ++;
246+ i ++;
244247 }
245248 }
246249}
0 commit comments