sunlabs.brazil.beanshell
Class BeanShellServerTemplate

java.lang.Object
  extended by sunlabs.brazil.template.Template
      extended by sunlabs.brazil.beanshell.BeanShellServerTemplate (view source)
All Implemented Interfaces:
TemplateInterface
Direct Known Subclasses:
BeanShellTemplate

public class BeanShellServerTemplate
extends Template

The BeanShellServerTemplate looks for one of the starting tags <server language="beanshell">, <beanshell>, or <bsh> in an HTML page and treats the following data up to the corresponding ending tag ( </server>, </beanshell>, or </bsh>) as a BeanShell script to evaluate. For information on BeanShell, see www.beanshell.org.

The reason that BeanShell scripts are included in an HTML page is usually to generate dynamic, server-side content. After running this template, everything between and including the starting tag and and the ending tag is replaced by all output written to the BeanShell output stream (if any).

All BeanShell fragments within a given page are evaluated in the same BeanShell interpreter. The BeanShell interpreter actually lives for the entire duration of this Template object, so the user can implement persistence across requests.

The following configuration parameters are used to initialize this template.

script
The name of the BeanShell script to evaluate when the interpreter is created. This script is only evaluated when the interpreter is created, not on every request. The variables prefix and server are set before this file is evaluated, and are references to the parameters passed to a handler init method.
root
The document root, if the script is a relative file name. If the "root" property under the template prefix is not found, the global "root" property is used. If the global "root" property is not found, the current directory is used.
debug
If this configuration parameter is present, this class replaces the starting and ending tags with comments, so the user can keep track of where the dynamically generated content is coming from by examining the comments in the resultant HTML document. By default, the starting and ending tags are completely eliminated from the HTML document rather than changed into comments.

Before evaluating each HTML document, this class sets variables in the BeanShell interpreter, which can be used to interact back with Java to do things like set the response headers:

request
Exposes the Request Java object. It is set anew at each request.
prefix
Exposes the handler prefix String.
server
Exposes the handler Server object.
If the attribute eval is present as an attribute, all constructs off the form ${...} are substituted before processing the script.

Here's a simple example of a BeanShell template:


 <html>
 <head>
 <title>BeanShell Examples</title>
 </head>
 <body>
 The global variables <code>request</code>,
 <code>prefix</code>, and <code>server</code>
 are already defined.  Here's how to add a new property:
 <bsh>
 sum = 3 + 4 + 5;
 request.props.put("sum", Integer.toString(sum));
 </bsh>
 And here's a way to list the properties contained in the request:
 <table>
 <bsh>
 e = request.props.propertyNames();
 while (e.hasMoreElements()) {
   name = e.nextElement();
   value = request.props.getProperty(name);
   print("<tr><td>" + name + "</td><td>" 
         + value + "</td></tr>");
 }
 </bsh>
 </table>
 </body>
 </html>
 


Field Summary
 
Fields inherited from class sunlabs.brazil.template.Template
debug
 
Constructor Summary
BeanShellServerTemplate()
           
 
Method Summary
 boolean init(RewriteContext hr)
          Called at the beginning of each HTML document that this BeanShellServerTemplate is asked to process.
 void tag_beanshell(RewriteContext hr)
          Processes the <beanshell> tag.
 void tag_bsh(RewriteContext hr)
          Processes the <bsh> tag.
 void tag_server(RewriteContext hr)
          Processes the <server> tag.
 
Methods inherited from class sunlabs.brazil.template.Template
done
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BeanShellServerTemplate

public BeanShellServerTemplate()
Method Detail

init

public boolean init(RewriteContext hr)
Called at the beginning of each HTML document that this BeanShellServerTemplate is asked to process.

The first time this method is called, the initialization script is sourced into the interpreter, based on the configuration properties in the Request

Specified by:
init in interface TemplateInterface
Overrides:
init in class Template
Parameters:
hr - The request and associated HTML document that will be processed.
Returns:
true interpreter was successfully initialized false otherwise. About the only way that the initialization could fail would be due to an error sourcing the initialization script. If false is returned, an error message is logged.

tag_server

public void tag_server(RewriteContext hr)
Processes the <server> tag. Substitutes the result of evaluating the following BeanShell script into the resultant HTML document.

Parameters:
hr - The request and associated HTML document that will be processed.

tag_beanshell

public void tag_beanshell(RewriteContext hr)
Processes the <beanshell> tag. Substitutes the result of evaluating the following BeanShell script into the resultant HTML document.

Parameters:
hr - The request and associated HTML document that will be processed.

tag_bsh

public void tag_bsh(RewriteContext hr)
Processes the <bsh> tag. Substitutes the result of evaluating the following BeanShell script into the resultant HTML document.

Parameters:
hr - The request and associated HTML document that will be processed.

Version Kenai-svn-r24, Generated 08/18/09
Copyright (c) 2001-2009, Sun Microsystems.