1
19
20 package com.liferay.portlet;
21
22 import com.liferay.portal.model.Portlet;
23
24 import java.util.Map;
25 import java.util.concurrent.ConcurrentHashMap;
26
27 import javax.portlet.PortletConfig;
28 import javax.portlet.PortletContext;
29
30 import javax.servlet.ServletContext;
31
32
38 public class PortletConfigFactory {
39
40 public static PortletConfig create(
41 Portlet portlet, ServletContext servletContext) {
42
43 return _instance._create(portlet, servletContext);
44 }
45
46 public static void destroy(Portlet portlet) {
47 _instance._destroy(portlet);
48 }
49
50 private PortletConfigFactory() {
51 _pool = new ConcurrentHashMap<String, Map<String, PortletConfig>>();
52 }
53
54 private PortletConfig _create(
55 Portlet portlet, ServletContext servletContext) {
56
57 Map<String, PortletConfig> portletConfigs =
58 _pool.get(portlet.getRootPortletId());
59
60 if (portletConfigs == null) {
61 portletConfigs = new ConcurrentHashMap<String, PortletConfig>();
62
63 _pool.put(portlet.getRootPortletId(), portletConfigs);
64 }
65
66 PortletConfig portletConfig = portletConfigs.get(
67 portlet.getPortletId());
68
69 if (portletConfig == null) {
70 PortletContext portletContext =
71 PortletContextFactory.create(portlet, servletContext);
72
73 portletConfig = new PortletConfigImpl(portlet, portletContext);
74
75 portletConfigs.put(portlet.getPortletId(), portletConfig);
76 }
77
78 return portletConfig;
79 }
80
81 private void _destroy(Portlet portlet) {
82 _pool.remove(portlet.getRootPortletId());
83 }
84
85 private static PortletConfigFactory _instance = new PortletConfigFactory();
86
87 private Map<String, Map<String, PortletConfig>> _pool;
88
89 }