@Override boolean isRoot(DelegatedResourceSnapshot ctx) { return this.child.isRoot(); }
protected final boolean isRoot() { return resolveAs(Resource.class).isRoot(); }
private String calculateResourcePath(Resource resource, String desiredPath) throws EndpointNotFoundException { if(resource.isRoot()) { throw new IllegalStateException("Cannot get path for root resource"); } Resource parent=this.resourceRepository.resourceById(resource.parentId(),Resource.class); if(parent==null) { throw new IllegalStateException("Could not load resource '"+resource.parentId()+"' from the repository"); } String result= parent instanceof Container? generatePathForMember(resource,(Container)parent,desiredPath): null; if(result==null) { result = generatePathForAttachment(resource,parent); if(result==null) { throw new IllegalStateException("Could not determine path for resource '"+resource.id()+"' with parent '"+parent.id()+"'"); } } return result; }
Capabilities endpointCapabilities(Endpoint endpoint) { MutableCapabilities result=new MutableCapabilities(); Resource resource = resolveResource(endpoint); ResourceTemplate template=resourceTemplate(resource); Class<? extends ResourceHandler> handlerClass = template.handlerClass(); result.setQueryable(Queryable.class.isAssignableFrom(handlerClass)); result.setModifiable(Modifiable.class.isAssignableFrom(handlerClass)); result.setDeletable(Deletable.class.isAssignableFrom(handlerClass) && !resource.isRoot()); // TODO: Analyze how to provide patch support result.setPatchable(false); TemplateIntrospector introspector = TemplateIntrospector.newInstance(template); result.setFactory(introspector.isContainer()); return result; }