Test method invocation with super classes
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 10 Jun 2010 20:09:47 +0000 (20:09 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 10 Jun 2010 20:09:47 +0000 (20:09 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@953438 13f79535-47bb-0310-9956-ffa450edef68

test/org/apache/el/TestMethodExpressionImpl.java
test/org/apache/el/TesterBeanC.java [new file with mode: 0644]

index 81b4335..0bbedf2 100644 (file)
@@ -69,10 +69,37 @@ public class TestMethodExpressionImpl extends TestCase {
 
         assertEquals("Tomcat", me1.invoke(context, null));
         assertEquals("Hello JUnit from Tomcat", me2.invoke(context, null));
-        assertEquals("Hello JUnit from Tomcat", me2.invoke(context, new Object[] { "JUnit2" }));
-        assertEquals("Hello JUnit2 from Tomcat", me3.invoke(context, new Object[] { "JUnit2" }));
-        assertEquals("Hello JUnit from Tomcat", me2.invoke(context, new Object[] { null }));
-        assertEquals("Hello null from Tomcat", me3.invoke(context, new Object[] { null }));
+        assertEquals("Hello JUnit from Tomcat",
+                me2.invoke(context, new Object[] { "JUnit2" }));
+        assertEquals("Hello JUnit2 from Tomcat",
+                me3.invoke(context, new Object[] { "JUnit2" }));
+        assertEquals("Hello JUnit from Tomcat",
+                me2.invoke(context, new Object[] { null }));
+        assertEquals("Hello null from Tomcat",
+                me3.invoke(context, new Object[] { null }));
     }
 
+    public void testInvokeWithSuper() {
+        ExpressionFactory factory = ExpressionFactory.newInstance();
+        ELContext context = new ELContextImpl();
+
+        TesterBeanA beanA = new TesterBeanA();
+        ValueExpression varA =
+            factory.createValueExpression(beanA, TesterBeanA.class);
+        context.getVariableMapper().setVariable("beanA", varA);
+        
+        TesterBeanC beanC = new TesterBeanC();        
+        beanC.setName("Tomcat");
+        ValueExpression varC =
+            factory.createValueExpression(beanC, TesterBeanC.class);
+        context.getVariableMapper().setVariable("beanC", varC);
+        
+        MethodExpression me1 = factory.createMethodExpression(context,
+                "${beanA.setBean(beanC)}", null ,
+                new Class<?>[] { TesterBeanB.class });
+        
+        me1.invoke(context, null);
+        
+        assertEquals(beanA.getBean(), beanC);
+    }
 }
diff --git a/test/org/apache/el/TesterBeanC.java b/test/org/apache/el/TesterBeanC.java
new file mode 100644 (file)
index 0000000..061f478
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.el;
+
+public class TesterBeanC extends TesterBeanB {
+
+    private String extra;
+
+    public String getExtra() {
+        return extra;
+    }
+
+    public void setExtra(String extra) {
+        this.extra = extra;
+    }
+}