From e93028c30e8be9731a914507fdc86867fcfa67cc Mon Sep 17 00:00:00 2001 From: dhrn <14145706+dhrn@users.noreply.github.com> Date: Tue, 2 Mar 2021 15:23:35 +0530 Subject: [PATCH] [REPO-5552] expose aspect/type end points (#117) * [REPO-5552] TAS rest API * * docs update --- .../org/alfresco/rest/core/RestWrapper.java | 6 + .../rest/model/RestAbstractClassModel.java | 158 ++++++++++++++++++ .../alfresco/rest/model/RestAspectModel.java | 5 + .../rest/model/RestAspectsCollection.java | 7 + .../RestClassAssociationDefinitionModel.java | 62 +++++++ .../rest/model/RestClassAssociationModel.java | 86 ++++++++++ .../alfresco/rest/model/RestClassModel.java | 62 +++++++ .../model/RestConstraintDefinitionModel.java | 62 +++++++ .../model/RestPropertyDefinitionModel.java | 117 +++++++++++++ .../alfresco/rest/model/RestTypeModel.java | 5 + .../rest/model/RestTypesCollection.java | 7 + .../rest/requests/modelAPI/RestModelAPI.java | 71 ++++++++ 12 files changed, 648 insertions(+) create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAbstractClassModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectsCollection.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationDefinitionModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestConstraintDefinitionModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestPropertyDefinitionModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypeModel.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypesCollection.java create mode 100644 packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/requests/modelAPI/RestModelAPI.java diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/core/RestWrapper.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/core/RestWrapper.java index 9088bcce42..c9f3caf786 100644 --- a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/core/RestWrapper.java +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/core/RestWrapper.java @@ -36,6 +36,7 @@ import org.alfresco.rest.requests.authAPI.RestAuthAPI; import org.alfresco.rest.requests.cmisAPI.RestCmisAPI; import org.alfresco.rest.requests.coreAPI.RestCoreAPI; import org.alfresco.rest.requests.discoveryAPI.RestDiscoveryAPI; +import org.alfresco.rest.requests.modelAPI.RestModelAPI; import org.alfresco.rest.requests.privateAPI.RestPrivateAPI; import org.alfresco.rest.requests.search.SearchAPI; import org.alfresco.rest.requests.search.SearchSQLAPI; @@ -932,6 +933,11 @@ public class RestWrapper extends DSLWrapper return new RestAuthAPI(this); } + public RestModelAPI withModelAPI() + { + return new RestModelAPI(this); + } + public SearchAPI withSearchAPI() { return new SearchAPI(this); diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAbstractClassModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAbstractClassModel.java new file mode 100644 index 0000000000..6baaccbba0 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAbstractClassModel.java @@ -0,0 +1,158 @@ +package org.alfresco.rest.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import org.alfresco.rest.core.IRestModel; +import org.alfresco.rest.core.assertion.ModelAssertion; +import org.alfresco.utility.model.TestModel; + +import java.util.List; + +public class RestAbstractClassModel extends TestModel implements IRestModel +{ + @JsonProperty(value = "entry") + RestAbstractClassModel model; + + @Override + public RestAbstractClassModel onModel() + { + return model; + } + + public String id; + public String title; + public String description; + public String parentId; + public Boolean isContainer = null; + public Boolean isArchive = null; + public Boolean includedInSupertypeQuery = null; + public List mandatoryAspects = null; + public List associations = null; + public List properties = null; + + @JsonProperty(value = "model") + public RestClassModel modelInfo; + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public String getParentId() + { + return parentId; + } + + public void setParentId(String parentId) + { + this.parentId = parentId; + } + + public Boolean getContainer() + { + return isContainer; + } + + public void setContainer(Boolean container) + { + isContainer = container; + } + + public Boolean getArchive() + { + return isArchive; + } + + public void setArchive(Boolean archive) + { + isArchive = archive; + } + + public Boolean getIncludedInSupertypeQuery() + { + return includedInSupertypeQuery; + } + + public void setIncludedInSupertypeQuery(Boolean includedInSupertypeQuery) + { + this.includedInSupertypeQuery = includedInSupertypeQuery; + } + + public List getMandatoryAspects() + { + return mandatoryAspects; + } + + public void setMandatoryAspects(List mandatoryAspects) + { + this.mandatoryAspects = mandatoryAspects; + } + + public List getAssociations() + { + return associations; + } + + public void setAssociations(List associations) + { + this.associations = associations; + } + + public List getProperties() { + return properties; + } + + public void setProperties(List properties) + { + this.properties = properties; + } + + public RestClassModel getModelInfo() + { + return modelInfo; + } + + public void setModelInfo(RestClassModel modelInfo) + { + this.modelInfo = modelInfo; + } + + /** + * DSL for assertion on this rest model + * @return + */ + @Override + public ModelAssertion assertThat() + { + return new ModelAssertion(this); + } + + @Override + public ModelAssertion and() + { + return assertThat(); + } +} \ No newline at end of file diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectModel.java new file mode 100644 index 0000000000..7996552e91 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectModel.java @@ -0,0 +1,5 @@ +package org.alfresco.rest.model; + +public class RestAspectModel extends RestAbstractClassModel +{ +} diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectsCollection.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectsCollection.java new file mode 100644 index 0000000000..9e3b64e820 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestAspectsCollection.java @@ -0,0 +1,7 @@ +package org.alfresco.rest.model; + +import org.alfresco.rest.core.RestModels; + +public class RestAspectsCollection extends RestModels +{ +} diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationDefinitionModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationDefinitionModel.java new file mode 100644 index 0000000000..896e9bbc20 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationDefinitionModel.java @@ -0,0 +1,62 @@ +package org.alfresco.rest.model; + +import org.alfresco.utility.model.TestModel; + +public class RestClassAssociationDefinitionModel extends TestModel +{ + public String role = null; + public String cls = null; + public Boolean isMany = null; + public Boolean isMandatory = null; + public Boolean isMandatoryEnforced = null; + + public String getRole() + { + return role; + } + + public void setRole(String role) + { + this.role = role; + } + + public String getCls() + { + return cls; + } + + public void setCls(String cls) + { + this.cls = cls; + } + + public Boolean getMany() + { + return isMany; + } + + public void setMany(Boolean many) + { + isMany = many; + } + + public Boolean getMandatory() + { + return isMandatory; + } + + public void setMandatory(Boolean mandatory) + { + isMandatory = mandatory; + } + + public Boolean getMandatoryEnforced() + { + return isMandatoryEnforced; + } + + public void setMandatoryEnforced(Boolean mandatoryEnforced) + { + isMandatoryEnforced = mandatoryEnforced; + } +} diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationModel.java new file mode 100644 index 0000000000..fa28517e4e --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassAssociationModel.java @@ -0,0 +1,86 @@ +package org.alfresco.rest.model; + +import org.alfresco.utility.model.TestModel; + +public class RestClassAssociationModel extends TestModel +{ + public String id; + public String title; + public String description; + public Boolean isChild; + public Boolean isProtected; + public RestClassAssociationDefinitionModel source = null; + public RestClassAssociationDefinitionModel target = null; + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getDescription() + { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public Boolean getChild() + { + return isChild; + } + + public void setIsChild(Boolean isChild) + { + this.isChild = isChild; + } + + public Boolean getIsProtected() + { + return isProtected; + } + + public void setIsProtected(Boolean isProtected) + { + this.isProtected = isProtected; + } + + public RestClassAssociationDefinitionModel getSource() + { + return source; + } + + public void setSource(RestClassAssociationDefinitionModel source) + { + this.source = source; + } + + public RestClassAssociationDefinitionModel getTarget() + { + return target; + } + + public void setTarget(RestClassAssociationDefinitionModel target) + { + this.target = target; + } +} + + diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassModel.java new file mode 100644 index 0000000000..8ae8382990 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestClassModel.java @@ -0,0 +1,62 @@ +package org.alfresco.rest.model; + +import org.alfresco.utility.model.TestModel; + +public class RestClassModel extends TestModel +{ + public String id; + public String author; + public String description; + public String namespaceUri; + public String namespacePrefix; + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getAuthor() + { + return author; + } + + public void setAuthor(String author) + { + this.author = author; + } + + public String getDescription() + { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public String getNamespaceUri() + { + return namespaceUri; + } + + public void setNamespaceUri(String namespaceUri) + { + this.namespaceUri = namespaceUri; + } + + public String getNamespacePrefix() + { + return namespacePrefix; + } + + public void setNamespacePrefix(String namespacePrefix) + { + this.namespacePrefix = namespacePrefix; + } +} \ No newline at end of file diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestConstraintDefinitionModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestConstraintDefinitionModel.java new file mode 100644 index 0000000000..336e2727a5 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestConstraintDefinitionModel.java @@ -0,0 +1,62 @@ +package org.alfresco.rest.model; + +import java.util.Map; + +public class RestConstraintDefinitionModel +{ + private String id; + private String type; + private String title; + private String description; + private Map parameters; + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getType() + { + return type; + } + + public void setType(String type) + { + this.type = type; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getDescription() + { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public Map getParameters() + { + return parameters; + } + + public void setParameters(Map parameters) + { + this.parameters = parameters; + } +} \ No newline at end of file diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestPropertyDefinitionModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestPropertyDefinitionModel.java new file mode 100644 index 0000000000..69c260b89a --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestPropertyDefinitionModel.java @@ -0,0 +1,117 @@ +package org.alfresco.rest.model; + +import java.util.List; + +public class RestPropertyDefinitionModel +{ + private String id; + private String title; + private String description; + private String defaultValue; + private String dataType; + private Boolean isMultiValued; + private Boolean isMandatory; + private Boolean isMandatoryEnforced; + private Boolean isProtected; + private List constraints; + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + + public String getTitle() + { + return title; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getDescription() + { + return description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public String getDefaultValue() + { + return defaultValue; + } + + public void setDefaultValue(String defaultValue) + { + this.defaultValue = defaultValue; + } + + public String getDataType() + { + return dataType; + } + + public void setDataType(String dataType) + { + this.dataType = dataType; + } + + public boolean getIsProtected() + { + return isProtected; + } + + public void setIsProtected(boolean isProtected) + { + this.isProtected = isProtected; + } + + public List getConstraints() + { + return constraints; + } + + public void setConstraints(List constraints) + { + this.constraints = constraints; + } + + public boolean getIsMultiValued() + { + return isMultiValued; + } + + public void setIsMultiValued(boolean isMultiValued) + { + this.isMultiValued = isMultiValued; + } + + public boolean getIsMandatory() + { + return isMandatory; + } + + public void setIsMandatory(boolean isMandatory) + { + this.isMandatory = isMandatory; + } + + public boolean getIsMandatoryEnforced() + { + return isMandatoryEnforced; + } + + public void setIsMandatoryEnforced(boolean isMandatoryEnforced) + { + this.isMandatoryEnforced = isMandatoryEnforced; + } +} \ No newline at end of file diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypeModel.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypeModel.java new file mode 100644 index 0000000000..d92f9936d6 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypeModel.java @@ -0,0 +1,5 @@ +package org.alfresco.rest.model; + +public class RestTypeModel extends RestAbstractClassModel +{ +} diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypesCollection.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypesCollection.java new file mode 100644 index 0000000000..0eb3a4178b --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/model/RestTypesCollection.java @@ -0,0 +1,7 @@ +package org.alfresco.rest.model; + +import org.alfresco.rest.core.RestModels; + +public class RestTypesCollection extends RestModels +{ +} diff --git a/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/requests/modelAPI/RestModelAPI.java b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/requests/modelAPI/RestModelAPI.java new file mode 100644 index 0000000000..b621ddd220 --- /dev/null +++ b/packaging/tests/tas-restapi/src/main/java/org/alfresco/rest/requests/modelAPI/RestModelAPI.java @@ -0,0 +1,71 @@ +package org.alfresco.rest.requests.modelAPI; + +import io.restassured.RestAssured; +import org.alfresco.rest.core.RestRequest; +import org.alfresco.rest.core.RestWrapper; +import org.alfresco.rest.exception.JsonToModelConversionException; +import org.alfresco.rest.model.*; +import org.alfresco.rest.requests.ModelRequest; +import org.springframework.http.HttpMethod; + +/** + * Defines the entire Rest Model API + * {@link https://api-explorer.alfresco.com/api-explorer/} select "Model API" + */ +public class RestModelAPI extends ModelRequest +{ + public RestModelAPI(RestWrapper restWrapper) + { + super(restWrapper); + RestAssured.basePath = "alfresco/api/-default-/public/alfresco/versions/1"; + restWrapper.configureRequestSpec().setBasePath(RestAssured.basePath); + } + + /** + * Retrieve all aspects using GET call on "aspects" + * + * @return RestAspectsCollection + * @throws JsonToModelConversionException + */ + public RestAspectsCollection getAspects() + { + RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "aspects?{parameters}", restWrapper.getParameters()); + return restWrapper.processModels(RestAspectsCollection.class, request); + } + + /** + * Retrieve aspect by id using GET call on "aspects/{aspectId}" + * + * @return RestAspectModel + * @throws JsonToModelConversionException + */ + public RestAspectModel getAspect(String aspectId) + { + RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "aspects/{aspectId}?{parameters}", aspectId, restWrapper.getParameters()); + return restWrapper.processModel(RestAspectModel.class, request); + } + + /** + * Retrieve all types using GET call on "types" + * + * @return RestTypesCollection + * @throws JsonToModelConversionException + */ + public RestTypesCollection getTypes() + { + RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "types?{parameters}", restWrapper.getParameters()); + return restWrapper.processModels(RestTypesCollection.class, request); + } + + /** + * Retrieve Type by id using GET call on "types/{typeId}" + * + * @return RestTypeModel + * @throws JsonToModelConversionException + */ + public RestTypeModel getType(String typeId) + { + RestRequest request = RestRequest.simpleRequest(HttpMethod.GET, "types/{typeId}?{parameters}", typeId, restWrapper.getParameters()); + return restWrapper.processModel(RestTypeModel.class, request); + } +}