commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@codehaus.org
Subject [jira] Created: (JELLY-74) Scope inheritence is not being obeyed
Date Fri, 22 Aug 2003 14:36:15 GMT
Message:

  A new issue has been created in JIRA.

---------------------------------------------------------------------
View the issue:

  http://jira.codehaus.org/secure/ViewIssue.jspa?key=JELLY-74


Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JELLY-74
    Summary: Scope inheritence is not being obeyed
       Type: Bug

     Status: Unassigned
   Priority: Major

 Time Spent: Unknown
  Remaining: Unknown

    Project: jelly

   Assignee: 
   Reporter: Scott Howlett

    Created: Fri, 22 Aug 2003 9:35 AM
    Updated: Fri, 22 Aug 2003 9:35 AM

Description:
Given these scripts:

foo.jelly:

<?xml version="1.0"?>
<j:jelly xmlns:j="jelly:core">
    <j:set var="test" value="goofy"/>
    <j:import inherit="false" uri="bar.jelly"/>
</j:jelly>

bar.jelly:

<j:jelly xmlns:j="jelly:core">
    ${test}
</j:jelly>

When I execute foo.jelly, the expression in bar.jelly finds the value of test even though
inheritence is false.

This is because the JellyMap inside the JexlExpression gets variables like this:

    public Object get(Object key) {
        return context.findVariable( (String) key );
    }

where findVariable will find the variable in any enclosing scope regardless of inheritence.

The fix ought to be to change it to use getVariable(). Unfortunately, JellyContext.getVariable()
itself doesn't obey scope inheritence:

    public Object getVariable(String name) {
        Object value = variables.get(name);

        if ( value == null && isInherit() ) {
            JellyContext parent = getParent();
            if (parent != null) {                
                value = parent.findVariable( name );
            }
        }

        return value;
    }

The context obeys its own inheritence rule but ignores any inheritence rule set by its parent.
The fix for this would be to change parentfindVariable(...) to parent.getVariable(...)



---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://jira.codehaus.org/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


Mime
View raw message