@Override public FileObject resolve(FileObject location) throws FileSystemException { //TODO cache this too? return delegate.resolve(location); }
@Override public boolean supports(Class<?> type) { for(ResourceResolver resourceResolver : resourceResolvers) { if(resourceResolver.supports(type)) { return true; } } return false; }
@Override public FileObject resolve(FileObject location, String name) throws FileSystemException { //TODO cache this too? return delegate.resolve(location, name); }
@Override public boolean supports(String extension) { return delegate.supports(extension); }
protected <T> T doResolve(FileObject location, Class<T> type) throws Exception { return delegate.resolve(location, type); }
@Override public boolean supports(String extension) { for(ResourceResolver resourceResolver : resourceResolvers) { if(resourceResolver.supports(extension)) { return true; } } return false; }
@Override public FileObject resolve(FileObject location, String name) throws FileSystemException { for(ResourceResolver resourceResolver : resourceResolvers) { try { FileObject resource = resourceResolver.resolve(location, name); if(resource != null) { return resource; } } catch (FileSystemException e) { logger.warn("Resource resolution failed (resolver: " + resourceResolver + ", resource: " + location + ")", e); } } return null; } }
@Override public boolean supports(Class<?> type) { return delegate.supports(type); }
public Object getSubResource(FileObject resourceLocation, String segment, ResourceResolver resourceResolver) throws Exception { Class<?> subResourceClass = resourceResolver.resolve(resourceLocation, Class.class); if(subResourceClass == null) { logger.debug("Subresource could not be resolved"); return null; } else { return createSubResource(subResourceClass, resourceLocation, segment); } }
@Override public <T> T resolve(FileObject location, Class<T> type) { for(ResourceResolver resourceResolver : resourceResolvers) { try { if(supports(resourceResolver, type, location)) { T resource = resourceResolver.resolve(location, type); if(resource != null) { return resource; } } } catch (Exception e) { logger.warn("Resource resolution failed (resolver: " + resourceResolver + ", resource: " + location + ")", e); } } return null; }
public static boolean isSupportedResource( ResourceResolver resolver, FileObject location, String name) { String nameWithoutExtension = FilenameUtils.getBaseName(location.getName().getBaseName()); return (name == null || nameWithoutExtension.equals(name)) && resolver.supports(location.getName().getExtension()); }
@Override public <T> T resolve(FileObject location, String name, Class<T> type) throws Exception { for(ResourceResolver resourceResolver : resourceResolvers) { try { if(supports(resourceResolver, type, location)) { T resource = resourceResolver.resolve(location, name, type); if(resource != null) { return resource; } } } catch (Exception e) { logger.warn("Resource resolution failed (resolver: " + resourceResolver + ", resource: " + location + ")", e); } } return null; }
public static Resource get(FileObject location, ResourceResolver resourceResolver) throws Exception { if(!location.exists() || location.getType() != FileType.FOLDER) { throw new FileNotFolderException(location); } Resource root; Class rootClass = resourceResolver.resolve(location, Class.class); if(rootClass != null) { if (Resource.class.isAssignableFrom(rootClass)) { Constructor constructor = rootClass.getConstructor(FileObject.class, ResourceResolver.class); root = (Resource) constructor.newInstance(location, resourceResolver); } else { logger.warn(rootClass + " defined in " + location + " does not extend Root, ignoring"); root = new Root(location, resourceResolver); } } else { root = new Root(location, resourceResolver); } return root; }
@Override public ResourcePermissions getPermissions() { try { Map permissions = getResourceResolver().resolve(location, "permissions", Map.class); if(permissions != null) { Map<String, List<String>> allow = (Map<String, List<String>>) permissions.get("allow"); Map<String, List<String>> deny = (Map<String, List<String>>) permissions.get("deny"); return new ResourcePermissions(this, translatePermissions(allow), translatePermissions(deny)); } else { return getEmptyResourcePermissions(); } } catch (Exception e) { logger.error("Could not load permissions for " + location, e); return getEmptyResourcePermissions(); } }