001package co.codewizards.cloudstore.rest.client.request; 002 003import static java.util.Objects.*; 004 005import java.util.Date; 006 007import javax.ws.rs.client.WebTarget; 008import javax.ws.rs.core.Response; 009 010import co.codewizards.cloudstore.core.dto.DateTime; 011 012public class MakeSymlink extends VoidRequest { 013 014 protected final String repositoryName; 015 protected final String path; 016 protected final String target; 017 protected final Date lastModified; 018 019 public MakeSymlink(final String repositoryName, final String path, final String target, final Date lastModified) { 020 this.repositoryName = requireNonNull(repositoryName, "repositoryName"); 021 this.path = requireNonNull(path, "path"); 022 this.target = requireNonNull(target, "target"); 023 this.lastModified = lastModified; 024 } 025 026 @Override 027 protected Response _execute() { 028 final WebTarget webTarget = createMakeSymlinkWebTarget(); 029 return assignCredentials(webTarget.request()).post(null); 030 } 031 032 protected WebTarget createMakeSymlinkWebTarget() { 033 WebTarget webTarget = createWebTarget("_makeSymlink", urlEncode(repositoryName), encodePath(path)) 034 .queryParam("target", encodePath(target)); 035 036 if (lastModified != null) 037 webTarget = webTarget.queryParam("lastModified", new DateTime(lastModified)); 038 039 return webTarget; 040 } 041}