KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > engine > RestartService


1 // Copyright 2004, 2005 The Apache Software Foundation
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15 package org.apache.tapestry.engine;
16
17 import java.io.IOException JavaDoc;
18 import java.util.HashMap JavaDoc;
19 import java.util.Map JavaDoc;
20
21 import javax.servlet.http.HttpServletRequest JavaDoc;
22 import javax.servlet.http.HttpServletResponse JavaDoc;
23 import javax.servlet.http.HttpSession JavaDoc;
24
25 import org.apache.commons.logging.Log;
26 import org.apache.tapestry.IRequestCycle;
27 import org.apache.tapestry.Tapestry;
28 import org.apache.tapestry.services.AbsoluteURLBuilder;
29 import org.apache.tapestry.services.LinkFactory;
30 import org.apache.tapestry.services.ServiceConstants;
31
32 /**
33  * Restarts the Tapestry application. This is normally reserved for dealing with catastrophic
34  * failures of the application. Discards the {@link javax.servlet.http.HttpSession}, if any, and
35  * redirects to the Tapestry application servlet URL (invoking the {@link HomeService}).
36  *
37  * @author Howard Lewis Ship
38  * @since 1.0.9
39  */

40
41 public class RestartService implements IEngineService
42 {
43     /** @since 4.0 */
44     private Log _log;
45
46     /** @since 4.0 */
47     private HttpServletRequest JavaDoc _request;
48
49     /** @since 4.0 */
50     private HttpServletResponse JavaDoc _response;
51
52     /** @since 4.0 */
53     private AbsoluteURLBuilder _builder;
54
55     /** @since 4.0 */
56     private LinkFactory _linkFactory;
57
58     /** @since 4.0 */
59     private String JavaDoc _servletPath;
60
61     public ILink getLink(IRequestCycle cycle, Object JavaDoc parameter)
62     {
63         if (parameter != null)
64             throw new IllegalArgumentException JavaDoc(EngineMessages.serviceNoParameter(this));
65
66         Map JavaDoc parameters = new HashMap JavaDoc();
67
68         parameters.put(ServiceConstants.SERVICE, Tapestry.RESTART_SERVICE);
69
70         return _linkFactory.constructLink(cycle, parameters, true);
71     }
72
73     public void service(IRequestCycle cycle) throws IOException JavaDoc
74     {
75         HttpSession JavaDoc session = _request.getSession();
76
77         if (session != null)
78         {
79             try
80             {
81                 session.invalidate();
82             }
83             catch (IllegalStateException JavaDoc ex)
84             {
85                 _log.warn("Exception thrown invalidating HttpSession.", ex);
86
87                 // Otherwise, ignore it.
88
}
89         }
90
91         String JavaDoc url = _builder.constructURL(cycle.getAbsoluteURL(_servletPath));
92
93         _response.sendRedirect(url);
94     }
95
96     public String JavaDoc getName()
97     {
98         return Tapestry.RESTART_SERVICE;
99     }
100
101     /** @since 4.0 */
102     public void setLog(Log log)
103     {
104         _log = log;
105     }
106
107     /** @since 4.0 */
108     public void setRequest(HttpServletRequest JavaDoc request)
109     {
110         _request = request;
111     }
112
113     /** @since 4.0 */
114     public void setBuilder(AbsoluteURLBuilder builder)
115     {
116         _builder = builder;
117     }
118
119     /** @since 4.0 */
120     public void setResponse(HttpServletResponse JavaDoc response)
121     {
122         _response = response;
123     }
124
125     /** @since 4.0 */
126     public void setLinkFactory(LinkFactory linkFactory)
127     {
128         _linkFactory = linkFactory;
129     }
130
131     /** @since 4.0 */
132     public void setServletPath(String JavaDoc servletPath)
133     {
134         _servletPath = servletPath;
135     }
136 }
Popular Tags