View Javadoc

1   /**
2    * - Digitalis Internal Framework v2.0 - (C) 2007, Digitalis Informatica. Distribuicao e Gestao de Informatica, Lda.
3    * Estrada de Paco de Arcos num.9 - Piso -1 2780-666 Paco de Arcos Telefone: (351) 21 4408990 Fax: (351) 21 4408999
4    * http://www.digitalis.pt
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   * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a><br/>
20   * @created 4 de Fev de 2011
21   */
22  public class DefaultModulesSeleccionModule implements IIoCDynamicModule {
23  
24      /**  */
25      private DIFDefaultModulesConfiguration moduleConfig = DIFDefaultModulesConfiguration.getInstance();
26  
27      /**
28       * @param binder
29       * @param serviceClass
30       *            to bind
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       * @see pt.digitalis.utils.ioc.modules.IIoCModule#configure(pt.digitalis.utils.ioc.modules.IoCBinder)
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  }