From b3d9cf0f82fe5293d16577c0ead4b92591b1df20 Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 25 May 2018 15:00:50 +0000 Subject: [PATCH] CcmNG: Implementation of unlock method for WebDAV access to theme files git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5451 8810af33-2d31-482b-a856-94f89814c4df --- .../libreccm/theming/webdav/ThemeFiles.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ccm-core/src/main/java/org/libreccm/theming/webdav/ThemeFiles.java b/ccm-core/src/main/java/org/libreccm/theming/webdav/ThemeFiles.java index e0f5f5517..0fedd1455 100644 --- a/ccm-core/src/main/java/org/libreccm/theming/webdav/ThemeFiles.java +++ b/ccm-core/src/main/java/org/libreccm/theming/webdav/ThemeFiles.java @@ -42,6 +42,7 @@ import org.libreccm.theming.ThemeVersion; import org.libreccm.theming.Themes; import org.libreccm.webdav.ResponseStatus; import org.libreccm.webdav.methods.LOCK; +import org.libreccm.webdav.methods.UNLOCK; import org.libreccm.webdav.xml.elements.ActiveLock; import org.libreccm.webdav.xml.elements.Collection; import org.libreccm.webdav.xml.elements.Depth; @@ -66,6 +67,7 @@ import java.util.stream.Collectors; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.HeaderParam; import javax.ws.rs.OPTIONS; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; @@ -131,7 +133,7 @@ public class ThemeFiles { @LOCK @Path("/{path}") public Prop lock(@PathParam("theme") - final String theme, + final String theme, @PathParam("path") final String path, final LockInfo lockInfo) { @@ -139,7 +141,7 @@ public class ThemeFiles { final String lockedPath = String.format("%s/path", theme, path); - + try { final String lockToken = lockManager.lockFile(lockedPath); @@ -227,6 +229,20 @@ public class ThemeFiles { .build(); } + @UNLOCK + @Path("/{path}") + public Response unlock( + @PathParam("theme") + final String theme, + @PathParam("path") + final String path, + @HeaderParam("Lock-Tocken") final String lockToken) { + + lockManager.unlock(lockToken); + + return Response.status(Response.Status.NO_CONTENT).build(); + } + private WebDavResponse buildWebDavResponse(final ThemeFileInfo fileInfo, final UriInfo uriInfo) {