33
33
import org .springframework .format .annotation .DateTimeFormat ;
34
34
import org .springframework .format .annotation .DateTimeFormat .ISO ;
35
35
import org .springframework .format .support .FormattingConversionServiceFactoryBean ;
36
- import org .springframework .http .converter .ByteArrayHttpMessageConverter ;
37
- import org .springframework .http .converter .FormHttpMessageConverter ;
38
36
import org .springframework .http .converter .HttpMessageConverter ;
39
- import org .springframework .http .converter .StringHttpMessageConverter ;
40
- import org .springframework .http .converter .json .MappingJacksonHttpMessageConverter ;
41
- import org .springframework .http .converter .xml .Jaxb2RootElementHttpMessageConverter ;
42
- import org .springframework .http .converter .xml .SourceHttpMessageConverter ;
43
37
import org .springframework .mock .web .MockHttpServletRequest ;
44
38
import org .springframework .mock .web .MockHttpServletResponse ;
45
39
import org .springframework .mock .web .MockServletContext ;
@@ -239,6 +233,7 @@ public void testViewControllers() throws Exception {
239
233
mapping .setDefaultHandler (new TestController ());
240
234
241
235
MockHttpServletRequest request = new MockHttpServletRequest ();
236
+ request .setMethod ("GET" );
242
237
243
238
HandlerExecutionChain chain = mapping .getHandler (request );
244
239
assertEquals (4 , chain .getInterceptors ().length );
@@ -253,7 +248,6 @@ public void testViewControllers() throws Exception {
253
248
assertNotNull (adapter );
254
249
255
250
request .setRequestURI ("/foo" );
256
- request .setMethod ("GET" );
257
251
chain = mapping2 .getHandler (request );
258
252
assertEquals (4 , chain .getInterceptors ().length );
259
253
assertTrue (chain .getInterceptors ()[1 ] instanceof ConversionServiceExposingInterceptor );
@@ -262,16 +256,77 @@ public void testViewControllers() throws Exception {
262
256
ModelAndView mv = adapter .handle (request , new MockHttpServletResponse (), chain .getHandler ());
263
257
assertNull (mv .getViewName ());
264
258
265
- request .setRequestURI ("/bar" );
259
+ request .setRequestURI ("/myapp/app/bar" );
260
+ request .setContextPath ("/myapp" );
261
+ request .setServletPath ("/app" );
262
+ chain = mapping2 .getHandler (request );
263
+ assertEquals (4 , chain .getInterceptors ().length );
264
+ assertTrue (chain .getInterceptors ()[1 ] instanceof ConversionServiceExposingInterceptor );
265
+ assertTrue (chain .getInterceptors ()[2 ] instanceof LocaleChangeInterceptor );
266
+ assertTrue (chain .getInterceptors ()[3 ] instanceof ThemeChangeInterceptor );
267
+ ModelAndView mv2 = adapter .handle (request , new MockHttpServletResponse (), chain .getHandler ());
268
+ assertEquals ("baz" , mv2 .getViewName ());
269
+
270
+ request .setRequestURI ("/myapp/app/" );
271
+ request .setContextPath ("/myapp" );
272
+ request .setServletPath ("/app" );
266
273
chain = mapping2 .getHandler (request );
267
274
assertEquals (4 , chain .getInterceptors ().length );
268
275
assertTrue (chain .getInterceptors ()[1 ] instanceof ConversionServiceExposingInterceptor );
269
276
assertTrue (chain .getInterceptors ()[2 ] instanceof LocaleChangeInterceptor );
270
277
assertTrue (chain .getInterceptors ()[3 ] instanceof ThemeChangeInterceptor );
278
+ ModelAndView mv3 = adapter .handle (request , new MockHttpServletResponse (), chain .getHandler ());
279
+ assertEquals ("root" , mv3 .getViewName ());
280
+ }
281
+
282
+ /** WebSphere gives trailing servlet path slashes by default!! */
283
+ @ Test
284
+ public void testViewControllersOnWebSphere () throws Exception {
285
+ XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader (appContext );
286
+ reader .loadBeanDefinitions (new ClassPathResource ("mvc-config-view-controllers.xml" , getClass ()));
287
+ assertEquals (9 , appContext .getBeanDefinitionCount ());
288
+ appContext .refresh ();
289
+
290
+ SimpleUrlHandlerMapping mapping2 = appContext .getBean (SimpleUrlHandlerMapping .class );
291
+ SimpleControllerHandlerAdapter adapter = appContext .getBean (SimpleControllerHandlerAdapter .class );
292
+
293
+ MockHttpServletRequest request = new MockHttpServletRequest ();
294
+ request .setMethod ("GET" );
295
+ request .setRequestURI ("/myapp/app/bar" );
296
+ request .setContextPath ("/myapp" );
297
+ request .setServletPath ("/app/" );
298
+ HandlerExecutionChain chain = mapping2 .getHandler (request );
299
+ assertEquals (4 , chain .getInterceptors ().length );
300
+ assertTrue (chain .getInterceptors ()[1 ] instanceof ConversionServiceExposingInterceptor );
301
+ assertTrue (chain .getInterceptors ()[2 ] instanceof LocaleChangeInterceptor );
302
+ assertTrue (chain .getInterceptors ()[3 ] instanceof ThemeChangeInterceptor );
271
303
ModelAndView mv2 = adapter .handle (request , new MockHttpServletResponse (), chain .getHandler ());
272
304
assertEquals ("baz" , mv2 .getViewName ());
305
+
306
+ request .setRequestURI ("/myapp/app/" );
307
+ request .setContextPath ("/myapp" );
308
+ request .setServletPath ("/app/" );
309
+ chain = mapping2 .getHandler (request );
310
+ assertEquals (4 , chain .getInterceptors ().length );
311
+ assertTrue (chain .getInterceptors ()[1 ] instanceof ConversionServiceExposingInterceptor );
312
+ assertTrue (chain .getInterceptors ()[2 ] instanceof LocaleChangeInterceptor );
313
+ assertTrue (chain .getInterceptors ()[3 ] instanceof ThemeChangeInterceptor );
314
+ ModelAndView mv3 = adapter .handle (request , new MockHttpServletResponse (), chain .getHandler ());
315
+ assertEquals ("root" , mv3 .getViewName ());
316
+
317
+ request .setRequestURI ("/myapp/" );
318
+ request .setContextPath ("/myapp" );
319
+ request .setServletPath ("/" );
320
+ chain = mapping2 .getHandler (request );
321
+ assertEquals (4 , chain .getInterceptors ().length );
322
+ assertTrue (chain .getInterceptors ()[1 ] instanceof ConversionServiceExposingInterceptor );
323
+ assertTrue (chain .getInterceptors ()[2 ] instanceof LocaleChangeInterceptor );
324
+ assertTrue (chain .getInterceptors ()[3 ] instanceof ThemeChangeInterceptor );
325
+ mv3 = adapter .handle (request , new MockHttpServletResponse (), chain .getHandler ());
326
+ assertEquals ("root" , mv3 .getViewName ());
273
327
}
274
328
329
+
275
330
@ Controller
276
331
public static class TestController {
277
332
0 commit comments