Hello again.
I think that I've found the problem. It's how the variable is initialized in the
ActioHandler:
if (!ci.hasVariable(varName, executionContext.getToken())) {
| ci.setVariable(varName, new Integer(0), executionContext.getToken());
| }
ContextInstance.setVariable(String name, Object value, Token token) resolves the
TokenVariableMap using getOrCreateTokenVariableMap, that delegates on the parent Token
when the var doesn't exist on the current token:
// if the given token has a variable map
| TokenVariableMap tokenVariableMap = null;
| if ( (tokenVariableMaps!=null)
| && (tokenVariableMaps.containsKey(token))
| ) {
| tokenVariableMap = (TokenVariableMap) tokenVariableMaps.get(token);
|
| } else if (!token.isRoot()) {
| tokenVariableMap = getOrCreateTokenVariableMap(token.getParent());
|
| } else {
| tokenVariableMap = createTokenVariableMap(token);
| }
|
So, the only way to force a variable to be created in the current Token is to use the
function:
public void createVariable(String name, Object value, Token token)
that uses createTokenVariableMap(Token token) to do the work.
So, using ContextInstance.setVariable(String name, Object value, Token token) is always
delegating into the parent context when the variable name doesn't exist in the current
Token tokenVariableMap.
I find this a little confusing. Is it the expected behaviour?
Regards.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3969439#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...