From ed9fe6dfc5ce93f2fe2d2a166f4633abfcf54d1e Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Tue, 3 May 2022 13:07:00 -0400 Subject: [PATCH 1/3] using interface default impl --- pom.xml | 2 -- .../alfresco/activiti/ApsPublicRestApi.java | 30 ++++++++++++++----- .../activiti/ApsPublicRestCxfApi.java | 4 ++- .../activiti/ApsPublicRestJerseyApi.java | 4 ++- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index c054f9f..3fafeef 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,6 @@ 8 lines,vars,source - aps1 2.35 diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java index a1f43d1..9c69cb9 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestApi.java @@ -16,18 +16,34 @@ import com.inteligr8.alfresco.activiti.api.TasksApi; */ public interface ApsPublicRestApi { - AdminApi getAdminApi(); + T getApi(Class apiClass); - AppDefinitionsApi getAppDefinitionsApi(); + default AdminApi getAdminApi() { + return this.getApi(AdminApi.class); + } - AppVersionApi getAppVersionApi(); + default AppDefinitionsApi getAppDefinitionsApi() { + return this.getApi(AppDefinitionsApi.class); + } - ModelsApi getModelsApi(); + default AppVersionApi getAppVersionApi() { + return this.getApi(AppVersionApi.class); + } - ProcessInstancesApi getProcessInstancesApi(); + default ModelsApi getModelsApi() { + return this.getApi(ModelsApi.class); + } - ProfileApi getProfileApi(); + default ProcessInstancesApi getProcessInstancesApi() { + return this.getApi(ProcessInstancesApi.class); + } - TasksApi getTasksApi(); + default ProfileApi getProfileApi() { + return this.getApi(ProfileApi.class); + } + + default TasksApi getTasksApi() { + return this.getApi(TasksApi.class); + } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestCxfApi.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestCxfApi.java index 54994b0..0dea71d 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestCxfApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestCxfApi.java @@ -11,6 +11,8 @@ import com.inteligr8.alfresco.activiti.api.AppDefinitionsCxfApi; */ public interface ApsPublicRestCxfApi extends ApsPublicRestApi { - AppDefinitionsCxfApi getAppDefinitionsCxfApi(); + default AppDefinitionsCxfApi getAppDefinitionsCxfApi() { + return this.getApi(AppDefinitionsCxfApi.class); + } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestJerseyApi.java b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestJerseyApi.java index 66bc8b9..eb922ee 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestJerseyApi.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/ApsPublicRestJerseyApi.java @@ -11,6 +11,8 @@ import com.inteligr8.alfresco.activiti.api.AppDefinitionsJerseyApi; */ public interface ApsPublicRestJerseyApi extends ApsPublicRestApi { - AppDefinitionsJerseyApi getAppDefinitionsJerseyApi(); + default AppDefinitionsJerseyApi getAppDefinitionsJerseyApi() { + return this.getApi(AppDefinitionsJerseyApi.class); + } } From c38b82f75b29c479b4ce8aeb4f279c200fc1798f Mon Sep 17 00:00:00 2001 From: Brian Long Date: Tue, 3 May 2022 19:03:30 +0100 Subject: [PATCH 2/3] 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; + } + +} From ef89e478cb3fc3ffb08a78380c7c2b3b3f21ce20 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Tue, 3 May 2022 22:10:27 +0100 Subject: [PATCH 3/3] fixed model for share-info --- .../activiti/model/PermissionLight.java | 41 +++++++++++++++++++ .../activiti/model/ShareInfoRequest.java | 33 +++++++++++++-- 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java b/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java index a72dd62..d63e64d 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java @@ -12,6 +12,10 @@ public class PermissionLight { private String id; @JsonProperty private PermissionLevel permission; + @JsonProperty + private Long personId; + @JsonProperty + private Long groupId; public String getId() { return id; @@ -21,6 +25,11 @@ public class PermissionLight { this.id = id; } + public PermissionLight withId(String id) { + this.setId(id); + return this; + } + public PermissionLevel getPermission() { return permission; } @@ -28,5 +37,37 @@ public class PermissionLight { public void setPermission(PermissionLevel permission) { this.permission = permission; } + + public PermissionLight withPermission(PermissionLevel permission) { + this.setPermission(permission); + return this; + } + + public Long getPersonId() { + return personId; + } + + public void setPersonId(Long personId) { + this.personId = personId; + } + + public PermissionLight withPersonId(Long personId) { + this.setPersonId(personId); + return this; + } + + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + public PermissionLight withGroupId(Long groupId) { + this.setGroupId(groupId); + return this; + } + } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java b/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java index 9e727e1..3880e4b 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java @@ -1,5 +1,6 @@ package com.inteligr8.alfresco.activiti.model; +import java.util.LinkedList; import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -11,10 +12,36 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class ShareInfoRequest { @JsonProperty - private List added; + private List added = new LinkedList<>(); @JsonProperty - private List removed; + private List removed = new LinkedList<>(); @JsonProperty - private List updated; + private List updated = new LinkedList<>(); + + + + public List getAdded() { + return added; + } + + public void setAdded(List added) { + this.added = added; + } + + public List getRemoved() { + return removed; + } + + public void setRemoved(List removed) { + this.removed = removed; + } + + public List getUpdated() { + return updated; + } + + public void setUpdated(List updated) { + this.updated = updated; + } }