History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: OGNL-126
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Critical Critical
Assignee: Jesse Kuhnert
Reporter: Vladimir A. Balandin
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
OGNL

Don't call setter properly

Created: 28/Sep/07 06:13 AM   Updated: 03/Nov/07 04:24 PM
Component/s: PropertyAccessors, Core Runtime
Affects Version/s: None
Fix Version/s: 2.7.2

Issue Links:
Duplicate
This issue duplicates:
OGNL-80 CastCastException when setting proper... Major Resolved
 


 Description  « Hide
import ognl.Ognl;
import ognl.OgnlContext;
import com.opensymphony.xwork2.util.OgnlValueStack;

import java.io.Serializable;

public class OGNLDebug {
    public static void main(String[] argv) {
        Result result = new Result();
        OgnlValueStack stack = new OgnlValueStack();
        stack.push(result);
        stack.setValue("example.param", "0");
        stack.setValue("brokenExample.param", "0");

        System.out.println("example.param: " + result.getExample().getParam() );
        System.out.println("brokenExample.param: " + result.getBrokenExample().getParam() );
    }
}

class Result {
    private Example example = new Example();

    private BrokenExample brokenExample = new BrokenExample();

    public Result() {
    }

    public Example getExample() {
        return example;
    }

    public void setExample(Example example) {
        this.example = example;
    }

    public BrokenExample getBrokenExample() {
        return brokenExample;
    }

    public void setBrokenExample(BrokenExample brokenExample) {
        this.brokenExample = brokenExample;
    }
}

class Example {
    private Integer param;

    public Integer getParam() {
        return param;
    }

    public void setParam(Integer param) {
        this.param = param;
    }
}

interface Cracker<T extends Serializable>{
    T getParam();
    void setParam(T param);
}

class BrokenExample implements Cracker<Integer>{
    private Integer param;

    public Integer getParam() {
        return param;
    }

    public void setParam(Integer param) {
        this.param = param;
    }
}


Expected result
example.param: 0
brokenExample.param: 0

Actual result:
example.param: 0
brokenExample.param : null

 All   Comments   Change History      Sort Order:
Jesse Kuhnert - [03/Nov/07 04:23 PM ]
Only available as a snapshot build until released. (http://opencomponentry.com/repository/m2-snapshot-repo/)