1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.jsr168.pluto.core;
35
36 import fr.paris.lutece.plugins.jsr168.pluto.LutecePlutoConstant;
37 import fr.paris.lutece.portal.web.constants.Parameters;
38
39 import org.apache.pluto.om.common.ObjectID;
40 import org.apache.pluto.om.window.PortletWindow;
41 import org.apache.pluto.portalImpl.om.window.impl.PortletWindowImpl;
42 import org.apache.pluto.portalImpl.services.config.Config;
43 import org.apache.pluto.services.information.PortletURLProvider;
44
45 import java.util.Collections;
46 import java.util.Map;
47
48 import javax.portlet.PortletMode;
49 import javax.portlet.WindowState;
50
51 import javax.servlet.http.HttpServletRequest;
52 import javax.servlet.http.HttpServletResponse;
53
54
55
56
57
58
59
60 public class PortletURLProviderImpl implements PortletURLProvider
61 {
62 private static final String _hostNameHTTP;
63 private static final String _hostNameHTTPS;
64
65 static
66 {
67 final String hostName = Config.getParameters( )
68 .getString( LutecePlutoConstant.CONFIG_SERVICES_PARAM_HOST_NAME,
69 LutecePlutoConstant.CONFIG_SERVICES_PARAM_HOST_NAME_DEFAULT );
70 final String hostPortHTTP = Config.getParameters( )
71 .getString( LutecePlutoConstant.CONFIG_SERVICES_PARAM_HOST_PORT_HTTP,
72 LutecePlutoConstant.CONFIG_SERVICES_PARAM_HOST_PORT_HTTP_DEFAULT );
73 final String hostPortHTTPS = Config.getParameters( )
74 .getString( LutecePlutoConstant.CONFIG_SERVICES_PARAM_HOST_PORT_HTTPS,
75 LutecePlutoConstant.CONFIG_SERVICES_PARAM_HOST_PORT_HTTPS_DEFAULT );
76
77 final StringBuffer hostHTTP = new StringBuffer( "http://" );
78 hostHTTP.append( hostName );
79
80 if ( !"80".equals( hostPortHTTP ) )
81 {
82 hostHTTP.append( ':' );
83 hostHTTP.append( hostPortHTTP );
84 }
85
86 _hostNameHTTP = hostHTTP.toString( );
87
88 final StringBuffer hostHTTPS = new StringBuffer( "https://" );
89 hostHTTPS.append( hostName );
90
91 if ( !"443".equals( hostPortHTTPS ) )
92 {
93 hostHTTPS.append( ':' );
94 hostHTTPS.append( hostPortHTTPS );
95 }
96
97 _hostNameHTTPS = hostHTTPS.toString( );
98 }
99
100 private final HttpServletRequest _request;
101 private final DynamicInformationProviderImpl _provider;
102 private final PortletWindowImpl _portletWindow;
103
104
105
106
107 private PortletMode _mode;
108
109
110
111
112 private WindowState _state;
113
114
115
116
117
118 private boolean _bAction;
119
120
121
122
123 private boolean _secure;
124 private boolean _clearParameters;
125 private Map _parameters;
126
127
128
129
130
131
132
133
134 public PortletURLProviderImpl( HttpServletRequest request, DynamicInformationProviderImpl provider,
135 PortletWindow portletWindow )
136 {
137 _request = request;
138 _provider = provider;
139 _portletWindow = (PortletWindowImpl) portletWindow;
140 _bAction = false;
141 _secure = false;
142 }
143
144
145
146
147 public void setPortletMode( PortletMode mode )
148 {
149 _mode = mode;
150 }
151
152
153
154
155 public void setWindowState( WindowState state )
156 {
157 _state = state;
158 }
159
160
161
162
163 public void setAction( )
164 {
165 _bAction = true;
166 }
167
168
169
170
171 public void setSecure( )
172 {
173 _secure = true;
174 }
175
176
177
178
179 public void clearParameters( )
180 {
181 _clearParameters = true;
182 }
183
184
185
186
187 public void setParameters( Map parameters )
188 {
189 _parameters = parameters;
190 }
191
192
193
194
195 public String toString( )
196 {
197 StringBuffer urlBuf = new StringBuffer( );
198
199 urlBuf.append( _secure ? _hostNameHTTPS : _hostNameHTTP );
200 urlBuf.append( _request.getContextPath( ) );
201 urlBuf.append( LutecePlutoConstant.URL_JSR168_ACTION );
202
203
204
205
206
207
208
209
210
211 String params = PortalURL.buildParams( _portletWindow.getId( ), _bAction, _mode, _state, _parameters );
212
213 if ( ( params != null ) && ( params.length( ) > 0 ) )
214 {
215 urlBuf.append( params );
216 }
217
218
219
220
221
222
223 if ( _request.getParameter( Parameters.PAGE_ID ) != null )
224 {
225 urlBuf.append( '&' );
226 urlBuf.append( Parameters.PAGE_ID );
227 urlBuf.append( '=' );
228 urlBuf.append( _request.getParameter( Parameters.PAGE_ID ) );
229 }
230
231 PortalEnvironment environment = PortalEnvironment.getPortalEnvironment( _request );
232
233 return environment.getResponse( ).encodeURL( urlBuf.toString( ) );
234 }
235
236
237
238
239
240
241
242 static String getBaseURLexcludeContext( )
243 {
244 return _hostNameHTTP;
245 }
246
247
248
249
250
251
252
253
254
255 public static String getRedirectPortalURL( HttpServletRequest request, final HttpServletResponse response )
256 {
257 StringBuffer urlBuf = new StringBuffer( );
258
259 urlBuf.append( _hostNameHTTP );
260 urlBuf.append( request.getContextPath( ) );
261 urlBuf.append( LutecePlutoConstant.URL_LUTECE_PORTAL );
262
263
264
265
266
267
268 String pageIdParam = request.getParameter( Parameters.PAGE_ID );
269
270 if ( pageIdParam != null )
271 {
272 urlBuf.append( '&' );
273 urlBuf.append( Parameters.PAGE_ID );
274 urlBuf.append( '=' );
275 urlBuf.append( pageIdParam );
276 }
277
278 return response.encodeURL( urlBuf.toString( ) );
279 }
280
281
282
283
284
285
286
287
288
289
290
291 public static String getRenderURL( HttpServletRequest request, HttpServletResponse response, PortletMode mode,
292 WindowState state, ObjectID portletID )
293 {
294 StringBuffer urlBuf = new StringBuffer( );
295
296 urlBuf.append( _hostNameHTTP );
297 urlBuf.append( request.getContextPath( ) );
298 urlBuf.append( LutecePlutoConstant.URL_JSR168_ACTION );
299
300 String params = PortalURL.buildParams( portletID, false, mode, state, Collections.EMPTY_MAP );
301
302 if ( ( params != null ) && ( params.length( ) > 0 ) )
303 {
304 urlBuf.append( params );
305 }
306
307
308
309
310
311
312 String pageIdParam = request.getParameter( Parameters.PAGE_ID );
313
314 if ( pageIdParam != null )
315 {
316 urlBuf.append( '&' );
317 urlBuf.append( Parameters.PAGE_ID );
318 urlBuf.append( '=' );
319 urlBuf.append( pageIdParam );
320 }
321
322 return response.encodeURL( urlBuf.toString( ) );
323 }
324 }