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 * A resource handler that uses Jelly scripts to provide resources
25 * to a context in a Jetty http server
26 *
27 * @author rtl
28 * @version $Id: JellyResourceHandlerTag.java 155420 2005-02-26 13:06:03Z dirkv $
29 */
30 public class JellyResourceHandlerTag extends TagSupport {
31
32 /*** The http handler that calls the body of the tag. */
33 private JellyResourceHttpHandler _jellyResourceHttpHandler;
34
35 /*** Creates a new instance of JellyResourceHandlerTag */
36 public JellyResourceHandlerTag() {
37 }
38
39 /***
40 * Perform the tag functionality. In this case, add an http handler
41 * to the parent context that runs the script in the body of this tag
42 *
43 * @param xmlOutput where to send output
44 * @throws Exception when an error occurs
45 */
46 public void doTag(XMLOutput xmlOutput) throws JellyTagException {
47 HttpContextTag httpContext = (HttpContextTag) findAncestorWithClass(
48 HttpContextTag.class);
49 if ( httpContext == null ) {
50 throw new JellyTagException( "<jellyResourceHandler> tag must be enclosed inside a <httpContext> tag" );
51 }
52
53 _jellyResourceHttpHandler =
54 new JellyResourceHttpHandler(xmlOutput);
55
56 httpContext.addHandler(_jellyResourceHttpHandler);
57
58
59 invokeBody(xmlOutput);
60 }
61
62
63
64
65
66 protected JellyResourceHttpHandler getJellyResourceHttpHandler() {
67 return _jellyResourceHttpHandler;
68 }
69
70 }