001package co.codewizards.cloudstore.rest.server.service; 002 003import javax.ws.rs.Consumes; 004import javax.ws.rs.POST; 005import javax.ws.rs.Path; 006import javax.ws.rs.PathParam; 007import javax.ws.rs.Produces; 008import javax.ws.rs.QueryParam; 009import javax.ws.rs.core.MediaType; 010 011import org.slf4j.Logger; 012import org.slf4j.LoggerFactory; 013 014import co.codewizards.cloudstore.core.dto.DateTime; 015import co.codewizards.cloudstore.core.repo.transport.RepoTransport; 016import co.codewizards.cloudstore.core.util.AssertUtil; 017 018@Path("_makeSymlink/{repositoryName}") 019@Consumes(MediaType.APPLICATION_XML) 020@Produces(MediaType.APPLICATION_XML) 021public class MakeSymlinkService extends AbstractServiceWithRepoToRepoAuth 022{ 023 private static final Logger logger = LoggerFactory.getLogger(MakeSymlinkService.class); 024 025 { 026 logger.debug("<init>: created new instance"); 027 } 028 029 private @QueryParam("target") String target; 030 031 private @QueryParam("lastModified") DateTime lastModified; 032 033 @POST 034 public void makeSymlink() 035 { 036 makeSymlink(""); 037 } 038 039 @POST 040 @Path("{path:.*}") 041 public void makeSymlink(@PathParam("path") String path) 042 { 043 AssertUtil.assertNotNull(path, "path"); 044 AssertUtil.assertNotNull(target, "target"); 045 try (final RepoTransport repoTransport = authenticateAndCreateLocalRepoTransport();) { 046 path = repoTransport.unprefixPath(path); 047 repoTransport.makeSymlink(path, target, lastModified == null ? null : lastModified.toDate()); 048 } 049 } 050}