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
15
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 }