ovidiu 02/02/12 17:47:51 Added: src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap SchemeEnvironmentFunctions.java Log: Added. Defines primitives for operating on the environment, request and others. Revision Changes Path 1.1 xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/scheme/sitemap/SchemeEnvironmentFunctions.java Index: SchemeEnvironmentFunctions.java =================================================================== package org.apache.cocoon.scheme.sitemap; import java.util.Map; import org.apache.cocoon.Constants; import org.apache.cocoon.environment.Environment; import org.apache.cocoon.environment.Request; import sisc.ContinuationException; import sisc.Interpreter; import sisc.ModuleAdapter; import sisc.data.ImmutableString; import sisc.data.Value; /** * Some environment manipulation functions. * * @author <a href="mailto:[EMAIL PROTECTED]">Ovidiu Predescu</a> * @since February 11, 2002 */ public class SchemeEnvironmentFunctions extends CocoonModule { public String getModuleName() { return "Schecoon Environment manipulation"; } public float getModuleVersion() { return 1.0f; } public static final int ENV_SET_ATTR = 1, ENV_GET_ATTR = 2, REQ_GET_PARAM = 3; public SchemeEnvironmentFunctions() { define("environ:set-attr", ENV_SET_ATTR); define("environ:get-attr", ENV_GET_ATTR); define("request:get-param", REQ_GET_PARAM); } /** * The SISC evaluator function for this module. Executes the actual * Java code corresponding to the Scheme functions defined by the * module. * * @param primid an <code>int</code> value * @param r an <code>Interpreter</code> value * @return a <code>Value</code> value * @exception ContinuationException if an error occurs */ public Value eval(int primid, Interpreter r) throws ContinuationException { switch (r.vlr.length) { // Two argument functions case 2: switch (primid) { case ENV_GET_ATTR: return getEnvironmentAttribute(r.vlr[0], r.vlr[1]); case REQ_GET_PARAM: return getRequestParameter(r.vlr[0], r.vlr[1]); } // Three argument functions case 3: switch (primid) { case ENV_SET_ATTR: return setEnvironmentAttribute(r.vlr[0], r.vlr[1], r.vlr[2]); } } throw new RuntimeException("Invalid number of arguments to function " + r.acc + ", got " + r.vlr.length); } public Value setEnvironmentAttribute(Value senv, Value sattrName, Value svalue) { Environment environment = environment(senv); String attrName = string(sattrName); environment.setAttribute(attrName, svalue); return svalue; } public Value getEnvironmentAttribute(Value senv, Value sattrName) { Environment environment = environment(senv); String attrName = string(sattrName); return (Value)environment.getAttribute(attrName); } public Value getRequestParameter(Value senv, Value sparamName) { Environment environment = environment(senv); String paramName = string(sparamName); Map objectModel = environment.getObjectModel(); Request request = (Request)objectModel.get(Constants.REQUEST_OBJECT); String value = request.getParameter(paramName); return new ImmutableString(value); } }
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]