1
22
23 package com.liferay.portlet;
24
25 import com.liferay.portal.util.WebKeys;
26
27 import java.util.HashMap;
28 import java.util.Map;
29 import java.util.concurrent.ConcurrentHashMap;
30
31 import javax.servlet.http.HttpServletRequest;
32 import javax.servlet.http.HttpSession;
33
34
40 public class RenderParametersPool {
41
42 public static void clear(HttpServletRequest request, long plid) {
43 Map<String, Map<String, String[]>> plidPool = get(request, plid);
44
45 plidPool.clear();
46 }
47
48 public static void clear(
49 HttpServletRequest request, long plid, String portletId) {
50
51 Map<String, String[]> params = get(request, plid, portletId);
52
53 params.clear();
54 }
55
56 public static Map<String, Map<String, String[]>> get(
57 HttpServletRequest request, long plid) {
58
59 HttpSession session = request.getSession();
60
61 if (plid <= 0) {
62 return new ConcurrentHashMap<String, Map<String, String[]>>();
63 }
64
65 Map<Long, Map<String, Map<String, String[]>>> pool =
66 _getRenderParametersPool(session);
67
68 Map<String, Map<String, String[]>> plidPool = pool.get(plid);
69
70 if (plidPool == null) {
71 plidPool = new ConcurrentHashMap<String, Map<String, String[]>>();
72
73 pool.put(plid, plidPool);
74 }
75
76 return plidPool;
77 }
78
79 public static Map<String, String[]> get(
80 HttpServletRequest request, long plid, String portletId) {
81
82 Map<String, Map<String, String[]>> plidPool = get(request, plid);
83
84 Map<String, String[]> params = plidPool.get(portletId);
85
86 if (params == null) {
87 params = new HashMap<String, String[]>();
88
89 plidPool.put(portletId, params);
90 }
91
92 return params;
93 }
94
95 public static void put(
96 HttpServletRequest request, long plid, String portletId,
97 Map<String, String[]> params) {
98
99 Map<String, Map<String, String[]>> plidPool = get(request, plid);
100
101 plidPool.put(portletId, params);
102 }
103
104 private static Map<Long, Map<String, Map<String, String[]>>>
105 _getRenderParametersPool(HttpSession session) {
106
107 Map<Long, Map<String, Map<String, String[]>>> renderParametersPool =
108 (Map<Long, Map<String, Map<String, String[]>>>)session.getAttribute(
109 WebKeys.PORTLET_RENDER_PARAMETERS);
110
111 if (renderParametersPool == null) {
112 renderParametersPool = new ConcurrentHashMap
113 <Long, Map<String, Map<String, String[]>>>();
114
115 session.setAttribute(
116 WebKeys.PORTLET_RENDER_PARAMETERS, renderParametersPool);
117 }
118
119 return renderParametersPool;
120 }
121
122 }