1 /*
2 * $Id: UrlController.java 54929 2004-10-16 16:38:42Z germuska $
3 *
4 * Copyright 1999-2004 The Apache Software Foundation.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19 package org.apache.struts.tiles;
20
21 import java.io.IOException;
22
23 import javax.servlet.RequestDispatcher;
24 import javax.servlet.ServletContext;
25 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 /**
30 * Tiles controller including a local URL.
31 */
32 public class UrlController implements Controller {
33
34 /**
35 * URL associated with this controller.
36 */
37 protected String url = null;
38
39 /**
40 * Constructor.
41 * @param url URL.
42 */
43 public UrlController(String url) {
44 this.url = url;
45 }
46
47 /**
48 * Method associated to a tile and called immediately before the tile
49 * is included. This implementation calls an <code>Action</code>.
50 * No servlet is set by this method.
51 *
52 * @param tileContext Current tile context.
53 * @param request Current request.
54 * @param response Current response.
55 * @param servletContext Current servlet context.
56 */
57 public void perform(
58 ComponentContext tileContext,
59 HttpServletRequest request,
60 HttpServletResponse response,
61 ServletContext servletContext)
62 throws ServletException, IOException {
63
64 RequestDispatcher rd = servletContext.getRequestDispatcher(url);
65 if (rd == null) {
66 throw new ServletException(
67 "Controller can't find url '" + url + "'.");
68 }
69
70 rd.include(request, response);
71 }
72
73 /**
74 * @see org.apache.struts.tiles.Controller#execute(org.apache.struts.tiles.ComponentContext, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.ServletContext)
75 */
76 public void execute(
77 ComponentContext tileContext,
78 HttpServletRequest request,
79 HttpServletResponse response,
80 ServletContext servletContext)
81 throws Exception {
82
83 RequestDispatcher rd = servletContext.getRequestDispatcher(url);
84 if (rd == null) {
85 throw new ServletException(
86 "Controller can't find url '" + url + "'.");
87 }
88
89 rd.include(request, response);
90
91 }
92
93 }