--- java/org/apache/el/lang/ELSupport.java (revision 1633767) +++ java/org/apache/el/lang/ELSupport.java (working copy) @@ -480,7 +480,7 @@ } // Handle arrays - if (type.isArray()) { + if (obj.getClass().isArray() && type.isArray()) { return coerceToArray(obj, type); } --- test/javax/el/TesterBean.java (revision 1633767) +++ test/javax/el/TesterBean.java (working copy) @@ -40,4 +40,12 @@ public String getValueA() throws Exception { throw new Exception(); } + + public String setValueInt(Integer value) { + return "Invoke setValueInt(Integer value) with :" + value; + } + + public String setValueInt(int value) throws Exception { + return "Invoke setValueInt(int value) with :" + value; + } } --- test/javax/el/TestUtil.java (revision 1633767) +++ test/javax/el/TestUtil.java (working copy) @@ -41,9 +41,17 @@ @Test - public void testBug56425() { + public void testBug56425a() { ELProcessor processor = new ELProcessor(); processor.defineBean("string", "a-b-c-d"); Assert.assertEquals("a_b_c_d", processor.eval("string.replace(\"-\",\"_\")")); + Assert.assertEquals("5", processor.eval("string.valueOf(5)")); } + + @Test + public void testBug56425b() { + ELProcessor processor = new ELProcessor(); + processor.defineBean("test", new TesterBean("test")); + Assert.assertEquals("Invoke setValueInt(int value) with :5", processor.eval("test.setValueInt(5)")); + } }