eclipse-ee4j / expressly

Expressly, a Jakarta Expression Language implementation
Other
10 stars 6 forks source link

Varargs: jakarta.el.MethodNotFoundException #3

Open arjantijms opened 2 years ago

arjantijms commented 2 years ago

I encountered the following exception when testing the code below on Wildfly 24."

Tomcat had updated their varargs handling in BZ 65358, and I'm wondering if this API could have something similar applied?

However, I understand this might also be due to vagueness in the spec? Enum could be coerce to a string? I appreciate any assistance. Thanks!

Caused by: javax.el.MethodNotFoundException: Unable to find unambiguous method: class com.test.TestBean.testMethod(com.test.Level, com.test.Level, com.test.Level)
    at javax.el.ELUtil.findMostSpecificWrapper(ELUtil.java:407)
    at javax.el.ELUtil.findWrapper(ELUtil.java:376)
    at javax.el.ELUtil.findMethod(ELUtil.java:271)
    at javax.el.ELUtil.findMethod(ELUtil.java:230)
    at javax.el.BeanELResolver.invoke(BeanELResolver.java:327)
    at org.apache.jasper.el.JasperELResolver.invoke(JasperELResolver.java:147)
public enum Level {
    LOW   (1);

    private final int levelCode;

    private Level(int levelCode) {
        this.levelCode = levelCode;
    }
}
public class TestBean {

    public Level getLevel() {
        return Level.LOW;
    }

    public String testMethod(Level level1, Level... level2) {
        return "(Level level1, Level... level2)";
    }

    public String testMethod(String param1, Level... level2) {
        return "(String param1, Level... level2)";
    }
}

EL Expression: ${testBean.testMethod(testBean.getLevel(), testBean.getLevel(), testBean.getLevel())}

arjantijms commented 2 years ago

Implementation of https://github.com/jakartaee/expression-language/issues/173