Author: markt
Date: Mon Jul  8 13:58:50 2013
New Revision: 1500736

URL: http://svn.apache.org/r1500736
Log:
Add a test case for EvaluationListener.propertyResolved() and update the 
various resolvers to call the new ELContext.setPropertyResolved(Object, Object) 
method

Added:
    tomcat/trunk/test/javax/el/TestEvaluationListener.java   (with props)
    tomcat/trunk/test/javax/el/TesterEvaluationListener.java   (with props)
Modified:
    tomcat/trunk/java/javax/el/ArrayELResolver.java
    tomcat/trunk/java/javax/el/BeanELResolver.java
    tomcat/trunk/java/javax/el/BeanNameELResolver.java
    tomcat/trunk/java/javax/el/ListELResolver.java
    tomcat/trunk/java/javax/el/MapELResolver.java
    tomcat/trunk/java/javax/el/ResourceBundleELResolver.java
    tomcat/trunk/java/javax/el/StaticFieldELResolver.java
    tomcat/trunk/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
    tomcat/trunk/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
    tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java
    tomcat/trunk/test/javax/el/TesterELResolverOne.java
    tomcat/trunk/test/javax/el/TesterELResolverTwo.java

Modified: tomcat/trunk/java/javax/el/ArrayELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ArrayELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/ArrayELResolver.java (original)
+++ tomcat/trunk/java/javax/el/ArrayELResolver.java Mon Jul  8 13:58:50 2013
@@ -41,7 +41,7 @@ public class ArrayELResolver extends ELR
         }
 
         if (base != null && base.getClass().isArray()) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             int idx = coerce(property);
             checkBounds(base, idx);
             return base.getClass().getComponentType();
@@ -57,7 +57,7 @@ public class ArrayELResolver extends ELR
         }
 
         if (base != null && base.getClass().isArray()) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             int idx = coerce(property);
             if (idx < 0 || idx >= Array.getLength(base)) {
                 return null;
@@ -76,7 +76,7 @@ public class ArrayELResolver extends ELR
         }
 
         if (base != null && base.getClass().isArray()) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
 
             if (this.readOnly) {
                 throw new PropertyNotWritableException(Util.message(context,
@@ -103,7 +103,7 @@ public class ArrayELResolver extends ELR
         }
 
         if (base != null && base.getClass().isArray()) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             int idx = coerce(property);
             checkBounds(base, idx);
         }

Modified: tomcat/trunk/java/javax/el/BeanELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/BeanELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/BeanELResolver.java (original)
+++ tomcat/trunk/java/javax/el/BeanELResolver.java Mon Jul  8 13:58:50 2013
@@ -78,7 +78,7 @@ public class BeanELResolver extends ELRe
             return null;
         }
 
-        context.setPropertyResolved(true);
+        context.setPropertyResolved(base, property);
         return this.property(context, base, property).getPropertyType();
     }
 
@@ -91,7 +91,7 @@ public class BeanELResolver extends ELRe
             return null;
         }
 
-        context.setPropertyResolved(true);
+        context.setPropertyResolved(base, property);
         Method m = this.property(context, base, property).read(context);
         try {
             return m.invoke(base, (Object[]) null);
@@ -122,7 +122,7 @@ public class BeanELResolver extends ELRe
             return;
         }
 
-        context.setPropertyResolved(true);
+        context.setPropertyResolved(base, property);
 
         if (this.readOnly) {
             throw new PropertyNotWritableException(Util.message(context,
@@ -185,7 +185,7 @@ public class BeanELResolver extends ELRe
             throw new ELException(cause);
         }
 
-        context.setPropertyResolved(true);
+        context.setPropertyResolved(base, method);
         return result;
     }
 
@@ -198,7 +198,7 @@ public class BeanELResolver extends ELRe
             return false;
         }
 
-        context.setPropertyResolved(true);
+        context.setPropertyResolved(base, property);
         return this.readOnly
                 || this.property(context, base, property).isReadOnly();
     }

