DefaultResourceResolver.java
package fr.sii.ogham.core.resource.resolver;
import fr.sii.ogham.core.exception.resource.ResourceResolutionException;
import fr.sii.ogham.core.resource.Resource;
import fr.sii.ogham.core.resource.path.ResolvedPath;
import fr.sii.ogham.core.resource.path.ResolvedResourcePath;
import fr.sii.ogham.core.resource.path.ResourcePath;
/**
* Decorates an {@link AbstractPrefixedLookupPathResolver} to manage a default
* case (no lookup found).
*
* @author Cyril Dejonghe
*
*/
public class DefaultResourceResolver implements DelegateResourceResolver {
/**
* The delegate resolver that will do the real resource resolution
*/
private AbstractPrefixedLookupPathResolver delegate;
/**
* Initialize the resolver with the mandatory delegate.
*
* @param delegate
* the resolver that will do the real resource resolution
*/
public DefaultResourceResolver(AbstractPrefixedLookupPathResolver delegate) {
super();
this.delegate = delegate;
}
@Override
public ResolvedPath resolve(ResourcePath path) {
ResolvedPath result = delegate.resolve(path);
if (result == null) {
result = new ResolvedResourcePath(path, null, path.getOriginalPath());
}
return result;
}
@Override
public boolean supports(ResourcePath path) {
return true;
}
@Override
public Resource getResource(ResourcePath path) throws ResourceResolutionException {
return delegate.getResource(resolve(path));
}
@Override
public ResourceResolver getActualResourceResolver() {
return delegate instanceof DelegateResourceResolver ? ((DelegateResourceResolver) delegate).getActualResourceResolver() : delegate;
}
}