ovidiu 02/03/15 15:35:19
Modified: src/scratchpad/schecoon/src/org/apache/cocoon/components/flow
Interpreter.java
Log:
Use a list for passing arguments instead of a dictionary.
Revision Changes Path
1.3 +47 -12
xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/Interpreter.java
Index: Interpreter.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/Interpreter.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Interpreter.java 14 Mar 2002 20:23:38 -0000 1.2
+++ Interpreter.java 15 Mar 2002 23:35:19 -0000 1.3
@@ -2,7 +2,7 @@
import java.io.InputStream;
import java.util.HashMap;
-import org.apache.avalon.framework.parameters.Parameters;
+import java.util.List;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.components.treeprocessor.InvokeContext;
import org.apache.cocoon.environment.Environment;
@@ -70,14 +70,33 @@
*/
public interface Interpreter
{
+ public static class Argument
+ {
+ public String name;
+ public String value;
+
+ public Argument(String name, String value)
+ {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String toString()
+ {
+ return name + ": " + value;
+ }
+ }
+
public static String ROLE = "org.apache.cocoon.components.flow.Interpreter";
/**
- * Load a script from Reader.
+ * Load a script given its location.
*
- * @param in a <code>Reader</code> value
+ * @param in a <code>String</code> value, representing the location
+ * of the script.
+ * @exception Exception if an error occurs
*/
- void readScript(InputStream in)
+ void readScript(String source)
throws Exception;
/**
@@ -89,23 +108,39 @@
*
* The method will execute the named function, which must be defined
* in the given language. There is no assumption made on how various
- * arguments are passed to the function. A particular language
- * implementation may decide to put the environment, request,
- * response etc. objects in the dynamic scope available to the
- * function at the time of the call. Other implementations may
- * decide to pass these as arguments to the called function.
+ * arguments are passed to the function.
+ *
+ * <p>The <code>params</code> argument is a <code>List</code> object
+ * that contains <code>Interpreter.Argument</code> instances,
+ * representing the parameters to be passed to the called
+ * function. An <code>Argument</code> instance is a key-value pair,
+ * where the key is the name of the parameter, and the value is its
+ * desired value. Most languages will ignore the name value and
+ * simply pass to the function, in a positional order, the values of
+ * the argument. Some languages however can pass the arguments in a
+ * different order than the original prototype of the function. For
+ * these languages the ability to associate the actual argument with
+ * a formal parameter using its name is essential.
+ *
+ * <p>A particular language implementation may decide to put the
+ * environment, request, response etc. objects in the dynamic scope
+ * available to the function at the time of the call. Other
+ * implementations may decide to pass these as arguments to the
+ * called function.
*
* <p>The current implementation assumes the sitemap implementation
* is TreeProcessor.
*
* @param funName a <code>String</code> value, the name of the
* function to call
- * @param params a <code>Parameters</code> value, parameters to pass
- * to the function. The interpretation of the parameters is left
+ * @param params a <code>List</code> object whose components are
+ * CallFunctionNode.Argument instances. The interpretation of the
+ * parameters is left to the actual implementation of the
+ * interpreter.
* @param env an <code>Environment</code> value
* @param ctx an <code>InvokeContext</code> value
*/
- void callFunction(String funName, Parameters params,
+ void callFunction(String funName, List params,
Environment env, InvokeContext ctx)
throws Exception;
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]