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
39 public class RenderParametersPool {
40
41 public static void clear(HttpServletRequest request, long plid) {
42 Map<String, Map<String, String[]>> plidPool = get(request, plid);
43
44 plidPool.clear();
45 }
46
47 public static void clear(
48 HttpServletRequest request, long plid, String portletId) {
49
50 Map<String, String[]> params = get(request, plid, portletId);
51
52 params.clear();
53 }
54
55 public static Map<String, Map<String, String[]>> get(
56 HttpServletRequest request, long plid) {
57
58 HttpSession session = request.getSession();
59
60 if (plid <= 0) {
61 return new ConcurrentHashMap<String, Map<String, String[]>>();
62 }
63
64 Map<Long, Map<String, Map<String, String[]>>> pool =
65 _getRenderParametersPool(session);
66
67 Map<String, Map<String, String[]>> plidPool = pool.get(plid);
68
69 if (plidPool == null) {
70 plidPool = new ConcurrentHashMap<String, Map<String, String[]>>();
71
72 pool.put(plid, plidPool);
73 }
74
75 return plidPool;
76 }
77
78 public static Map<String, String[]> get(
79 HttpServletRequest request, long plid, String portletId) {
80
81 Map<String, Map<String, String[]>> plidPool = get(request, plid);
82
83 Map<String, String[]> params = plidPool.get(portletId);
84
85 if (params == null) {
86 params = new HashMap<String, String[]>();
87
88 plidPool.put(portletId, params);
89 }
90
91 return params;
92 }
93
94 public static void put(
95 HttpServletRequest request, long plid, String portletId,
96 Map<String, String[]> params) {
97
98 Map<String, Map<String, String[]>> plidPool = get(request, plid);
99
100 plidPool.put(portletId, params);
101 }
102
103 private static Map<Long, Map<String, Map<String, String[]>>>
104 _getRenderParametersPool(HttpSession session) {
105
106 Map<Long, Map<String, Map<String, String[]>>> renderParametersPool =
107 (Map<Long, Map<String, Map<String, String[]>>>)session.getAttribute(
108 WebKeys.PORTLET_RENDER_PARAMETERS);
109
110 if (renderParametersPool == null) {
111 renderParametersPool = new ConcurrentHashMap
112 <Long, Map<String, Map<String, String[]>>>();
113
114 session.setAttribute(
115 WebKeys.PORTLET_RENDER_PARAMETERS, renderParametersPool);
116 }
117
118 return renderParametersPool;
119 }
120
121 }