From c38b82f75b29c479b4ce8aeb4f279c200fc1798f Mon Sep 17 00:00:00 2001 From: Brian Long Date: Tue, 3 May 2022 19:03:30 +0100 Subject: [PATCH] added undocumented ShareApi --- .../alfresco/activiti/ApsPublicRestApi.java | 9 +++++ .../alfresco/activiti/api/ShareApi.java | 37 +++++++++++++++++++ .../alfresco/activiti/model/Permission.java | 33 +++++++++++++++++ .../activiti/model/PermissionLevel.java | 13 +++++++ .../activiti/model/PermissionLight.java | 32 ++++++++++++++++ .../activiti/model/ShareInfoRequest.java | 20 ++++++++++ .../activiti/model/SharePermission.java | 34 +++++++++++++++++ 7 files changed, 178 insertions(+) create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/Permission.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLevel.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java create mode 100644 src/main/java/com/inteligr8/alfresco/activiti/model/SharePermission.java diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java index 9c69cb9..60e5b27 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java @@ -6,6 +6,7 @@ import com.inteligr8.alfresco.activiti.api.AppVersionApi; import com.inteligr8.alfresco.activiti.api.ModelsApi; import com.inteligr8.alfresco.activiti.api.ProcessInstancesApi; import com.inteligr8.alfresco.activiti.api.ProfileApi; +import com.inteligr8.alfresco.activiti.api.ShareApi; import com.inteligr8.alfresco.activiti.api.TasksApi; /** @@ -45,5 +46,13 @@ public interface ApsPublicRestApi { default TasksApi getTasksApi() { return this.getApi(TasksApi.class); } + + + /** + * The following are not part of the official open source or enterprise APIs + */ + default ShareApi getShareApi() { + return this.getApi(ShareApi.class); + } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java b/src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java new file mode 100644 index 0000000..e30d436 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/api/ShareApi.java @@ -0,0 +1,37 @@ + +package com.inteligr8.alfresco.activiti.api; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import com.inteligr8.alfresco.activiti.model.ResultList; +import com.inteligr8.alfresco.activiti.model.ShareInfoRequest; +import com.inteligr8.alfresco.activiti.model.SharePermission; + +/** + * This is an undocumented API. + * + * @author brian@inteligr8.com + */ +@Path("/app/rest/models") +public interface ShareApi { + + @GET + @Path("/{modelId}/share-info") + @Produces({ MediaType.APPLICATION_JSON }) + public ResultList getShareInfo( + @PathParam("modelId") String modelId); + + @PUT + @Path("/{modelId}/share-info") + @Consumes({ MediaType.APPLICATION_JSON }) + public void setShareInfo( + @PathParam("modelId") String modelId, + ShareInfoRequest request); + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/Permission.java b/src/main/java/com/inteligr8/alfresco/activiti/model/Permission.java new file mode 100644 index 0000000..e8b30e8 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/Permission.java @@ -0,0 +1,33 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Permission extends PermissionLight { + + @JsonProperty + private UserLight person; + @JsonProperty + private GroupLight group; + + public UserLight getPerson() { + return person; + } + + public void setPerson(UserLight person) { + this.person = person; + } + + public GroupLight getGroup() { + return group; + } + + public void setGroup(GroupLight group) { + this.group = group; + } + + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLevel.java b/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLevel.java new file mode 100644 index 0000000..b5b3bb5 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLevel.java @@ -0,0 +1,13 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public enum PermissionLevel { + + @JsonProperty("write") + Write, + + @JsonProperty("read") + Read + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java b/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java new file mode 100644 index 0000000..a72dd62 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java @@ -0,0 +1,32 @@ +package com.inteligr8.alfresco.activiti.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PermissionLight { + + @JsonProperty + private String id; + @JsonProperty + private PermissionLevel permission; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public PermissionLevel getPermission() { + return permission; + } + + public void setPermission(PermissionLevel permission) { + this.permission = permission; + } + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java new file mode 100644 index 0000000..9e727e1 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java @@ -0,0 +1,20 @@ +package com.inteligr8.alfresco.activiti.model; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ShareInfoRequest { + + @JsonProperty + private List added; + @JsonProperty + private List removed; + @JsonProperty + private List updated; + +} diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/SharePermission.java b/src/main/java/com/inteligr8/alfresco/activiti/model/SharePermission.java new file mode 100644 index 0000000..0b384f8 --- /dev/null +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/SharePermission.java @@ -0,0 +1,34 @@ +package com.inteligr8.alfresco.activiti.model; + +import java.time.OffsetDateTime; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SharePermission extends Permission { + + @JsonProperty + private OffsetDateTime shareDate; + @JsonProperty + private Long sharedBy; + + public OffsetDateTime getShareDate() { + return shareDate; + } + + public void setShareDate(OffsetDateTime shareDate) { + this.shareDate = shareDate; + } + + public Long getSharedBy() { + return sharedBy; + } + + public void setSharedBy(Long sharedBy) { + this.sharedBy = sharedBy; + } + +}