%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.jetspeed.container.ContainerValve |
|
|
1 | /* |
|
2 | * Licensed to the Apache Software Foundation (ASF) under one or more |
|
3 | * contributor license agreements. See the NOTICE file distributed with |
|
4 | * this work for additional information regarding copyright ownership. |
|
5 | * The ASF licenses this file to You under the Apache License, Version 2.0 |
|
6 | * (the "License"); you may not use this file except in compliance with |
|
7 | * the License. You may obtain a copy of the License at |
|
8 | * |
|
9 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
10 | * |
|
11 | * Unless required by applicable law or agreed to in writing, software |
|
12 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
14 | * See the License for the specific language governing permissions and |
|
15 | * limitations under the License. |
|
16 | */ |
|
17 | package org.apache.jetspeed.container; |
|
18 | ||
19 | import javax.servlet.http.HttpServletResponse; |
|
20 | ||
21 | import org.apache.jetspeed.request.RequestContext; |
|
22 | import org.apache.jetspeed.container.state.MutableNavigationalState; |
|
23 | import org.apache.jetspeed.om.page.Page; |
|
24 | import org.apache.jetspeed.pipeline.PipelineException; |
|
25 | import org.apache.jetspeed.pipeline.valve.AbstractValve; |
|
26 | import org.apache.jetspeed.pipeline.valve.ValveContext; |
|
27 | import org.apache.pluto.om.window.PortletWindow; |
|
28 | ||
29 | /** |
|
30 | * Determines the action window in the current request If no action was found, |
|
31 | * sets the request context's action window to null denoting that there is no |
|
32 | * targeted action for this request otherwise the target action window is set |
|
33 | * here |
|
34 | * |
|
35 | * @author <a href="mailto:david@bluesunrise.com">David Sean Taylor</a> |
|
36 | * @version $Id: ContainerValve.java 554926 2007-07-10 13:12:26Z ate $ |
|
37 | */ |
|
38 | 0 | public class ContainerValve extends AbstractValve |
39 | { |
|
40 | public void invoke(RequestContext request, ValveContext context) throws PipelineException |
|
41 | { |
|
42 | try |
|
43 | { |
|
44 | // create a session if not already created, necessary for Tomcat 5 |
|
45 | 0 | request.getRequest().getSession(true); |
46 | ||
47 | // PortletContainerServices.prepare(); |
|
48 | 0 | MutableNavigationalState state = (MutableNavigationalState)request.getPortalURL().getNavigationalState(); |
49 | 0 | if (state != null) |
50 | { |
|
51 | 0 | boolean redirect = false; |
52 | 0 | Page page = request.getPage(); |
53 | 0 | PortletWindow window = state.getPortletWindowOfResource(); |
54 | 0 | if (window != null && page.getFragmentById(window.getId().toString()) == class="keyword">null) |
55 | { |
|
56 | // target window doesn't exists anymore or the target page is not accessible (anymore) |
|
57 | 0 | request.getResponse().sendError(HttpServletResponse.SC_NOT_FOUND); |
58 | 0 | return; |
59 | } |
|
60 | 0 | window = state.getPortletWindowOfAction(); |
61 | 0 | if (window != null && page.getFragmentById(window.getId().toString()) == class="keyword">null) |
62 | { |
|
63 | // target window doesn't exists anymore or the target page is not accessible (anymore) |
|
64 | // remove any navigational state for the window |
|
65 | 0 | state.removeState(window); |
66 | // as this is an action request which cannot be handled, perform a direct redirect after sync state (for the other windows) |
|
67 | 0 | redirect = true; |
68 | } |
|
69 | 0 | window = state.getMaximizedWindow(); |
70 | 0 | if (window != null && page.getFragmentById(window.getId().toString()) == class="keyword">null) |
71 | { |
|
72 | // target window doesn't exists anymore or the target page is not accessible (anymore) |
|
73 | // remove any navigational state for the window |
|
74 | 0 | state.removeState(window); |
75 | } |
|
76 | 0 | state.sync(request); |
77 | 0 | if (redirect) |
78 | { |
|
79 | // target page doesn't contain (anymore) the targeted windowOfAction |
|
80 | // this can also occur when a session is expired and the target page isn't accessible for the anonymous user |
|
81 | // Redirect the user back to the target page (with possibly retaining the other windows navigational state). |
|
82 | 0 | request.getResponse().sendRedirect(request.getPortalURL().getPortalURL()); |
83 | 0 | return; |
84 | } |
|
85 | ||
86 | 0 | PortletWindow actionWindow = state.getPortletWindowOfAction(); |
87 | 0 | if (null == actionWindow) |
88 | { |
|
89 | // set to null to denote that no action was requested |
|
90 | 0 | request.setActionWindow(null); |
91 | } |
|
92 | else |
|
93 | { |
|
94 | // set the requested action window |
|
95 | 0 | request.setActionWindow(actionWindow); |
96 | } |
|
97 | } |
|
98 | } |
|
99 | 0 | catch (Exception e) |
100 | { |
|
101 | 0 | throw new PipelineException(e); |
102 | 0 | } |
103 | // Pass control to the next Valve in the Pipeline |
|
104 | 0 | context.invokeNext(request); |
105 | 0 | } |
106 | ||
107 | public String toString() |
|
108 | { |
|
109 | 0 | return "ContainerValve"; |
110 | } |
|
111 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |