package com.kdcloud.server.rest.resource; import org.restlet.data.Form; import org.restlet.data.Status; import org.restlet.representation.Representation; import org.restlet.resource.ResourceException; import com.kdcloud.lib.domain.Metadata; import com.kdcloud.lib.rest.api.MetadataResource; import com.kdcloud.server.entity.Describable; public class MetadataServerResource extends KDServerResource implements MetadataResource { Describable entity; @Override public void beforeHandle() { super.beforeHandle(); entity = (Describable) getEntityMapper().findByUUID(getResourceIdentifier()); if (entity == null) throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND); } @Override public Metadata getMetadata() { return entity.getMetadata(); } @Override public void editMetadata(Representation representation) { if (!user.isOwner(entity)) throw new ResourceException(Status.CLIENT_ERROR_FORBIDDEN); Metadata newMetadata = unmarshal(Metadata.class, representation); entity.getMetadata().update(newMetadata); getEntityMapper().save(entity); } @Override public void editMetadata(Form form) { if (!user.isOwner(entity)) throw new ResourceException(Status.CLIENT_ERROR_FORBIDDEN); Metadata newMetadata = new Metadata( form.getFirstValue("name"), form.getFirstValue("owner"), form.getFirstValue("company"), form.getFirstValue("description") ); entity.getMetadata().update(newMetadata); getEntityMapper().save(entity); } }