This change splits out resource transformation out from the ResourceResolverChain so that chain is focused entirely on resource resolution (as its name suggests). The invocation of transformers is left as a separate step, it uses a different (recursive) algorithm in any case and iterates over a different set of objects. Also ResourceResolverChain is now limited strictly to methods that a ResourceResolver should be able to use to delegate to remaining resolvers. Furthermore, ResourceResolverChain now maintains an internal index of the "current" resolver so that resolvers don't have to pass the chain when invoking it much like a (Servlet API) FilterChain works. If the last resolver calls the chain again, a null value is returned.master
parent
0e58125b15
commit
3c48b42106
18 changed files with 221 additions and 150 deletions
@ -1,50 +0,0 @@ |
||||
/* |
||||
* Copyright 2002-2013 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.web.servlet.resource; |
||||
|
||||
import java.util.List; |
||||
|
||||
import javax.servlet.http.HttpServletRequest; |
||||
|
||||
import org.springframework.core.io.Resource; |
||||
|
||||
|
||||
/** |
||||
* |
||||
* @author Jeremy Grelle |
||||
* @since 4.0 |
||||
*/ |
||||
public abstract class AbstractResourceResolver implements ResourceResolver { |
||||
|
||||
|
||||
@Override |
||||
public final Resource resolve(HttpServletRequest request, String requestPath, |
||||
List<Resource> locations, ResourceResolverChain chain) { |
||||
|
||||
Resource resource = chain.next(this).resolve(request, requestPath, locations, chain); |
||||
return resolveInternal(request, requestPath, locations, chain, resource); |
||||
} |
||||
|
||||
protected abstract Resource resolveInternal(HttpServletRequest request, String path, |
||||
List<Resource> locations, ResourceResolverChain chain, Resource resolved); |
||||
|
||||
@Override |
||||
public String resolveUrl(String resourcePath, List<Resource> locations, ResourceResolverChain chain) { |
||||
return chain.next(this).resolveUrl(resourcePath, locations, chain); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue