@Override public void requestInitialized(ServletRequestEvent requestEvent) { if (!(requestEvent.getServletRequest() instanceof HttpServletRequest)) { throw new IllegalArgumentException( "Request is not an HttpServletRequest: " + requestEvent.getServletRequest()); } HttpServletRequest request = (HttpServletRequest) requestEvent.getServletRequest(); ServletRequestAttributes attributes = new ServletRequestAttributes(request); request.setAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE, attributes); LocaleContextHolder.setLocale(request.getLocale()); RequestContextHolder.setRequestAttributes(attributes); }
@Test(expected = IllegalArgumentException.class) public void ctorRejectsNullArg() throws Exception { new ServletRequestAttributes(null); }
@Before public void setup() { RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(this.request)); }
@Before public void setUp() { this.oldRequestAttributes = new ServletRequestAttributes(new MockHttpServletRequest()); this.newRequestAttributes = new ServletRequestAttributes(new MockHttpServletRequest()); MockHttpServletRequest oldRequestWithSession = new MockHttpServletRequest(); oldRequestWithSession.setSession(new MockHttpSession()); this.oldRequestAttributesWithSession = new ServletRequestAttributes(oldRequestWithSession); MockHttpServletRequest newRequestWithSession = new MockHttpServletRequest(); newRequestWithSession.setSession(new MockHttpSession()); this.newRequestAttributesWithSession = new ServletRequestAttributes(newRequestWithSession); }
@Test public void removeSessionScopedAttributeDoesNotForceCreationOfSession() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); ServletRequestAttributes attrs = new ServletRequestAttributes(request); attrs.removeAttribute(KEY, RequestAttributes.SCOPE_SESSION); verify(request).getSession(false); }
@Before public void setUp() { MockHttpServletRequest oldRequestWithSession = new MockHttpServletRequest(); oldRequestWithSession.setSession(new MockHttpSession()); this.oldRequestAttributesWithSession = new ServletRequestAttributes(oldRequestWithSession); MockHttpServletRequest newRequestWithSession = new MockHttpServletRequest(); newRequestWithSession.setSession(new MockHttpSession()); this.newRequestAttributesWithSession = new ServletRequestAttributes(newRequestWithSession); }
@Test public void getSessionScopedAttributeDoesNotForceCreationOfSession() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); ServletRequestAttributes attrs = new ServletRequestAttributes(request); Object value = attrs.getAttribute(KEY, RequestAttributes.SCOPE_SESSION); assertNull(value); verify(request).getSession(false); }
@Test public void setRequestScopedAttribute() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); ServletRequestAttributes attrs = new ServletRequestAttributes(request); attrs.setAttribute(KEY, VALUE, RequestAttributes.SCOPE_REQUEST); Object value = request.getAttribute(KEY); assertSame(VALUE, value); }
@Test public void setRequestScopedAttributeAfterCompletion() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); ServletRequestAttributes attrs = new ServletRequestAttributes(request); request.close(); try { attrs.setAttribute(KEY, VALUE, RequestAttributes.SCOPE_REQUEST); fail("Should have thrown IllegalStateException"); } catch (IllegalStateException ex) { // expected } }
private void doSkipImmutableValue(Object immutableValue) { HttpServletRequest request = mock(HttpServletRequest.class); HttpSession session = mock(HttpSession.class); given(request.getSession(anyBoolean())).willReturn(session); given(session.getAttribute(KEY)).willReturn(immutableValue); ServletRequestAttributes attrs = new ServletRequestAttributes(request); attrs.getAttribute(KEY, RequestAttributes.SCOPE_SESSION); attrs.requestCompleted(); verify(session, times(2)).getAttribute(KEY); verifyNoMoreInteractions(session); }
private void adaptRequestFromForwardedHeaders() throws Exception { MockFilterChain chain = new MockFilterChain(); new ForwardedHeaderFilter().doFilter(this.request, new MockHttpServletResponse(), chain); HttpServletRequest adaptedRequest = (HttpServletRequest) chain.getRequest(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(adaptedRequest)); }
@Test public void updateAccessedAttributes() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); HttpSession session = mock(HttpSession.class); given(request.getSession(anyBoolean())).willReturn(session); given(session.getAttribute(KEY)).willReturn(VALUE); ServletRequestAttributes attrs = new ServletRequestAttributes(request); assertSame(VALUE, attrs.getAttribute(KEY, RequestAttributes.SCOPE_SESSION)); attrs.requestCompleted(); verify(session, times(2)).getAttribute(KEY); verify(session).setAttribute(KEY, VALUE); verifyNoMoreInteractions(session); }
@Test public void setSessionScopedAttribute() throws Exception { MockHttpSession session = new MockHttpSession(); session.setAttribute(KEY, VALUE); MockHttpServletRequest request = new MockHttpServletRequest(); request.setSession(session); ServletRequestAttributes attrs = new ServletRequestAttributes(request); attrs.setAttribute(KEY, VALUE, RequestAttributes.SCOPE_SESSION); assertSame(VALUE, session.getAttribute(KEY)); }
@Test public void removeSessionScopedAttribute() throws Exception { MockHttpSession session = new MockHttpSession(); session.setAttribute(KEY, VALUE); MockHttpServletRequest request = new MockHttpServletRequest(); request.setSession(session); ServletRequestAttributes attrs = new ServletRequestAttributes(request); attrs.removeAttribute(KEY, RequestAttributes.SCOPE_SESSION); Object value = session.getAttribute(KEY); assertNull(value); }
@Before public void createViewResolver() { StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(new MockServletContext()); wac.refresh(); viewResolver = new ContentNegotiatingViewResolver(); viewResolver.setApplicationContext(wac); request = new MockHttpServletRequest("GET", "/test"); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); }
@Test public void fromCurrentRequest() { this.request.setRequestURI("/mvc-showcase/data/param"); this.request.setQueryString("foo=123"); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(this.request)); try { String result = ServletUriComponentsBuilder.fromCurrentRequest().build().toUriString(); assertEquals("http://localhost/mvc-showcase/data/param?foo=123", result); } finally { RequestContextHolder.resetRequestAttributes(); } }
@Test public void getFromFactoryBeanInScope() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); RequestAttributes requestAttributes = new ServletRequestAttributes(request); RequestContextHolder.setRequestAttributes(requestAttributes); String name = "requestScopedFactoryBean"; assertNull(request.getAttribute(name)); TestBean bean = (TestBean) this.beanFactory.getBean(name); assertTrue(request.getAttribute(name) instanceof FactoryBean); assertSame(bean, this.beanFactory.getBean(name)); }
@Test public void setSessionScopedAttributeAfterCompletion() throws Exception { MockHttpSession session = new MockHttpSession(); session.setAttribute(KEY, VALUE); MockHttpServletRequest request = new MockHttpServletRequest(); request.setSession(session); ServletRequestAttributes attrs = new ServletRequestAttributes(request); assertSame(VALUE, attrs.getAttribute(KEY, RequestAttributes.SCOPE_SESSION)); attrs.requestCompleted(); request.close(); attrs.setAttribute(KEY, VALUE, RequestAttributes.SCOPE_SESSION); assertSame(VALUE, session.getAttribute(KEY)); }
@Test public void getFromScope() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); request.setContextPath("/path"); RequestAttributes requestAttributes = new ServletRequestAttributes(request); RequestContextHolder.setRequestAttributes(requestAttributes); String name = "requestScopedObject"; assertNull(request.getAttribute(name)); TestBean bean = (TestBean) this.beanFactory.getBean(name); assertEquals("/path", bean.getName()); assertSame(bean, request.getAttribute(name)); assertSame(bean, this.beanFactory.getBean(name)); }
@Test public void destructionAtRequestCompletion() throws Exception { MockHttpServletRequest request = new MockHttpServletRequest(); ServletRequestAttributes requestAttributes = new ServletRequestAttributes(request); RequestContextHolder.setRequestAttributes(requestAttributes); String name = "requestScopedDisposableObject"; assertNull(request.getAttribute(name)); DerivedTestBean bean = (DerivedTestBean) this.beanFactory.getBean(name); assertSame(bean, request.getAttribute(name)); assertSame(bean, this.beanFactory.getBean(name)); requestAttributes.requestCompleted(); assertTrue(bean.wasDestroyed()); }