package org.springframework.webflow.expression.el; import java.util.ArrayList; import java.util.List; import javax.el.ELResolver; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.test.MockRequestContext; public class ScopeSearchingELResolverTests extends FlowDependentELResolverTestCase { public void testGetType_RequestScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_FlashScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_ViewScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_FlowScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_ConversationScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertEquals(MyBean.class, context.getELResolver().getType(context, null, getBaseVariable())); } public void testGetType_NotFound() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertNull(context.getELResolver().getType(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testGetValue_RequestScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_FlashScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_ViewScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_FlowScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_ConversationScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertSame(foo, context.getELResolver().getValue(context, null, getBaseVariable())); } public void testGetValue_NotFound() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertNull(context.getELResolver().getValue(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testIsReadOnly_RequestScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_FlashScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_ViewScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_FlowScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_ConversationScope() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testIsReadOnly_NotFound() { MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); assertFalse(context.getELResolver().isReadOnly(context, null, getBaseVariable())); assertFalse(context.isPropertyResolved()); } public void testSetValue_RequestScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getRequestScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getRequestScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_FlashScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getFlashScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_ViewScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); initView(requestContext); requestContext.getViewScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getViewScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_FlowScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getFlowScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getFlowScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_ConversationScope() { MyBean foo1 = new MyBean(); MyBean foo2 = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); requestContext.getConversationScope().put(getBaseVariable(), foo1); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo2); assertSame(foo2, requestContext.getConversationScope().get(getBaseVariable())); assertTrue(context.isPropertyResolved()); } public void testSetValue_NotFound() { MyBean foo = new MyBean(); MockRequestContext requestContext = new MockRequestContext(); RequestContextHolder.setRequestContext(requestContext); context.getELResolver().setValue(context, null, getBaseVariable(), foo); assertFalse(context.isPropertyResolved()); } protected String getBaseVariable() { return "foo"; } protected List<ELResolver> getCustomResolvers() { List<ELResolver> resolvers = new ArrayList<ELResolver>(); resolvers.add(new ScopeSearchingELResolver()); return resolvers; } public static class MyBean { private String bar = ""; public void setBar(String bar) { this.bar = bar; } public String getBar() { return this.bar; } } }