diff --git a/pom.xml b/pom.xml
index ceec7e4..ba5173e 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..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;
/**
@@ -16,18 +17,42 @@ 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);
+ }
+
+
+ /**
+ * 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/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);
+ }
}
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..d63e64d
--- /dev/null
+++ b/src/main/java/com/inteligr8/alfresco/activiti/model/PermissionLight.java
@@ -0,0 +1,73 @@
+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;
+ @JsonProperty
+ private Long personId;
+ @JsonProperty
+ private Long groupId;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public PermissionLight withId(String id) {
+ this.setId(id);
+ return this;
+ }
+
+ public PermissionLevel getPermission() {
+ return permission;
+ }
+
+ 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
new file mode 100644
index 0000000..3880e4b
--- /dev/null
+++ b/src/main/java/com/inteligr8/alfresco/activiti/model/ShareInfoRequest.java
@@ -0,0 +1,47 @@
+package com.inteligr8.alfresco.activiti.model;
+
+import java.util.LinkedList;
+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 = new LinkedList<>();
+ @JsonProperty
+ private List removed = new LinkedList<>();
+ @JsonProperty
+ 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;
+ }
+
+}
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;
+ }
+
+}