/*
* BeanShellTemplate.java
*
* Brazil project web application toolkit,
* export version: 2.3
* Copyright (c) 2002-2004 Sun Microsystems, Inc.
*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License Version
* 1.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is included as the file "license.terms",
* and also available at http://www.sun.com/
*
* The Original Code is from:
* Brazil project web application toolkit release 2.3.
* The Initial Developer of the Original Code is: suhler.
* Portions created by suhler are Copyright (C) Sun Microsystems, Inc.
* All Rights Reserved.
*
* Contributor(s): suhler.
*
* Version: 1.4
* Created by suhler on 02/11/14
* Last modified by suhler on 04/11/30 15:19:38
*
* Version Histories:
*
* 1.4 04/11/30-15:19:38 (suhler)
* fixed sccs version string
*
* 1.3 04/04/07-10:23:54 (suhler)
* doc fixes
*
* 1.2 03/07/15-09:13:23 (suhler)
* doc fixes for pdf version of the manual
*
* 1.2 02/11/14-14:49:36 (Codemgr)
* SunPro Code Manager data about conflicts, renames, etc...
* Name history : 1 0 beanshell/BeanShellTemplate.java
*
* 1.1 02/11/14-14:49:35 (suhler)
* date and time created 02/11/14 14:49:35 by suhler
*
*/
package sunlabs.brazil.beanshell;
import sunlabs.brazil.template.RewriteContext;
import sunlabs.brazil.template.Template;
import sunlabs.brazil.server.Server;
import bsh.EvalError;
import bsh.Interpreter;
import java.util.Properties;
/**
* Template to define new templates in beanshell, and use them later on in
* the current session (or page).
* This adds to the capability of the template in the following way:
*
The variable "tagMap", a Properties object, may be used to associate
* bsh code with a tag.
*
* tagMap.put("mytag","do_mytag();"); ** will cause the method
do_mytag()
to be called in response to:
* <mytag...>. The variable "rewriteContext" will be available
* to access the attributes of the tag.
*
* @author Stephen Uhler
* @version 1.4
*/
public class BeanShellTemplate extends BeanShellServerTemplate {
public Properties tagMap; // where to keep tag to code mappings
/**
* When we set up the interp, make th "tagMap" visible
*/
protected boolean
setup(RewriteContext hr) {
boolean first = (bsh == null);
boolean ok = super.setup(hr);
if (ok && first) {
tagMap = new Properties();
try {
bsh.set("tagMap", tagMap);
} catch (EvalError e) {
hr.request.log(Server.LOG_ERROR, "initializing BeanShell",
e.toString());
return false;
}
}
return ok;
}
/**
* if a mapping exists for this tag, run the code
*/
public void
defaultTag(RewriteContext hr) {
if (!setup(hr)) {
debug(hr, "Interpreter didn't initialize");
return;
}
System.out.println("Map: " + tagMap);
String tag = hr.getTag();
String script = tagMap.getProperty(tag);
if (script != null) {
try {
bsh.set("rewriteContext", hr);
bsh.eval(script);
} catch (EvalError e) {
hr.append("\n\n");
hr.request.log(Server.LOG_DIAGNOSTIC, hr.prefix, e.toString());
}
}
}
}