You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ja...@apache.org on 2010/08/17 01:18:38 UTC
svn commit: r986159 - in /myfaces/core/branches/1.2.x/impl/src:
main/java/org/apache/myfaces/config/ main/java/org/apache/myfaces/el/unified/
test/java/org/apache/myfaces/el/unified/
Author: jakobk
Date: Mon Aug 16 23:18:37 2010
New Revision: 986159
URL: http://svn.apache.org/viewvc?rev=986159&view=rev
Log:
MYFACES-2873 Provide a way to change the order of ELResolvers (for 1.2.x)
Added:
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java
- copied, changed from r985940, myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java
- copied, changed from r985940, myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java
- copied, changed from r985940, myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java
Modified:
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderBase.java
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForFaces.java
myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForJSP.java
myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/el/unified/ResolverBuilderBaseTest.java
Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java?rev=986159&r1=986158&r2=986159&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java Mon Aug 16 23:18:37 2010
@@ -18,11 +18,7 @@
*/
package org.apache.myfaces.config;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
import javax.el.CompositeELResolver;
import javax.el.ELResolver;
@@ -58,8 +54,8 @@ public class RuntimeConfig
private final Map<String, ResourceBundle> _resourceBundles = new HashMap<String, ResourceBundle>();
private final Map<String, ManagedBean> _oldManagedBeans = new HashMap<String, ManagedBean>();
- private CompositeELResolver facesConfigElResolvers;
- private CompositeELResolver applicationElResolvers;
+ private List<ELResolver> facesConfigElResolvers;
+ private List<ELResolver> applicationElResolvers;
private VariableResolver _variableResolver;
private PropertyResolver _propertyResolver;
@@ -181,12 +177,12 @@ public class RuntimeConfig
{
if (facesConfigElResolvers == null)
{
- facesConfigElResolvers = new org.apache.myfaces.el.CompositeELResolver();
+ facesConfigElResolvers = new ArrayList<ELResolver>();
}
facesConfigElResolvers.add(resolver);
}
- public ELResolver getFacesConfigElResolvers()
+ public List<ELResolver> getFacesConfigElResolvers()
{
return facesConfigElResolvers;
}
@@ -195,12 +191,12 @@ public class RuntimeConfig
{
if (applicationElResolvers == null)
{
- applicationElResolvers = new org.apache.myfaces.el.CompositeELResolver();
+ applicationElResolvers = new ArrayList<ELResolver>();
}
applicationElResolvers.add(resolver);
}
- public ELResolver getApplicationElResolvers()
+ public List<ELResolver> getApplicationElResolvers()
{
return applicationElResolvers;
}
Copied: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java (from r985940, myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java)
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java?p2=myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java&p1=myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java&r1=985940&r2=986159&rev=986159&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomFirstELResolverComparator.java Mon Aug 16 23:18:37 2010
@@ -33,6 +33,8 @@ import org.apache.myfaces.config.Runtime
*
* @author Jakob Korherr (latest modification by $Author$)
* @version $Revision$ $Date$
+ *
+ * @since 1.2.10, 2.0.2
*/
public class CustomFirstELResolverComparator implements Comparator<ELResolver>
{
@@ -42,6 +44,12 @@ public class CustomFirstELResolverCompar
public int compare(ELResolver r1, ELResolver r2)
{
List<ELResolver> facesConfigResolvers = _getFacesConfigElResolvers();
+
+ if (facesConfigResolvers == null)
+ {
+ // no el-resolvers in faces-config
+ return 0; // keep order
+ }
boolean r1FromFacesConfig = facesConfigResolvers.contains(r1);
boolean r2FromFacesConfig = facesConfigResolvers.contains(r2);
Copied: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java (from r985940, myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java)
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java?p2=myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java&p1=myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java&r1=985940&r2=986159&rev=986159&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/CustomLastELResolverComparator.java Mon Aug 16 23:18:37 2010
@@ -28,6 +28,8 @@ import javax.el.ELResolver;
*
* @author Jakob Korherr (latest modification by $Author$)
* @version $Revision$ $Date$
+ *
+ * @since 1.2.10, 2.0.2
*/
public class CustomLastELResolverComparator implements Comparator<ELResolver>
{
Copied: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java (from r985940, myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java)
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java?p2=myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java&p1=myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java&r1=985940&r2=986159&rev=986159&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/OpenWebBeansELResolverComparator.java Mon Aug 16 23:18:37 2010
@@ -27,6 +27,8 @@ import javax.el.ELResolver;
*
* @author Jakob Korherr (latest modification by $Author$)
* @version $Revision$ $Date$
+ *
+ * @since 1.2.10, 2.0.2
*/
public class OpenWebBeansELResolverComparator implements Comparator<ELResolver>
{
Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderBase.java?rev=986159&r1=986158&r2=986159&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderBase.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderBase.java Mon Aug 16 23:18:37 2010
@@ -18,15 +18,24 @@
*/
package org.apache.myfaces.el.unified;
+import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
import org.apache.myfaces.config.RuntimeConfig;
import org.apache.myfaces.el.convert.PropertyResolverToELResolver;
import org.apache.myfaces.el.convert.VariableResolverToELResolver;
+import org.apache.myfaces.shared_impl.util.ClassUtils;
import javax.el.CompositeELResolver;
import javax.el.ELResolver;
import javax.faces.application.Application;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
import javax.faces.el.PropertyResolver;
import javax.faces.el.VariableResolver;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* @author Mathias Broekelmann (latest modification by $Author$)
@@ -35,6 +44,13 @@ import javax.faces.el.VariableResolver;
@SuppressWarnings("deprecation")
public class ResolverBuilderBase
{
+
+ private static final Logger log = Logger.getLogger(ResolverBuilderBase.class.getName());
+
+ @JSFWebConfigParam(since = "1.2.10, 2.0.2",
+ desc = "The Class of an Comparator<ELResolver> implementation.")
+ public static final String EL_RESOLVER_COMPARATOR = "org.apache.myfaces.EL_RESOLVER_COMPARATOR";
+
private final RuntimeConfig _config;
public ResolverBuilderBase(RuntimeConfig config)
@@ -50,34 +66,89 @@ public class ResolverBuilderBase
* @param elResolver
* the composite el resolver to which the resolvers where added
*/
- protected void addFromRuntimeConfig(CompositeELResolver elResolver)
+ protected void addFromRuntimeConfig(List<ELResolver> resolvers)
{
if (_config.getFacesConfigElResolvers() != null)
{
- elResolver.add(_config.getFacesConfigElResolvers());
+ for (ELResolver resolver : _config.getFacesConfigElResolvers())
+ {
+ resolvers.add(resolver);
+ }
}
if (_config.getVariableResolver() != null)
{
- elResolver.add(createELResolver(_config.getVariableResolver()));
+ resolvers.add(createELResolver(_config.getVariableResolver()));
}
else if (_config.getVariableResolverChainHead() != null)
{
- elResolver.add(createELResolver(_config.getVariableResolverChainHead()));
+ resolvers.add(createELResolver(_config.getVariableResolverChainHead()));
}
if (_config.getPropertyResolver() != null)
{
- elResolver.add(createELResolver(_config.getPropertyResolver()));
+ resolvers.add(createELResolver(_config.getPropertyResolver()));
}
else if (_config.getPropertyResolverChainHead() != null)
{
- elResolver.add(createELResolver(_config.getPropertyResolverChainHead()));
+ resolvers.add(createELResolver(_config.getPropertyResolverChainHead()));
}
if (_config.getApplicationElResolvers() != null)
{
- elResolver.add(_config.getApplicationElResolvers());
+ for (ELResolver resolver : _config.getApplicationElResolvers())
+ {
+ resolvers.add(resolver);
+ }
+ }
+ }
+
+ /**
+ * Sort the ELResolvers with a custom Comparator provided by the user.
+ * @param resolvers
+ * @since 1.2.10, 2.0.2
+ */
+ @SuppressWarnings("unchecked")
+ protected void sortELResolvers(List<ELResolver> resolvers)
+ {
+ ExternalContext externalContext
+ = FacesContext.getCurrentInstance().getExternalContext();
+
+ String comparatorClass = externalContext
+ .getInitParameter(EL_RESOLVER_COMPARATOR);
+
+ if (comparatorClass != null && !"".equals(comparatorClass))
+ {
+ // the user provided the parameter.
+
+ // if we already have a cached instance, use it
+ Comparator<ELResolver> comparator
+ = (Comparator<ELResolver>) externalContext.
+ getApplicationMap().get(EL_RESOLVER_COMPARATOR);
+ try
+ {
+ if (comparator == null)
+ {
+ // get the comparator class
+ Class<Comparator<ELResolver>> clazz
+ = ClassUtils.classForName(comparatorClass);
+
+ // create the instance
+ comparator = clazz.newInstance();
+
+ // cache the instance, because it will be used at least two times
+ externalContext.getApplicationMap()
+ .put(EL_RESOLVER_COMPARATOR, comparator);
+ }
+
+ // sort the resolvers
+ Collections.sort(resolvers, comparator);
+ }
+ catch (Exception e)
+ {
+ log.log(Level.WARNING,
+ "Could not sort ELResolvers with custom Comparator", e);
+ }
}
}
Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForFaces.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForFaces.java?rev=986159&r1=986158&r2=986159&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForFaces.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForFaces.java Mon Aug 16 23:18:37 2010
@@ -24,12 +24,9 @@ import org.apache.myfaces.el.unified.res
import org.apache.myfaces.el.unified.resolver.ScopedAttributeResolver;
import org.apache.myfaces.el.unified.resolver.implicitobject.ImplicitObjectResolver;
-import javax.el.ArrayELResolver;
-import javax.el.BeanELResolver;
-import javax.el.CompositeELResolver;
-import javax.el.ListELResolver;
-import javax.el.MapELResolver;
-import javax.el.ResourceBundleELResolver;
+import javax.el.*;
+import java.util.ArrayList;
+import java.util.List;
/**
* Create the el resolver for faces. see 1.2 spec section 5.6.2
@@ -45,20 +42,35 @@ public class ResolverBuilderForFaces ext
super(config);
}
- public void build(CompositeELResolver elResolver)
+ public void build(CompositeELResolver compositeElResolver)
{
- elResolver.add(ImplicitObjectResolver.makeResolverForFaces());
-
- addFromRuntimeConfig(elResolver);
-
- elResolver.add(new ManagedBeanResolver());
- elResolver.add(new ResourceBundleELResolver());
- elResolver.add(new ResourceBundleResolver());
- elResolver.add(new MapELResolver());
- elResolver.add(new ListELResolver());
- elResolver.add(new ArrayELResolver());
- elResolver.add(new BeanELResolver());
- elResolver.add(new ScopedAttributeResolver());
+ // add the ELResolvers to a List first to be able to sort them
+ List<ELResolver> list = new ArrayList<ELResolver>();
+
+ list.add(ImplicitObjectResolver.makeResolverForFaces());
+
+ addFromRuntimeConfig(list);
+
+ list.add(new ManagedBeanResolver());
+ list.add(new ResourceBundleELResolver());
+ list.add(new ResourceBundleResolver());
+ list.add(new MapELResolver());
+ list.add(new ListELResolver());
+ list.add(new ArrayELResolver());
+ list.add(new BeanELResolver());
+
+ // give the user a chance to sort the resolvers
+ sortELResolvers(list);
+
+ // add the resolvers from the list to the CompositeELResolver
+ for (ELResolver resolver : list)
+ {
+ compositeElResolver.add(resolver);
+ }
+
+ // the ScopedAttributeResolver has to be the last one in every
+ // case, because it always sets propertyResolved to true (per the spec)
+ compositeElResolver.add(new ScopedAttributeResolver());
}
}
Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForJSP.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForJSP.java?rev=986159&r1=986158&r2=986159&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForJSP.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/el/unified/ResolverBuilderForJSP.java Mon Aug 16 23:18:37 2010
@@ -24,6 +24,9 @@ import org.apache.myfaces.el.unified.res
import org.apache.myfaces.el.unified.resolver.implicitobject.ImplicitObjectResolver;
import javax.el.CompositeELResolver;
+import javax.el.ELResolver;
+import java.util.ArrayList;
+import java.util.List;
/**
* build the el resolver for jsp. see 1.2 spec section 5.6.1
@@ -39,13 +42,25 @@ public class ResolverBuilderForJSP exten
super(config);
}
- public void build(CompositeELResolver elResolver)
+ public void build(CompositeELResolver compositeElResolver)
{
- elResolver.add(ImplicitObjectResolver.makeResolverForJSP());
- elResolver.add(new ManagedBeanResolver());
- elResolver.add(new ResourceBundleResolver());
+ // add the ELResolvers to a List first to be able to sort them
+ List<ELResolver> list = new ArrayList<ELResolver>();
- addFromRuntimeConfig(elResolver);
+ list.add(ImplicitObjectResolver.makeResolverForJSP());
+ list.add(new ManagedBeanResolver());
+ list.add(new ResourceBundleResolver());
+
+ addFromRuntimeConfig(list);
+
+ // give the user a chance to sort the resolvers
+ sortELResolvers(list);
+
+ // add the resolvers from the list to the CompositeELResolver
+ for (ELResolver resolver : list)
+ {
+ compositeElResolver.add(resolver);
+ }
}
}
Modified: myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/el/unified/ResolverBuilderBaseTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/el/unified/ResolverBuilderBaseTest.java?rev=986159&r1=986158&r2=986159&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/el/unified/ResolverBuilderBaseTest.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/el/unified/ResolverBuilderBaseTest.java Mon Aug 16 23:18:37 2010
@@ -19,44 +19,56 @@
package org.apache.myfaces.el.unified;
import static org.easymock.EasyMock.*;
-import static org.testng.Assert.assertEquals;
-import javax.el.CompositeELResolver;
import javax.el.ELResolver;
import javax.faces.el.PropertyResolver;
import javax.faces.el.VariableResolver;
+import junit.framework.Assert;
+import junit.framework.TestCase;
import org.apache.myfaces.config.RuntimeConfig;
import org.apache.myfaces.el.convert.PropertyResolverToELResolver;
import org.apache.myfaces.el.convert.VariableResolverToELResolver;
-import org.easymock.IAnswer;
import org.easymock.classextension.EasyMock;
import org.easymock.classextension.IMocksControl;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/**
* @author Mathias Broekelmann (latest modification by $Author$)
* @version $Revision$ $Date$
*/
@SuppressWarnings("deprecation")
-public class ResolverBuilderBaseTest
+public class ResolverBuilderBaseTest extends TestCase
{
private IMocksControl _mocksControl;
private RuntimeConfig _runtimeConfig;
private ResolverBuilderBase _testImpl;
- private CompositeELResolver _compositeELResolver;
+ private List<ELResolver> _resolvers;
+
+ public ResolverBuilderBaseTest()
+ {
+ }
- @BeforeMethod
- void setUp()
+ public void setUp()
{
_mocksControl = EasyMock.createNiceControl();
_runtimeConfig = _mocksControl.createMock(RuntimeConfig.class);
- _compositeELResolver = _mocksControl.createMock(CompositeELResolver.class);
_testImpl = new ResolverBuilderBase(_runtimeConfig);
+ _resolvers = new ArrayList<ELResolver>();
+ }
+
+ public void tearDown()
+ {
+ _mocksControl = null;
+ _runtimeConfig = null;
+ _testImpl = null;
+ _resolvers = null;
}
- @Test
+ /*
public void testGetFacesConfigElResolvers() throws Exception
{
ELResolver resolver = _mocksControl.createMock(ELResolver.class);
@@ -66,99 +78,70 @@ public class ResolverBuilderBaseTest
_mocksControl.replay();
_testImpl.addFromRuntimeConfig(_compositeELResolver);
_mocksControl.verify();
- }
+ }*/
- @Test
public void testGetApplicationElResolvers() throws Exception
{
ELResolver resolver = _mocksControl.createMock(ELResolver.class);
- expect(_runtimeConfig.getApplicationElResolvers()).andReturn(resolver).anyTimes();
- _compositeELResolver = _mocksControl.createMock(CompositeELResolver.class);
- _compositeELResolver.add(eq(resolver));
+ expect(_runtimeConfig.getApplicationElResolvers()).andReturn(Arrays.asList(resolver)).anyTimes();
_mocksControl.replay();
- _testImpl.addFromRuntimeConfig(_compositeELResolver);
+ _testImpl.addFromRuntimeConfig(_resolvers);
_mocksControl.verify();
+ Assert.assertEquals(Arrays.asList(resolver), _resolvers);
}
- @Test
public void testGetVariableResolver() throws Exception
{
VariableResolver resolver = _mocksControl.createMock(VariableResolver.class);
expect(_runtimeConfig.getVariableResolver()).andReturn(resolver).anyTimes();
- _compositeELResolver.add(isA(VariableResolverToELResolver.class));
- expectLastCall().andAnswer(new VariableResolverToELResolverValidator(resolver));
_mocksControl.replay();
- _testImpl.addFromRuntimeConfig(_compositeELResolver);
+ _testImpl.addFromRuntimeConfig(_resolvers);
_mocksControl.verify();
+
+ VariableResolverToELResolver elResolver
+ = (VariableResolverToELResolver) _resolvers.get(0);
+ Assert.assertEquals(resolver, elResolver.getVariableResolver());
}
- @Test
public void testGetVariableResolverChainHead() throws Exception
{
VariableResolver resolver = _mocksControl.createMock(VariableResolver.class);
EasyMock.expect(_runtimeConfig.getVariableResolverChainHead()).andReturn(resolver).anyTimes();
- _compositeELResolver.add(isA(VariableResolverToELResolver.class));
- expectLastCall().andAnswer(new VariableResolverToELResolverValidator(resolver));
_mocksControl.replay();
- _testImpl.addFromRuntimeConfig(_compositeELResolver);
+ _testImpl.addFromRuntimeConfig(_resolvers);
_mocksControl.verify();
+
+ VariableResolverToELResolver elResolver
+ = (VariableResolverToELResolver) _resolvers.get(0);
+ Assert.assertEquals(resolver, elResolver.getVariableResolver());
}
- @Test
public void testGetPropertyResolver() throws Exception
{
PropertyResolver resolver = _mocksControl.createMock(PropertyResolver.class);
expect(_runtimeConfig.getPropertyResolver()).andReturn(resolver).anyTimes();
- _compositeELResolver.add(isA(PropertyResolverToELResolver.class));
- expectLastCall().andAnswer(new PropertyResolverToELResolverValidator(resolver));
_mocksControl.replay();
- _testImpl.addFromRuntimeConfig(_compositeELResolver);
+ _testImpl.addFromRuntimeConfig(_resolvers);
_mocksControl.verify();
+
+ PropertyResolverToELResolver elResolver
+ = (PropertyResolverToELResolver) _resolvers.get(0);
+ Assert.assertEquals(resolver, elResolver.getPropertyResolver());
}
- @Test
public void testGetPropertyResolverChainHead() throws Exception
{
PropertyResolver resolver = _mocksControl.createMock(PropertyResolver.class);
EasyMock.expect(_runtimeConfig.getPropertyResolverChainHead()).andReturn(resolver).anyTimes();
- _compositeELResolver.add(isA(PropertyResolverToELResolver.class));
- expectLastCall().andAnswer(new PropertyResolverToELResolverValidator(resolver));
_mocksControl.replay();
- _testImpl.addFromRuntimeConfig(_compositeELResolver);
+ _testImpl.addFromRuntimeConfig(_resolvers);
_mocksControl.verify();
- }
- private class VariableResolverToELResolverValidator implements IAnswer<Object>
- {
- private final VariableResolver _resolver;
- private VariableResolverToELResolverValidator(VariableResolver resolver)
- {
- _resolver = resolver;
- }
-
- public Object answer() throws Throwable
- {
- VariableResolverToELResolver vr = (VariableResolverToELResolver) getCurrentArguments()[0];
- assertEquals(_resolver, vr.getVariableResolver());
- return null;
- }
- }
-
- private class PropertyResolverToELResolverValidator implements IAnswer<Object>
- {
- private final PropertyResolver _resolver;
-
- private PropertyResolverToELResolverValidator(PropertyResolver resolver)
- {
- _resolver = resolver;
- }
-
- public Object answer() throws Throwable
- {
- PropertyResolverToELResolver vr = (PropertyResolverToELResolver) getCurrentArguments()[0];
- assertEquals(_resolver, vr.getPropertyResolver());
- return null;
- }
+ PropertyResolverToELResolver elResolver
+ = (PropertyResolverToELResolver) _resolvers.get(0);
+ Assert.assertEquals(resolver, elResolver.getPropertyResolver());
}
+
}
+