@Override public void visitResource(Resource resource) { for(DelegatedAttachmentSnapshot deleted:PersistentResourceState.this.deletedAttachments.values()) { Attachment attachment = resource.findAttachment(deleted.resource().resourceId()); resource.detach(attachment); } for(DelegatedAttachmentSnapshot attachment:PersistentResourceState.this.newAttachments.values()) { DelegatedResourceSnapshot attachedResource = attachment.resource(); Resource attach = resource.attach(attachment.id(), attachedResource.resourceId()); attachedResource.setDelegate(attach); } }
private String generatePathForAttachment(Resource child, Resource parent) throws EndpointNotFoundException { Attachment attachment=parent.findAttachment(child.id()); if(attachment==null) { return null; } Endpoint endpoint=getResourceEndpoint(parent.id()); ResourceTemplate parentTemplate=this.templateManagementService.templateOfId(parent.id().templateId()); AttachedTemplate attachedTemplate = parentTemplate.attachedTemplate(attachment.id()); return PathBuilder. create(). addSegment(endpoint.path()). addSegment(attachedTemplate.path()). addSegment(attachment.version()>0?attachment.version():null). build(); }
@Override public void execute(ResourceRepository sut) { Resource result1 = sut.resourceOfId(resourceId); debug("Retrieving resource {%s}: %s",resourceId,result1); Container result2 = sut.containerOfId(containerId); debug("Retrieving container {%s}: %s",containerId,result2); Resource result3 = sut.resourceById(memberId,Resource.class); debug("Retrieving member resource {%s}: %s",memberId,result3); sut.remove(result2); debug("Deleted resource {%s}",result2.id()); Resource result4 = sut.resourceById(attachmentId,Resource.class); debug("Retrieving attached resource {%s}: %s",attachmentId,result4); Attachment attachment = result1.findAttachment(result4.id()); debug("Retrieving attachment {%s}: %s",result4.id(),attachment); result1.detach(attachment); debug("Detached resource {%s}",attachment.id()); sut.remove(result4); debug("Deleted resource {%s}",result4.id()); } }