@Override public FileObject resolve(FileObject location) throws FileSystemException { //TODO cache this too? return delegate.resolve(location); }
@Override public FileObject resolve(FileObject location, String name) throws FileSystemException { //TODO cache this too? return delegate.resolve(location, name); }
protected <T> T doResolve(FileObject location, Class<T> type) throws Exception { return delegate.resolve(location, type); }
@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; } }
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; }
@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(); } }