1
22
23 package com.liferay.taglib.util;
24
25 import com.liferay.portal.kernel.servlet.StringServletResponse;
26 import com.liferay.portal.util.WebKeys;
27 import com.liferay.util.servlet.DynamicServletRequest;
28
29 import java.io.IOException;
30
31 import java.util.LinkedHashMap;
32 import java.util.Map;
33
34 import javax.servlet.RequestDispatcher;
35 import javax.servlet.ServletContext;
36 import javax.servlet.ServletException;
37 import javax.servlet.http.HttpServletRequest;
38 import javax.servlet.http.HttpServletResponse;
39 import javax.servlet.jsp.tagext.BodyTagSupport;
40
41
47 public class ParamAndPropertyAncestorTagImpl
48 extends BodyTagSupport implements ParamAncestorTag, PropertyAncestorTag {
49
50 public void addParam(String name, String value) {
51 if (_params == null) {
52 _params = new LinkedHashMap<String, String[]>();
53 }
54
55 String[] values = _params.get(name);
56
57 if (values == null) {
58 values = new String[] {value};
59 }
60 else {
61 String[] newValues = new String[values.length + 1];
62
63 System.arraycopy(values, 0, newValues, 0, values.length);
64
65 newValues[newValues.length - 1] = value;
66
67 values = newValues;
68 }
69
70 _params.put(name, values);
71 }
72
73 public void addProperty(String name, String value) {
74 if (_properties == null) {
75 _properties = new LinkedHashMap<String, String[]>();
76 }
77
78 String[] values = _properties.get(name);
79
80 if (values == null) {
81 values = new String[] {value};
82 }
83 else {
84 String[] newValues = new String[values.length + 1];
85
86 System.arraycopy(values, 0, newValues, 0, values.length);
87
88 newValues[newValues.length - 1] = value;
89
90 values = newValues;
91 }
92
93 _properties.put(name, values);
94 }
95
96 public void clearParams() {
97 if (_params != null) {
98 _params.clear();
99 }
100 }
101
102 public void clearProperties() {
103 if (_properties != null) {
104 _properties.clear();
105 }
106 }
107
108 public Map<String, String[]> getParams() {
109 return _params;
110 }
111
112 public Map<String, String[]> getProperties() {
113 return _properties;
114 }
115
116 public ServletContext getServletContext() {
117 HttpServletRequest request =
118 (HttpServletRequest)pageContext.getRequest();
119
120 ServletContext servletContext = (ServletContext)request.getAttribute(
121 WebKeys.CTX);
122
123 if (servletContext == null) {
124 servletContext = pageContext.getServletContext();
125 }
126
127 return servletContext;
128 }
129
130 public HttpServletRequest getServletRequest() {
131 HttpServletRequest request =
132 (HttpServletRequest)pageContext.getRequest();
133
134 if (_params != null) {
135 request = new DynamicServletRequest(request, _params);
136 }
137
138 return request;
139 }
140
141 public StringServletResponse getServletResponse() {
142 return new StringServletResponse(
143 (HttpServletResponse)pageContext.getResponse());
144 }
145
146 public void include(String path) throws IOException, ServletException {
147 ServletContext servletContext = getServletContext();
148 HttpServletRequest request = getServletRequest();
149 StringServletResponse stringResponse = getServletResponse();
150
151 RequestDispatcher requestDispatcher =
152 servletContext.getRequestDispatcher(path);
153
154 requestDispatcher.include(request, stringResponse);
155
156 pageContext.getOut().print(stringResponse.getString());
157 }
158
159 private Map<String, String[]> _params;
160 private Map<String, String[]> _properties;
161
162 }