01: /*
02: JSPWiki - a JSP-based WikiWiki clone.
03:
04: Copyright (C) 2001-2005 Janne Jalkanen (Janne.Jalkanen@iki.fi)
05:
06: This program is free software; you can redistribute it and/or modify
07: it under the terms of the GNU Lesser General Public License as published by
08: the Free Software Foundation; either version 2.1 of the License, or
09: (at your option) any later version.
10:
11: This program is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public License
17: along with this program; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20: package com.ecyrd.jspwiki.url;
21:
22: import java.util.Properties;
23: import java.io.IOException;
24: import javax.servlet.http.HttpServletRequest;
25:
26: import com.ecyrd.jspwiki.WikiEngine;
27:
28: /**
29: * Provides an interface through which JSPWiki constructs URLs.
30: * JSPWiki calls the methods of this interface whenever an URL
31: * that points to any JSPWiki internals is required. For example,
32: * if you need to find an URL to the editor page for page "TextFormattingRules",
33: * you would call makeURL( WikiContext.EDIT, "TextFormattingRules", false, null );
34: *
35: * @author Janne Jalkanen
36: * @since 2.2
37: */
38: public interface URLConstructor {
39: /**
40: * Initializes. Note that the engine is not fully initialized
41: * at this point, so don't do anything fancy here - use lazy
42: * init, if you have to.
43: *
44: * @param engine The WikiEngine that this URLConstructor belongs to
45: * @param properties Properties used to initialize
46: */
47: public void initialize(WikiEngine engine, Properties properties);
48:
49: /**
50: * Constructs the URL with a bunch of parameters.
51: *
52: * @param context The request context (@see WikiContext) that you want the URL for
53: * @param name The page name (or in case of WikiContext.NONE, the auxiliary JSP page
54: * or resource you want to point at. This must be URL encoded. Null is NOT safe.
55: * @param absolute True, if you need an absolute URL. False, if both relative and absolute
56: * URLs are fine.
57: * @param parameters An URL parameter string (these must be URL-encoded, and separated with &)
58: * @return An URL pointing to the resource. Must never return null - throw an InternalWikiException
59: * if something goes wrong.
60: */
61: public String makeURL(String context, String name,
62: boolean absolute, String parameters);
63:
64: /**
65: * Should parse the "page" parameter from the actual
66: * request. This is essentially the reverse of makeURL() - whenever a request
67: * constructed by calls to makeURL() is passed to this routine, it MUST be
68: * able to parse the resource name (WikiPage, Attachment, other resource) from
69: * the request.
70: *
71: * @param context In which request context the request was made (this should
72: * help in parsing)
73: * @param request The HTTP request that was used when coming here
74: * @param encoding The encoding with which the request was made (UTF-8 or ISO-8859-1).
75: * @return This method must return the name of the resource.
76: * @throws IOException If parsing failes
77: */
78: public String parsePage(String context, HttpServletRequest request,
79: String encoding) throws IOException;
80:
81: /**
82: * Returns information which JSP page should continue handling
83: * this type of request.
84: *
85: * @param request The HTTP Request that was used to end up in this page.
86: * @return "Wiki.jsp", "PageInfo.jsp", etc. Just return the name,
87: * JSPWiki will figure out the page.
88: */
89: public String getForwardPage(HttpServletRequest request);
90: }
|