1   package com.atlassian.core.ofbiz;
2   
3   import com.atlassian.core.action.ActionDispatcher;
4   import com.atlassian.core.action.DefaultActionDispatcher;
5   import com.atlassian.core.ofbiz.association.AssociationManager;
6   import com.atlassian.core.ofbiz.association.DefaultAssociationManager;
7   import com.atlassian.core.ofbiz.multitenant.OfBizMultiTenantConfig;
8   import com.atlassian.multitenant.MultiTenantAwareComponentCreator;
9   import com.atlassian.multitenant.MultiTenantContext;
10  import com.atlassian.multitenant.MultiTenantDescriptor;
11  import org.ofbiz.core.entity.GenericDelegator;
12  
13  /**
14   * Created by IntelliJ IDEA. User: Mike Cannon-Brookes Date: Dec 2, 2002 Time: 7:43:48 PM To change this template use
15   * Options | File Templates.
16   */
17  public class CoreFactory
18  {
19      private static ActionDispatcher actionDispatcher;
20      private static AssociationManager associationManager;
21      private static GenericDelegator genericDelegator;
22  
23      public static void globalRefresh()
24      {
25          genericDelegator = null;
26          actionDispatcher = null;
27          associationManager = null;
28      }
29  
30      public static GenericDelegator getGenericDelegator()
31      {
32          if (genericDelegator == null)
33          {
34              if (MultiTenantContext.isEnabled())
35              {
36                  genericDelegator = MultiTenantContext.getFactory().createEnhancedComponent(
37                          new MultiTenantAwareComponentCreator<GenericDelegator>()
38                          {
39                              public GenericDelegator create(final MultiTenantDescriptor multiTenantDescriptor)
40                              {
41                                  return GenericDelegator.getGenericDelegator(
42                                          MultiTenantContext.getAccessor().get().getConfig(OfBizMultiTenantConfig.class).getName());
43                              }
44                          }, GenericDelegator.class.getClassLoader(), GenericDelegator.class);
45              }
46              else
47              {
48                  genericDelegator = GenericDelegator.getGenericDelegator("default");
49              }
50          }
51  
52          return genericDelegator;
53      }
54  
55      public static ActionDispatcher getActionDispatcher()
56      {
57          if (actionDispatcher == null)
58          {
59              if (MultiTenantContext.isEnabled())
60              {
61                  actionDispatcher = MultiTenantContext.getFactory().createComponent(DefaultActionDispatcher.class,
62                          ActionDispatcher.class);
63              }
64              else
65              {
66                  actionDispatcher = new DefaultActionDispatcher();
67              }
68          }
69          return actionDispatcher;
70      }
71  
72      public static void setActionDispatcher(final ActionDispatcher newActionDispatcher)
73      {
74          CoreFactory.actionDispatcher = newActionDispatcher;
75      }
76  
77      public static AssociationManager getAssociationManager()
78      {
79          if (associationManager == null)
80          {
81              if (MultiTenantContext.isEnabled())
82              {
83                  associationManager = MultiTenantContext.getFactory().createComponent(DefaultAssociationManager.class,
84                          AssociationManager.class);
85              }
86              else
87              {
88                  associationManager = new DefaultAssociationManager();
89              }
90          }
91          return associationManager;
92      }
93  
94      public static void setAssociationManager(final AssociationManager associationManager)
95      {
96          CoreFactory.associationManager = associationManager;
97      }
98  }