1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jelly.tags.jetty;
18
19 import org.apache.commons.jelly.JellyTagException;
20 import org.apache.commons.jelly.TagSupport;
21 import org.apache.commons.jelly.XMLOutput;
22
23 /***
24 * An abstract base tag to declare a handler for a particular request method
25 * in an http context in an http server
26 *
27 * @author rtl
28 * @version $Id: AbstractMethodHandlerTag.java 155420 2005-02-26 13:06:03Z dirkv $
29 */
30 abstract public class AbstractMethodHandlerTag extends TagSupport {
31
32 /*** Override this to return the name of the http method handled by this tag */
33 abstract public String getMethodHandled();
34
35 /***
36 * Perform the tag functionality. In this case, add a http method handler
37 * to the parent that invokes the script in the body of this tag when
38 * processing an http request
39 *
40 * @param xmlOutput where to send output
41 * @throws Exception when an error occurs
42 */
43 public void doTag(XMLOutput xmlOutput) throws JellyTagException {
44 JellyResourceHandlerTag parentTag =
45 (JellyResourceHandlerTag) findAncestorWithClass(
46 JellyResourceHandlerTag.class);
47
48 if ( parentTag == null ) {
49 throw new JellyTagException( "<" + getMethodHandled().toLowerCase() +
50 "Request> tag must be enclosed inside a <jellyResourceHandler> tag" );
51 }
52
53
54 parentTag.getJellyResourceHttpHandler().registerTag(this, getMethodHandled());
55
56
57 }
58
59 }
60