Added skinDepth counter to allow skins to detect recursive skin invocation.
This commit is contained in:
parent
4839b658b5
commit
107dbbea7e
1 changed files with 11 additions and 0 deletions
|
@ -58,6 +58,7 @@ public final class RequestEvaluator implements Runnable {
|
|||
static final int XMLRPC = 2; // via XML-RPC
|
||||
static final int INTERNAL = 3; // generic function call, e.g. by scheduler
|
||||
|
||||
public int skinDepth;
|
||||
|
||||
/**
|
||||
* Create a new RequestEvaluator for this application.
|
||||
|
@ -230,6 +231,9 @@ public final class RequestEvaluator implements Runnable {
|
|||
// set the req.action property, cutting off the _action suffix
|
||||
req.action = action.substring (0, action.length()-7);
|
||||
|
||||
// reset skin recursion detection counter
|
||||
skinDepth = 0;
|
||||
|
||||
// try calling onRequest() function on object before
|
||||
// calling the actual action
|
||||
try {
|
||||
|
@ -240,6 +244,9 @@ public final class RequestEvaluator implements Runnable {
|
|||
// function is not defined or caused an exception, ignore
|
||||
}
|
||||
|
||||
// reset skin recursion detection counter
|
||||
skinDepth = 0;
|
||||
|
||||
// do the actual action invocation
|
||||
scriptingEngine.invoke (currentElement, action, new Object[0], false);
|
||||
|
||||
|
@ -346,6 +353,8 @@ public final class RequestEvaluator implements Runnable {
|
|||
// check XML-RPC access permissions
|
||||
String proto = app.getPrototypeName (currentElement);
|
||||
app.checkXmlRpcAccess (proto, method);
|
||||
// reset skin recursion detection counter
|
||||
skinDepth = 0;
|
||||
|
||||
result = scriptingEngine.invoke (currentElement, method, args, true);
|
||||
commitTransaction ();
|
||||
|
@ -396,6 +405,8 @@ public final class RequestEvaluator implements Runnable {
|
|||
globals.put ("app", app);
|
||||
|
||||
scriptingEngine.enterContext (globals);
|
||||
// reset skin recursion detection counter
|
||||
skinDepth = 0;
|
||||
|
||||
result = scriptingEngine.invoke (thisObject, method, args, false);
|
||||
commitTransaction ();
|
||||
|
|
Loading…
Add table
Reference in a new issue