Modified: tomcat/trunk/java/javax/el/BeanNameELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/BeanNameELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/BeanNameELResolver.java (original)
+++ tomcat/trunk/java/javax/el/BeanNameELResolver.java Mon Jul  8 13:58:50 2013
@@ -45,7 +45,7 @@ public class BeanNameELResolver extends 
         if (beanNameResolver.isNameResolved(beanName)) {
             try {
                 Object result = beanNameResolver.getBean((String) property);
-                context.setPropertyResolved(true);
+                context.setPropertyResolved(base, property);
                 return result;
             } catch (Throwable t) {
                 Util.handleThrowable(t);
@@ -90,7 +90,7 @@ public class BeanNameELResolver extends 
                 beanNameResolver.canCreateBean(beanName)) {
             try {
                 beanNameResolver.setBeanValue(beanName, value);
-                context.setPropertyResolved(true);
+                context.setPropertyResolved(base, property);
             } catch (Throwable t) {
                 Util.handleThrowable(t);
                 throw new ELException(t);
@@ -113,7 +113,7 @@ public class BeanNameELResolver extends 
         try {
             if (beanNameResolver.isNameResolved(beanName)) {
                 Class<?> result = 
beanNameResolver.getBean(beanName).getClass();
-                context.setPropertyResolved(true);
+                context.setPropertyResolved(base, property);
                 return result;
             }
         } catch (Throwable t) {
@@ -145,7 +145,7 @@ public class BeanNameELResolver extends 
                 Util.handleThrowable(t);
                 throw new ELException(t);
             }
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             return result;
         }
 

Modified: tomcat/trunk/java/javax/el/ListELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ListELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/ListELResolver.java (original)
+++ tomcat/trunk/java/javax/el/ListELResolver.java Mon Jul  8 13:58:50 2013
@@ -46,7 +46,7 @@ public class ListELResolver extends ELRe
         }
 
         if (base instanceof List<?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             List<?> list = (List<?>) base;
             int idx = coerce(property);
             if (idx < 0 || idx >= list.size()) {
@@ -66,7 +66,7 @@ public class ListELResolver extends ELRe
         }
 
         if (base instanceof List<?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             List<?> list = (List<?>) base;
             int idx = coerce(property);
             if (idx < 0 || idx >= list.size()) {
@@ -86,7 +86,7 @@ public class ListELResolver extends ELRe
         }
 
         if (base instanceof List<?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             @SuppressWarnings("unchecked") // Must be OK to cast to Object
             List<Object> list = (List<Object>) base;
 
@@ -113,7 +113,7 @@ public class ListELResolver extends ELRe
         }
 
         if (base instanceof List<?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             List<?> list = (List<?>) base;
             int idx = coerce(property);
             if (idx < 0 || idx >= list.size()) {

Modified: tomcat/trunk/java/javax/el/MapELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/MapELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/MapELResolver.java (original)
+++ tomcat/trunk/java/javax/el/MapELResolver.java Mon Jul  8 13:58:50 2013
@@ -47,7 +47,7 @@ public class MapELResolver extends ELRes
         }
 
         if (base instanceof Map<?,?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             return Object.class;
         }
 
@@ -61,7 +61,7 @@ public class MapELResolver extends ELRes
         }
 
         if (base instanceof Map<?,?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             return ((Map<?,?>) base).get(property);
         }
 
@@ -76,7 +76,7 @@ public class MapELResolver extends ELRes
         }
 
         if (base instanceof Map<?, ?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
 
             if (this.readOnly) {
                 throw new PropertyNotWritableException(Util.message(context,
@@ -100,7 +100,7 @@ public class MapELResolver extends ELRes
         }
 
         if (base instanceof Map<?, ?>) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             return this.readOnly || UNMODIFIABLE.equals(base.getClass());
         }
 

Modified: tomcat/trunk/java/javax/el/ResourceBundleELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ResourceBundleELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/ResourceBundleELResolver.java (original)
+++ tomcat/trunk/java/javax/el/ResourceBundleELResolver.java Mon Jul  8 
13:58:50 2013
@@ -39,7 +39,7 @@ public class ResourceBundleELResolver ex
         }
 
         if (base instanceof ResourceBundle) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
 
             if (property != null) {
                 try {
@@ -61,7 +61,7 @@ public class ResourceBundleELResolver ex
         }
 
         if (base instanceof ResourceBundle) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
         }
 
         return null;
@@ -75,7 +75,7 @@ public class ResourceBundleELResolver ex
         }
 
         if (base instanceof ResourceBundle) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             throw new PropertyNotWritableException(Util.message(context,
                     "resolverNotWriteable", base.getClass().getName()));
         }
@@ -88,7 +88,7 @@ public class ResourceBundleELResolver ex
         }
 
         if (base instanceof ResourceBundle) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
         }
 
         return true;

