@Autowired public void registerDeviceTypes() { Set<DeviceType> deviceTypes = settings.getDeviceTypes(); for ( LiteDeviceDelegatingViewResolver resolver : viewResolvers ) { if ( deviceTypes.contains( DeviceType.MOBILE ) ) { resolver.setMobilePrefix( MOBILE_PREFIX ); } if ( deviceTypes.contains( DeviceType.TABLET ) ) { resolver.setTabletPrefix( TABLET_PREFIX ); } if ( deviceTypes.contains( DeviceType.NORMAL ) ) { resolver.setNormalPrefix( NORMAL_PREFIX ); } } }
@Bean public LiteDeviceDelegatingViewResolver liteDeviceAwareViewResolver() { InternalResourceViewResolver delegate = new InternalResourceViewResolver(); delegate.setPrefix("/WEB-INF/views/"); delegate.setSuffix(".jsp"); LiteDeviceDelegatingViewResolver resolver = new LiteDeviceDelegatingViewResolver(delegate); resolver.setMobilePrefix("mobile/"); resolver.setTabletPrefix("tablet/"); return resolver; }
@Test public void resolveViewNameMobileDevicePrefixFallback() throws Exception { device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); viewResolver.setEnableFallback(true); expect(delegateViewResolver.resolveViewName("mobile/" + viewName, locale)).andReturn(null); expect(delegateViewResolver.resolveViewName(viewName, locale)).andReturn(view); replay(delegateViewResolver, view); View result = viewResolver.resolveViewName(viewName, locale); assertSame("Invalid view", view, result); verify(delegateViewResolver, view); }
@Test public void resolveViewNameMobileDeviceMobilePrefixForward() throws Exception { this.viewName = "forward:about"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("forward:about"); }
@Test public void resolveViewNameMobileDeviceNormalPrefixRedirectToAbsoluteUrlSSL() throws Exception { this.viewName = "redirect:https://spring.io"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("redirect:https://spring.io"); }
@Test public void resolveViewNameMobileDeviceNormalPrefixRedirectToAbsoluteUrl() throws Exception { this.viewName = "redirect:http://spring.io"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("redirect:http://spring.io"); }
@Test public void resolveViewNameMobileDeviceMobilePrefixForwardToEmpty() throws Exception { this.viewName = "forward:"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("forward:"); }
@Test public void resolveViewNameMobileDeviceNormalPrefixForwardToAbsoluteUrl() throws Exception { this.viewName = "forward:HTTP://spring.io"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("forward:HTTP://spring.io"); }
@Test public void resolveViewNameMobileDeviceMobilePrefixRedirectToRoot() throws Exception { this.viewName = "redirect:/"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("redirect:/"); }
@Test public void resolveViewNameMobileDeviceMobilePrefixRedirect() throws Exception { this.viewName = "redirect:about"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("redirect:about"); }
@Test public void resolveViewNameMobileDeviceMobilePrefixRedirectToEmpty() throws Exception { this.viewName = "redirect:"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("redirect:"); }
@Test public void resolveViewNameMobileDeviceMobilePrefixForwardToRoot() throws Exception { this.viewName = "forward:/"; device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("forward:/"); }
@Test public void resolveViewNameMobileDeviceNoSitePreferenceMobilePrefix() throws Exception { device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); replayMocks("mobile/" + viewName); }
@Test public void resolveViewNameMobileDeviceNoSitePreferenceMobilePrefixAndSuffix() throws Exception { device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); viewResolver.setMobilePrefix("mobile/"); viewResolver.setMobileSuffix(".mob"); replayMocks("mobile/" + viewName + ".mob"); }
@Test public void resolveViewNameMobileDeviceMobileSitePreferenceMobilePrefix() throws Exception { device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); request.setAttribute(SitePreferenceHandler.CURRENT_SITE_PREFERENCE_ATTRIBUTE, SitePreference.MOBILE); viewResolver.setMobilePrefix("mobile/"); replayMocks("mobile/" + viewName); }
@Test public void resolveViewNameTabletDeviceMobileSitePreferenceMobilePrefix() throws Exception { device.setDeviceType(DeviceType.TABLET); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); request.setAttribute(SitePreferenceHandler.CURRENT_SITE_PREFERENCE_ATTRIBUTE, SitePreference.MOBILE); viewResolver.setMobilePrefix("mobile/"); replayMocks("mobile/" + viewName); }
@Test public void resolveViewNameNormalDeviceMobileSitePreferenceMobilePrefix() throws Exception { device.setDeviceType(DeviceType.NORMAL); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); request.setAttribute(SitePreferenceHandler.CURRENT_SITE_PREFERENCE_ATTRIBUTE, SitePreference.MOBILE); viewResolver.setMobilePrefix("mobile/"); replayMocks("mobile/" + viewName); }
@Test public void resolveViewNameTabletDeviceMobileSitePreferenceMobilePrefixAndSuffix() throws Exception { device.setDeviceType(DeviceType.TABLET); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); request.setAttribute(SitePreferenceHandler.CURRENT_SITE_PREFERENCE_ATTRIBUTE, SitePreference.MOBILE); viewResolver.setMobilePrefix("mobile/"); viewResolver.setMobileSuffix(".mob"); replayMocks("mobile/" + viewName + ".mob"); }
@Test public void resolveViewNameMobileDeviceMobileSitePreferenceMobilePrefixAndSuffix() throws Exception { device.setDeviceType(DeviceType.MOBILE); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); request.setAttribute(SitePreferenceHandler.CURRENT_SITE_PREFERENCE_ATTRIBUTE, SitePreference.MOBILE); viewResolver.setMobilePrefix("mobile/"); viewResolver.setMobileSuffix(".mob"); replayMocks("mobile/" + viewName + ".mob"); }
@Test public void resolveViewNameNormalDeviceMobileSitePreferenceMobilePrefixAndSuffix() throws Exception { device.setDeviceType(DeviceType.NORMAL); request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE, device); request.setAttribute(SitePreferenceHandler.CURRENT_SITE_PREFERENCE_ATTRIBUTE, SitePreference.MOBILE); viewResolver.setMobilePrefix("mobile/"); viewResolver.setMobileSuffix(".mob"); replayMocks("mobile/" + viewName + ".mob"); }