diff --git a/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/SpringWildcardServletTilesApplicationContext.java b/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/SpringWildcardServletTilesApplicationContext.java index f3240374a3..f24f6cf9cb 100644 --- a/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/SpringWildcardServletTilesApplicationContext.java +++ b/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/SpringWildcardServletTilesApplicationContext.java @@ -18,7 +18,7 @@ package org.springframework.web.servlet.view.tiles2; import java.io.IOException; import java.net.URL; -import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.Set; import javax.servlet.ServletContext; @@ -26,6 +26,7 @@ import org.apache.tiles.servlet.context.ServletTilesApplicationContext; import org.springframework.core.io.Resource; import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.util.ObjectUtils; import org.springframework.web.context.support.ServletContextResourcePatternResolver; /** @@ -59,8 +60,8 @@ public class SpringWildcardServletTilesApplicationContext extends ServletTilesAp public Set getResources(String path) throws IOException { Set urlSet = null; Resource[] resources = this.resolver.getResources(path); - if (resources != null && resources.length > 0) { - urlSet = new HashSet(); + if (!ObjectUtils.isEmpty(resources)) { + urlSet = new LinkedHashSet(resources.length); for (Resource resource : resources) { urlSet.add(resource.getURL()); } diff --git a/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java b/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java index e1bc135294..0083bfd6e8 100644 --- a/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java +++ b/spring-webmvc-tiles2/src/main/java/org/springframework/web/servlet/view/tiles2/TilesConfigurer.java @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import javax.servlet.ServletContext; import javax.servlet.jsp.JspFactory; @@ -307,7 +308,10 @@ public class TilesConfigurer implements ServletContextAware, InitializingBean, D try { List result = new LinkedList(); for (String definition : definitions) { - result.addAll(applicationContext.getResources(definition)); + Set resources = applicationContext.getResources(definition); + if (resources != null) { + result.addAll(resources); + } } return result; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringWildcardServletTilesApplicationContext.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringWildcardServletTilesApplicationContext.java index ad4699657a..e79fe8d5dd 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringWildcardServletTilesApplicationContext.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringWildcardServletTilesApplicationContext.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,6 +37,7 @@ import org.springframework.web.context.support.ServletContextResourcePatternReso * Spring-specific subclass of the Tiles ServletApplicationContext. * * @author Rossen Stoyanchev + * @author Juergen Hoeller * @since 3.2 */ public class SpringWildcardServletTilesApplicationContext extends ServletApplicationContext { @@ -77,24 +78,26 @@ public class SpringWildcardServletTilesApplicationContext extends ServletApplica resources = this.resolver.getResources(path); } catch (IOException ex) { - return Collections. emptyList(); + ((ServletContext) getContext()).log("Resource retrieval failed for path: " + path, ex); + return Collections.emptyList(); } - Collection resourceList = new ArrayList(); - if (!ObjectUtils.isEmpty(resources)) { - for (Resource resource : resources) { - URL url; - try { - url = resource.getURL(); - resourceList.add(new URLApplicationResource(url.toExternalForm(), url)); - } - catch (IOException ex) { - // shouldn't happen with the kind of resources we're using - throw new IllegalArgumentException("No URL for " + resource.toString(), ex); - } + if (ObjectUtils.isEmpty(resources)) { + ((ServletContext) getContext()).log("No resources found for path pattern: " + path); + return Collections.emptyList(); + } + + Collection resourceList = new ArrayList(resources.length); + for (Resource resource : resources) { + try { + URL url = resource.getURL(); + resourceList.add(new URLApplicationResource(url.toExternalForm(), url)); + } + catch (IOException ex) { + // Shouldn't happen with the kind of resources we're using + throw new IllegalArgumentException("No URL for " + resource, ex); } } return resourceList; } } - diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/TilesConfigurer.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/TilesConfigurer.java index 377294b1c8..8e77b275b9 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/TilesConfigurer.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/TilesConfigurer.java @@ -16,6 +16,7 @@ package org.springframework.web.servlet.view.tiles3; +import java.util.Collection; import java.util.LinkedList; import java.util.List; import javax.el.ArrayELResolver; @@ -302,7 +303,10 @@ public class TilesConfigurer implements ServletContextAware, InitializingBean, D if (definitions != null) { List result = new LinkedList(); for (String definition : definitions) { - result.addAll(applicationContext.getResources(definition)); + Collection resources = applicationContext.getResources(definition); + if (resources != null) { + result.addAll(resources); + } } return result; }