Modified: tomcat/trunk/java/javax/el/StaticFieldELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/StaticFieldELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/StaticFieldELResolver.java (original)
+++ tomcat/trunk/java/javax/el/StaticFieldELResolver.java Mon Jul  8 13:58:50 
2013
@@ -37,7 +37,7 @@ public class StaticFieldELResolver exten
         }
 
         if (base instanceof ELClass && property instanceof String) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
 
             Class<?> clazz = ((ELClass) base).getKlass();
             String name = (String) property;
@@ -93,7 +93,7 @@ public class StaticFieldELResolver exten
         }
 
         if (base instanceof ELClass && method instanceof String) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, method);
 
             Class<?> clazz = ((ELClass) base).getKlass();
             String methodName = (String) method;
@@ -156,7 +156,7 @@ public class StaticFieldELResolver exten
         }
 
         if (base instanceof ELClass && property instanceof String) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
 
             Class<?> clazz = ((ELClass) base).getKlass();
             String name = (String) property;
@@ -191,7 +191,7 @@ public class StaticFieldELResolver exten
         }
 
         if (base instanceof ELClass && property instanceof String) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
         }
         return true;
     }

Modified: tomcat/trunk/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java 
(original)
+++ tomcat/trunk/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java Mon 
Jul  8 13:58:50 2013
@@ -87,7 +87,7 @@ public class ImplicitObjectELResolver ex
             if (idx >= 0) {
                 PageContext page = (PageContext) context
                         .getContext(JspContext.class);
-                context.setPropertyResolved(true);
+                context.setPropertyResolved(base, property);
                 switch (idx) {
                 case APPLICATIONSCOPE:
                     return ScopeManager.get(page).getApplicationScope();
@@ -127,7 +127,7 @@ public class ImplicitObjectELResolver ex
         if (base == null && property != null) {
             int idx = Arrays.binarySearch(SCOPE_NAMES, property.toString());
             if (idx >= 0) {
-                context.setPropertyResolved(true);
+                context.setPropertyResolved(base, property);
             }
         }
         return null;
@@ -143,7 +143,7 @@ public class ImplicitObjectELResolver ex
         if (base == null && property != null) {
             int idx = Arrays.binarySearch(SCOPE_NAMES, property.toString());
             if (idx >= 0) {
-                context.setPropertyResolved(true);
+                context.setPropertyResolved(base, property);
                 throw new PropertyNotWritableException();
             }
         }
@@ -158,7 +158,7 @@ public class ImplicitObjectELResolver ex
         if (base == null && property != null) {
             int idx = Arrays.binarySearch(SCOPE_NAMES, property.toString());
             if (idx >= 0) {
-                context.setPropertyResolved(true);
+                context.setPropertyResolved(base, property);
                 return true;
             }
         }

Modified: tomcat/trunk/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java 
(original)
+++ tomcat/trunk/java/javax/servlet/jsp/el/ScopedAttributeELResolver.java Mon 
Jul  8 13:58:50 2013
@@ -44,7 +44,7 @@ public class ScopedAttributeELResolver e
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             if (property != null) {
                 String key = property.toString();
                 PageContext page = (PageContext) context
@@ -64,7 +64,7 @@ public class ScopedAttributeELResolver e
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             return Object.class;
         }
 
@@ -79,7 +79,7 @@ public class ScopedAttributeELResolver e
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             if (property != null) {
                 String key = property.toString();
                 PageContext page = (PageContext) context
@@ -101,7 +101,7 @@ public class ScopedAttributeELResolver e
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
         }
 
         return false;

Modified: tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/ELResolverImpl.java Mon Jul  8 
13:58:50 2013
@@ -43,7 +43,7 @@ public final class ELResolverImpl extend
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             if (property != null) {
                 try {
                     return this.variableResolver.resolveVariable(property
@@ -67,7 +67,7 @@ public final class ELResolverImpl extend
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             if (property != null) {
                 try {
                     Object obj = this.variableResolver.resolveVariable(property
@@ -93,7 +93,7 @@ public final class ELResolverImpl extend
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             throw new PropertyNotWritableException(
                     "Legacy VariableResolver wrapped, not writable");
         }
@@ -110,7 +110,7 @@ public final class ELResolverImpl extend
         }
 
         if (base == null) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(base, property);
             return true;
         }
 

Added: tomcat/trunk/test/javax/el/TestEvaluationListener.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestEvaluationListener.java?rev=1500736&view=auto
==============================================================================
--- tomcat/trunk/test/javax/el/TestEvaluationListener.java (added)
+++ tomcat/trunk/test/javax/el/TestEvaluationListener.java Mon Jul  8 13:58:50 
2013
@@ -0,0 +1,80 @@
+/*
+ * 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 javax.el;
+
+import java.util.List;
+
+import javax.el.TesterEvaluationListener.Pair;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestEvaluationListener {
+
+
+    @Test
+    public void testPropertyResolved01() {
+        ELContext context = new TesterELContext();
+        ELResolver resolver = new BeanELResolver();
+        TesterBean bean = new TesterBean("test");
+        TesterEvaluationListener listener = new TesterEvaluationListener();
+
+        context.addEvaluationListener(listener);
+
+        Object result = resolver.getValue(context, bean, "name");
+
+        Assert.assertTrue(context.isPropertyResolved());
+        Assert.assertEquals("test", result);
+        List<Pair> events = listener.getResolvedProperties();
+
+        Assert.assertEquals(1, events.size());
+        Pair p = events.get(0);
+        Assert.assertEquals(bean, p.getBase());
+        Assert.assertEquals("name", p.getProperty());
+    }
+
+
+    @Test
+    public void testPropertyResolved02() {
+        ELContext context = new TesterELContext();
+        ELResolver resolver = new BeanELResolver();
+        TesterBean bean = new TesterBean("test");
+        TesterEvaluationListener listener = new TesterEvaluationListener();
+
+        context.addEvaluationListener(listener);
+
+        Exception exception = null;
+        try {
+            resolver.getValue(context, bean, "foo");
+        } catch (PropertyNotFoundException e) {
+            exception = e;
+        }
+
+        Assert.assertNotNull(exception);
+
+        // Still expect the property to be resolved and the listener to fire
+        // since the vent is at the time of resolution. The EL spec could be a
+        // lot clear on this.
+        Assert.assertTrue(context.isPropertyResolved());
+        List<Pair> events = listener.getResolvedProperties();
+
+        Assert.assertEquals(1, events.size());
+        Pair p = events.get(0);
+        Assert.assertEquals(bean, p.getBase());
+        Assert.assertEquals("foo", p.getProperty());
+    }
+}

Propchange: tomcat/trunk/test/javax/el/TestEvaluationListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/trunk/test/javax/el/TesterELResolverOne.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TesterELResolverOne.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TesterELResolverOne.java (original)
+++ tomcat/trunk/test/javax/el/TesterELResolverOne.java Mon Jul  8 13:58:50 2013
@@ -21,7 +21,7 @@ public class TesterELResolverOne extends
     @Override
     public Object convertToType(ELContext context, Object obj, Class<?> type) {
         if ("1".equals(obj) && type == String.class) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(obj, type);
             return "ONE";
         }
         return null;

Modified: tomcat/trunk/test/javax/el/TesterELResolverTwo.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TesterELResolverTwo.java?rev=1500736&r1=1500735&r2=1500736&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TesterELResolverTwo.java (original)
+++ tomcat/trunk/test/javax/el/TesterELResolverTwo.java Mon Jul  8 13:58:50 2013
@@ -21,7 +21,7 @@ public class TesterELResolverTwo extends
     @Override
     public Object convertToType(ELContext context, Object obj, Class<?> type) {
         if ("2".equals(obj) && type == String.class) {
-            context.setPropertyResolved(true);
+            context.setPropertyResolved(obj, type);
             return "TWO";
         }
         return null;

Added: tomcat/trunk/test/javax/el/TesterEvaluationListener.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TesterEvaluationListener.java?rev=1500736&view=auto
==============================================================================
--- tomcat/trunk/test/javax/el/TesterEvaluationListener.java (added)
+++ tomcat/trunk/test/javax/el/TesterEvaluationListener.java Mon Jul  8 
13:58:50 2013
@@ -0,0 +1,55 @@
+/*
+ * 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 javax.el;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TesterEvaluationListener extends EvaluationListener {
+
+    private final List<Pair> resolvedProperties = new ArrayList<>();
+
+
+    @Override
+    public void propertyResolved(ELContext context, Object base,
+            Object property) {
+        resolvedProperties.add(new Pair(base, property));
+    }
+
+
+    public List<Pair> getResolvedProperties() {
+        return resolvedProperties;
+    }
+
+    public static class Pair {
+        private final Object base;
+        private final Object property;
+
+        public Pair(Object base, Object property) {
+            this.base = base;
+            this.property = property;
+        }
+
+        public Object getBase() {
+            return base;
+        }
+
+        public Object getProperty() {
+            return property;
+        }
+    }
+}

Propchange: tomcat/trunk/test/javax/el/TesterEvaluationListener.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to