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