DefaultResourceResolver.java

  1. package fr.sii.ogham.core.resource.resolver;

  2. import fr.sii.ogham.core.exception.resource.ResourceResolutionException;
  3. import fr.sii.ogham.core.resource.Resource;
  4. import fr.sii.ogham.core.resource.path.ResolvedPath;
  5. import fr.sii.ogham.core.resource.path.ResolvedResourcePath;
  6. import fr.sii.ogham.core.resource.path.ResourcePath;

  7. /**
  8.  * Decorates an {@link AbstractPrefixedLookupPathResolver} to manage a default
  9.  * case (no lookup found).
  10.  *
  11.  * @author Cyril Dejonghe
  12.  *
  13.  */
  14. public class DefaultResourceResolver implements DelegateResourceResolver {
  15.     /**
  16.      * The delegate resolver that will do the real resource resolution
  17.      */
  18.     private AbstractPrefixedLookupPathResolver delegate;

  19.     /**
  20.      * Initialize the resolver with the mandatory delegate.
  21.      *
  22.      * @param delegate
  23.      *            the resolver that will do the real resource resolution
  24.      */
  25.     public DefaultResourceResolver(AbstractPrefixedLookupPathResolver delegate) {
  26.         super();
  27.         this.delegate = delegate;
  28.     }

  29.     @Override
  30.     public ResolvedPath resolve(ResourcePath path) {
  31.         ResolvedPath result = delegate.resolve(path);
  32.         if (result == null) {
  33.             result = new ResolvedResourcePath(path, null, path.getOriginalPath());
  34.         }
  35.         return result;
  36.     }

  37.     @Override
  38.     public boolean supports(ResourcePath path) {
  39.         return true;
  40.     }

  41.     @Override
  42.     public Resource getResource(ResourcePath path) throws ResourceResolutionException {
  43.         return delegate.getResource(resolve(path));
  44.     }

  45.     @Override
  46.     public ResourceResolver getActualResourceResolver() {
  47.         return delegate instanceof DelegateResourceResolver ? ((DelegateResourceResolver) delegate).getActualResourceResolver() : delegate;
  48.     }
  49. }