1
2
3
4
5
6 package pt.digitalis.dif.ioc;
7
8 import pt.digitalis.dif.controller.security.managers.IAuthenticationManager;
9 import pt.digitalis.dif.controller.security.managers.IAuthorizationManager;
10 import pt.digitalis.dif.controller.security.managers.IIdentityManager;
11 import pt.digitalis.dif.dem.managers.IMessageManager;
12 import pt.digitalis.dif.utils.logging.DIFLogger;
13 import pt.digitalis.utils.common.StringUtils;
14 import pt.digitalis.utils.ioc.modules.IIoCDynamicModule;
15 import pt.digitalis.utils.ioc.modules.IoCBinder;
16 import pt.digitalis.utils.ioc.modules.IoCBinding;
17
18
19
20
21
22 public class DefaultModulesSeleccionModule implements IIoCDynamicModule {
23
24
25 private DIFDefaultModulesConfiguration moduleConfig = DIFDefaultModulesConfiguration.getInstance();
26
27
28
29
30
31
32 private void bindDefaultModule(IoCBinder binder, Class<?> serviceClass)
33 {
34 IoCBinding previousBinding = moduleConfig.getDefaultImplementationBindingFor(serviceClass);
35 IoCBinding newDefaultBinding = null;
36
37 if (previousBinding != null)
38 {
39 newDefaultBinding = binder.bind(serviceClass, previousBinding.getImplementationType());
40 if (previousBinding.isSingleton())
41 newDefaultBinding.asSingleton();
42
43 DIFLogger.getLogger().info(
44 " => "
45 + StringUtils.camelCaseToString(previousBinding.getInterfaceType().getSimpleName()
46 .substring(1)) + ": " + previousBinding.getId() + " ("
47 + previousBinding.getImplementationType().getSimpleName() + ")");
48 }
49 else
50 {
51 DIFLogger.getLogger().warn(" => " + "No bindings for: " + serviceClass.getCanonicalName());
52 }
53 }
54
55
56
57
58 public void configure(IoCBinder binder)
59 {
60 DIFLogger.getLogger().info("Core Module Resolution");
61
62 bindDefaultModule(binder, IMessageManager.class);
63 bindDefaultModule(binder, IIdentityManager.class);
64 bindDefaultModule(binder, IAuthenticationManager.class);
65 bindDefaultModule(binder, IAuthorizationManager.class);
66
67 DIFLogger.getLogger().info("");
68 }
69 }