diff --git a/.lgtm.yml b/.lgtm.yml new file mode 100644 index 00000000..0997e2d8 --- /dev/null +++ b/.lgtm.yml @@ -0,0 +1,4 @@ +extraction: + javascript: + index: + exclude: mms-ent/share-amp diff --git a/mms-ent/docker/Dockerfile b/mms-ent/docker/Dockerfile index 0a1fb9ee..5bcac265 100644 --- a/mms-ent/docker/Dockerfile +++ b/mms-ent/docker/Dockerfile @@ -73,7 +73,7 @@ RUN addgroup -S tomcat \ && chown -R tomcat:tomcat ${ALF_DATA_DIR} # Alfresco -EXPOSE 8080:8080 +#EXPOSE 8080:8080 # Postgres #EXPOSE 5432:5432 # ElasticSearch diff --git a/mms-ent/docker/config/alfresco-global.properties b/mms-ent/docker/config/alfresco-global.properties index 08f03425..17c80ad4 100644 --- a/mms-ent/docker/config/alfresco-global.properties +++ b/mms-ent/docker/config/alfresco-global.properties @@ -3,8 +3,6 @@ ############################### dir.root=/mnt/alf_data -dir.keystore=${dir.root}/keystore - dir.contentstore=${dir.root}/contentstore dir.contentstore.deleted=${dir.root}/contentstore.deleted @@ -17,19 +15,19 @@ system.content.caching.maxFileSizeMB=0 alfresco.context=alfresco alfresco.host=localhost -alfresco.port=8443 -alfresco.protocol=https +alfresco.port=8080 +alfresco.protocol=http share.context=share share.host=localhost -share.port=8443 -share.protocol=https +share.port=8080 +share.protocol=http ### database connection properties ### db.driver=org.postgresql.Driver db.name=alfresco -db.username=alfresco -db.password=alfresco +db.username= +db.password= db.host= db.port=5432 # probably can up this to same as max connections in db configuration (currently 225) @@ -39,15 +37,6 @@ db.pool.validate.query db.url=jdbc:postgresql://${db.host}:${db.port}/${db.name} - -## Install Enterprise license if this is an enterprise host. - -## License file pulled from SaltMaster -dir.license.external=/usr/local/tomcat/shared/classes/alfresco/extension/license - - - - # The server mode. Set value here # # UNKNOWN | TEST | BACKUP | PRODUCTION system.serverMode=TEST diff --git a/mms-ent/docker/config/set_properties.sh b/mms-ent/docker/config/set_properties.sh index 2b425362..41283515 100644 --- a/mms-ent/docker/config/set_properties.sh +++ b/mms-ent/docker/config/set_properties.sh @@ -1,33 +1,47 @@ #!/bin/sh -# Configure alfresco-global.properties +# Configure alfresco-global.properties and mms.properties if [[ -z "$PG_HOST" ]];then echo "Postgres host not set" exit 1 +else + sed -i'' -e "s/db.host=/db.host=${PG_HOST}/" /usr/local/tomcat/shared/classes/alfresco-global.properties + if [[ -z "$PG_PORT" ]];then + echo "Postgres port not set, using default 5432" + sed -i'' -e "s/pg.host=jdbc:postgresql:\/\/127.0.0.1\//pg.host=jdbc:postgresql:\/\/${PG_HOST}\//" /usr/local/tomcat/shared/classes/mms.properties + else + sed -i'' -e "s/db.port=5432/db.port=${PG_PORT}/" /usr/local/tomcat/shared/classes/alfresco-global.properties + sed -i'' -e "s/pg.host=jdbc:postgresql:\/\/127.0.0.1\//pg.host=jdbc:postgresql:\/\/${PG_HOST}:${PG_PORT}\//" /usr/local/tomcat/shared/classes/mms.properties + fi fi if [[ -z "$PG_DB_NAME" ]];then echo "Postgres Database name not set" exit 1 +else + sed -i'' -e "s/pg.name=/pg.name=${PG_DB_NAME}/" /usr/local/tomcat/shared/classes/mms.properties fi if [[ -z "$PG_DB_USER" ]];then echo "Postgres Database User not set" exit 1 +else + sed -i'' -e "s/db.username=/db.username=${PG_DB_USER}/" /usr/local/tomcat/shared/classes/alfresco-global.properties + sed -i'' -e "s/pg.user=/pg.user=${PG_DB_USER}/" /usr/local/tomcat/shared/classes/mms.properties fi if [[ -z "$PG_DB_PASS" ]];then echo "Postgres Database User password not set" exit 1 +else + sed -i'' -e "s/db.password=/db.password=${PG_DB_PASS}/" /usr/local/tomcat/shared/classes/alfresco-global.properties + sed -i'' -e "s/pg.pass=/pg.pass=${PG_DB_PASS}/" /usr/local/tomcat/shared/classes/mms.properties fi if [[ -z "$ES_HOST" ]];then - echo "ElasticSearch host not set" + echo "Elasticsearch host not set" exit 1 +else + if [[ -z "$ES_PORT" ]];then + echo "Elasticsearch port not set, using default 9200" + sed -i'' -e "s/elastic.host=http:\/\/localhost/elastic.host=http:\/\/${ES_HOST}/" /usr/local/tomcat/shared/classes/mms.properties + else + sed -i'' -e "s/elastic.host=http:\/\/localhost:9200/elastic.host=http:\/\/${ES_HOST}:${ES_PORT}/" /usr/local/tomcat/shared/classes/mms.properties + fi fi - -sed -i'' -e "s/db.host=/db.host=${PG_HOST}/" /usr/local/tomcat/shared/classes/alfresco-global.properties - -# Configure mms.properties file -sed -i'' -e "s/pg.host=jdbc:postgresql:\/\/127.0.0.1\//pg.host=jdbc:postgresql:\/\/${PG_HOST}\//" /usr/local/tomcat/shared/classes/mms.properties -sed -i'' -e "s/pg.name=/pg.name=${PG_DB_NAME}/" /usr/local/tomcat/shared/classes/mms.properties -sed -i'' -e "s/pg.user=/pg.user=${PG_DB_USER}/" /usr/local/tomcat/shared/classes/mms.properties -sed -i'' -e "s/pg.pass=/pg.pass=${PG_DB_PASS}/" /usr/local/tomcat/shared/classes/mms.properties - -sed -i'' -e "s/elastic.host=http:\/\/localhost/elastic.host=http:\/\/${ES_HOST}/" /usr/local/tomcat/shared/classes/mms.properties diff --git a/mms-ent/docs/SingleServerDeploy.md b/mms-ent/docs/SingleServerDeploy.md index ada2606b..386a5685 100644 --- a/mms-ent/docs/SingleServerDeploy.md +++ b/mms-ent/docs/SingleServerDeploy.md @@ -50,7 +50,7 @@ See: [Alfresco Documentation on Installation](https://docs.alfresco.com/5.1/conc ## Install Postgresql 9.4.x (Optional if using the Alfresco installer which includes Postgresql) 1. Run the following commands as root: - * `yum -y http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm` + * `yum -y install http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm` * `yum -y install postgresql94 postgresql94-server postgresql94-contrib postgresql94-libs` * `systemctl enable postgresql-9.4` * `$PATH_TO_PG_BIN/postgresql94-setup initdb` diff --git a/mms-ent/pom.xml b/mms-ent/pom.xml index 5f688dd9..18f8d555 100755 --- a/mms-ent/pom.xml +++ b/mms-ent/pom.xml @@ -4,7 +4,7 @@ 4.0.0 gov.nasa.jpl.mbee mms-ent - 3.3.0-RC1 + 3.3.0-RC2 Alfresco Repository and Share Quickstart with database and an embedded Tomcat runner. This All-in-One project allows to manage all the components involved in Alfresco development (Repo, Share, Solr4, AMPs) in one project diff --git a/mms-ent/repo-amp/pom.xml b/mms-ent/repo-amp/pom.xml index 122c4c15..1b5ef761 100755 --- a/mms-ent/repo-amp/pom.xml +++ b/mms-ent/repo-amp/pom.xml @@ -10,7 +10,7 @@ gov.nasa.jpl.mbee mms-ent - 3.3.0-RC1 + 3.3.0-RC2 diff --git a/mms-ent/repo-amp/src/main/amp/web/mms/mms.swagger.yaml b/mms-ent/repo-amp/src/main/amp/web/mms/mms.swagger.yaml index 57f55d5f..c5435bd3 100644 --- a/mms-ent/repo-amp/src/main/amp/web/mms/mms.swagger.yaml +++ b/mms-ent/repo-amp/src/main/amp/web/mms/mms.swagger.yaml @@ -574,7 +574,7 @@ paths: 200: description: "OK" schema: - $ref: "#/definitions/Elements" + $ref: "#/definitions/RejectableElements" 401: $ref: "#/responses/Unauthorized" 403: @@ -630,7 +630,7 @@ paths: 200: description: "OK" schema: - $ref: "#/definitions/Elements" + $ref: "#/definitions/RejectableElements" 401: $ref: "#/responses/Unauthorized" 403: @@ -1186,6 +1186,23 @@ definitions: type: "string" additionalProperties: type: "object" + Rejection: + type: "object" + required: + - "code" + - "message" + - "severity" + properties: + code: + type: "number" + id: + type: "string" + element: + $ref: "#/definitions/Element" + message: + type: "string" + severity: + type: "string" Artifact: type: "object" required: @@ -1255,6 +1272,23 @@ definitions: type: "string" source: type: "string" + RejectableElements: + type: "object" + required: + - "elements" + properties: + elements: + type: "array" + items: + $ref: "#/definitions/Element" + rejected: + type: "array" + items: + $ref: "#/definitions/Rejection" + comment: + type: "string" + source: + type: "string" Artifacts: type: "object" required: diff --git a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/GraphInterface.java b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/GraphInterface.java index 23e50306..10d52024 100644 --- a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/GraphInterface.java +++ b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/GraphInterface.java @@ -35,7 +35,7 @@ public interface GraphInterface { void rollBackToSavepoint(Savepoint savepoint) throws SQLException; - void execUpdate(String query) throws SQLException; + int execUpdate(String query) throws SQLException; ResultSet execQuery(String query) throws SQLException; diff --git a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/PostgresHelper.java b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/PostgresHelper.java index b9e3aea7..78ce189a 100644 --- a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/PostgresHelper.java +++ b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/db/PostgresHelper.java @@ -234,17 +234,18 @@ public void rollBackToSavepoint(Savepoint savepoint) throws SQLException { getConn().rollback(savepoint); } - public void execUpdate(String query) { + public int execUpdate(String query) { if (logger.isDebugEnabled()) { logger.debug(String.format("execUpdate: %s", query)); } try { - getConn().createStatement().executeUpdate(query); + return getConn().createStatement().executeUpdate(query); } catch (SQLException e) { if (logger.isDebugEnabled()) { logger.debug(String.format("%s", LogUtil.getStackTrace(e))); } } + return 0; } public ResultSet execQuery(String query) { @@ -292,16 +293,17 @@ public int insert(String table, Map values) { String query = String .format("INSERT INTO \"%s\" (%s) VALUES (%s) RETURNING id", table, columns.toString(), vals.toString()); - PreparedStatement statement = prepareStatement(query); - for (int i = 0; i < columnList.size(); i++) { - statementSetter(statement, values.getOrDefault(columnList.get(i), null), i); - } + try (PreparedStatement statement = prepareStatement(query)) { + for (int i = 0; i < columnList.size(); i++) { + statementSetter(statement, values.getOrDefault(columnList.get(i), null), i); + } - if (logger.isDebugEnabled()) { - logger.debug(String.format("Query: %s", query)); + if (logger.isDebugEnabled()) { + logger.debug(String.format("Query: %s", query)); + } + statement.execute(); + return 1; } - statement.execute(); - return 1; } catch (Exception e) { logger.error(String.format("%s", LogUtil.getStackTrace(e))); } finally { @@ -473,13 +475,13 @@ public List> getOrganizations(String orgId) { } public String getOrganizationFromProject(String projectId) { - try { - PreparedStatement query = getConn("config").prepareStatement( - "SELECT organizations.orgId FROM projects JOIN organizations ON projects.orgId = organizations.id WHERE projects.projectId = ?"); + try (PreparedStatement query = getConn("config").prepareStatement( + "SELECT organizations.orgId FROM projects JOIN organizations ON projects.orgId = organizations.id WHERE projects.projectId = ?")) { query.setString(1, projectId); - ResultSet rs = query.executeQuery(); - if (rs.next()) { - return rs.getString(1); + try (ResultSet rs = query.executeQuery()) { + if (rs.next()) { + return rs.getString(1); + } } } catch (Exception e) { logger.warn(String.format("%s", LogUtil.getStackTrace(e))); @@ -527,32 +529,39 @@ public List> getProjects() { public List> getProjects(String orgId) { List> result = new ArrayList<>(); + PreparedStatement query = null; - try { - PreparedStatement query; + try (Connection connection = getConn("config")) { if (orgId != null) { - query = getConn("config").prepareStatement( + query = connection.prepareStatement( "SELECT projects.id, projectId, name, organizations.orgId FROM projects JOIN organizations ON organizations.id = projects.orgId WHERE projects.orgId = (SELECT id FROM organizations where orgId = ?)"); query.setString(1, orgId); } else { - query = getConn("config").prepareStatement( + query = connection.prepareStatement( "SELECT projects.id, projectId, name, organizations.orgId FROM projects JOIN organizations ON organizations.id = projects.orgId"); } - ResultSet rs = query.executeQuery(); - - while (rs.next()) { - Map project = new HashMap<>(); - project.put(Sjm.SYSMLID, rs.getString(2)); - project.put(Sjm.NAME, rs.getString(3)); - project.put("orgId", rs.getString(4)); - result.add(project); + try (ResultSet rs = query.executeQuery()) { + while (rs.next()) { + Map project = new HashMap<>(); + project.put(Sjm.SYSMLID, rs.getString(2)); + project.put(Sjm.NAME, rs.getString(3)); + project.put("orgId", rs.getString(4)); + result.add(project); + } } } catch (Exception e) { logger.warn(String.format("%s", LogUtil.getStackTrace(e))); } finally { closeConfig(); + if (query != null) { + try { + query.close(); + } catch (SQLException e) { + logger.warn(String.format("%s", LogUtil.getStackTrace(e))); + } + } } return result; @@ -697,13 +706,13 @@ public List> getAllArtifactsWithLastCommitTimestamp() { } public boolean isDeleted(String sysmlid) { - try { - PreparedStatement query = getConn() - .prepareStatement("SELECT id FROM \"nodes" + workspaceId + "\" WHERE sysmlid = ? AND deleted = true"); + try (PreparedStatement query = getConn() + .prepareStatement("SELECT id FROM \"nodes" + workspaceId + "\" WHERE sysmlid = ? AND deleted = true")) { query.setString(1, sysmlid); - ResultSet rs = query.executeQuery(); - if (rs.next()) { - return true; + try (ResultSet rs = query.executeQuery()) { + if (rs.next()) { + return true; + } } } catch (SQLException e) { logger.warn(String.format("%s", LogUtil.getStackTrace(e))); @@ -715,9 +724,8 @@ public boolean isDeleted(String sysmlid) { } public boolean sysmlIdExists(String sysmlid) { - try { - PreparedStatement query = - getConn().prepareStatement("SELECT id FROM \"nodes" + workspaceId + "\" WHERE sysmlid = ?"); + try (PreparedStatement query = getConn() + .prepareStatement("SELECT id FROM \"nodes" + workspaceId + "\" WHERE sysmlid = ?")) { query.setString(1, sysmlid); ResultSet rs = query.executeQuery(); return rs.next(); @@ -730,17 +738,17 @@ public boolean sysmlIdExists(String sysmlid) { } public boolean edgeExists(String parent, String child, DbEdgeTypes dbet) { - try { - PreparedStatement query = getConn().prepareStatement( - "SELECT id FROM \"edges" + workspaceId + "\" WHERE parent = (SELECT id FROM \"nodes" + workspaceId - + "\" WHERE sysmlid = ?) AND child = (SELECT id FROM \"nodes" + workspaceId - + "\" WHERE sysmlid = ?) AND edgetype = ?"); + try (PreparedStatement query = getConn().prepareStatement( + "SELECT id FROM \"edges" + workspaceId + "\" WHERE parent = (SELECT id FROM \"nodes" + workspaceId + + "\" WHERE sysmlid = ?) AND child = (SELECT id FROM \"nodes" + workspaceId + + "\" WHERE sysmlid = ?) AND edgetype = ?")) { query.setString(1, parent); query.setString(2, child); query.setInt(3, dbet.getValue()); - ResultSet rs = query.executeQuery(); - if (rs.next()) { - return true; + try (ResultSet rs = query.executeQuery()) { + if (rs.next()) { + return true; + } } } catch (SQLException e) { logger.warn(String.format("%s", LogUtil.getStackTrace(e))); diff --git a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/util/EmsNodeUtil.java b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/util/EmsNodeUtil.java index 1e4eda18..d389d821 100644 --- a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/util/EmsNodeUtil.java +++ b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/util/EmsNodeUtil.java @@ -38,6 +38,9 @@ import gov.nasa.jpl.view_repo.db.GraphInterface.DbEdgeTypes; import gov.nasa.jpl.view_repo.db.GraphInterface.DbNodeTypes; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public class EmsNodeUtil { private ElasticHelper eh = null; @@ -595,26 +598,22 @@ public JsonObject processPostJson(JsonArray elements, String user, Set o boolean added = !existingMap.containsKey(sysmlid); boolean updated = false; + Map rejected = new HashMap<>(); if (!added) { if (!overwriteJson) { - if (isUpdated(o, existingMap.get(sysmlid))) { - updated = diffUpdateJson(o, existingMap.get(sysmlid)); + if (isUpdated(o, existingMap.get(sysmlid), rejected)) { + updated = diffUpdateJson(o, existingMap.get(sysmlid), rejected); } } else { updated = true; } } - // pregenerate the elasticId - o.addProperty(Sjm.ELASTICID, UUID.randomUUID().toString()); - o.addProperty(Sjm.COMMITID, commitId); o.addProperty(Sjm.PROJECTID, this.projectId); o.addProperty(Sjm.REFID, this.workspaceName); JsonArray arry = new JsonArray(); arry.add(this.workspaceName); o.add(Sjm.INREFIDS, arry); - o.addProperty(Sjm.MODIFIER, user); - o.addProperty(Sjm.MODIFIED, date); if (o.has(Sjm.QUALIFIEDID)) { o.remove(Sjm.QUALIFIEDID); @@ -633,8 +632,15 @@ public JsonObject processPostJson(JsonArray elements, String user, Set o } if (added) { logger.debug("ELEMENT ADDED!"); + o.addProperty(Sjm.CREATOR, user); o.addProperty(Sjm.CREATED, date); + + o.addProperty(Sjm.ELASTICID, UUID.randomUUID().toString()); + o.addProperty(Sjm.COMMITID, commitId); + o.addProperty(Sjm.MODIFIER, user); + o.addProperty(Sjm.MODIFIED, date); + addedElements.add(o); JsonObject newObj = new JsonObject(); @@ -649,6 +655,12 @@ public JsonObject processPostJson(JsonArray elements, String user, Set o newElements.add(o); } else if (updated) { logger.debug("ELEMENT UPDATED!"); + + o.addProperty(Sjm.ELASTICID, UUID.randomUUID().toString()); + o.addProperty(Sjm.COMMITID, commitId); + o.addProperty(Sjm.MODIFIER, user); + o.addProperty(Sjm.MODIFIED, date); + updatedElements.add(o); JsonObject parent = new JsonObject(); @@ -663,8 +675,15 @@ public JsonObject processPostJson(JsonArray elements, String user, Set o commitUpdated.add(parent); newElements.add(o); } else { - rejectedElements.add(o); - logger.debug("ELEMENT CONFLICT!"); + for (Map.Entry message : rejected.entrySet()) { + JsonObject errorPayload = new JsonObject(); + errorPayload.addProperty("code", message.getKey()); + errorPayload.add("element", o); + errorPayload.addProperty("message", message.getValue()); + errorPayload.addProperty("severity", Sjm.WARN); + rejectedElements.add(errorPayload); + } + logger.debug("ELEMENT REJECTED!"); } } @@ -1121,8 +1140,8 @@ private void reorderChildViews(JsonObject element, JsonArray newElements, JsonAr element.remove(Sjm.CHILDVIEWS); } - private void processChildViewDeleteCommit(JsonObject element, JsonArray deletedElements, - Set oldElasticIds, JsonArray commitDeleted) { + private void processChildViewDeleteCommit(JsonObject element, JsonArray deletedElements, Set oldElasticIds, + JsonArray commitDeleted) { if (!JsonUtil.getOptString(element, Sjm.SYSMLID).equals("")) { deletedElements.add(element); oldElasticIds.add(element.get(Sjm.ELASTICID).getAsString()); @@ -1247,7 +1266,7 @@ public boolean refExists(String refId) { return pgh.refExists(refId); } - private boolean diffUpdateJson(JsonObject json, JsonObject existing) { + private boolean diffUpdateJson(JsonObject json, JsonObject existing, Map rejection) { if (json.has(Sjm.SYSMLID) && existing.has(Sjm.SYSMLID)) { String jsonModified = JsonUtil.getOptString(json, Sjm.MODIFIED); String existingModified = JsonUtil.getOptString(existing, Sjm.MODIFIED); @@ -1259,6 +1278,7 @@ private boolean diffUpdateJson(JsonObject json, JsonObject existing) { if (logger.isDebugEnabled()) { logger.debug("Conflict Detected"); } + rejection.put(HttpServletResponse.SC_CONFLICT, "Conflict Detected"); return false; } } catch (ParseException e) { @@ -1286,7 +1306,7 @@ private boolean mergeJson(JsonObject partial, JsonObject original) { return true; } - private boolean isUpdated(JsonObject json, JsonObject existing) { + private boolean isUpdated(JsonObject json, JsonObject existing, Map rejection) { if (existing == null) { return false; } @@ -1299,7 +1319,13 @@ private boolean isUpdated(JsonObject json, JsonObject existing) { Map newElement = toMap(json); Map oldElement = toMap(existing); - return !isEquivalent(newElement, oldElement); + boolean equiv = isEquivalent(newElement, oldElement); + + if (equiv) { + rejection.put(HttpServletResponse.SC_NOT_MODIFIED, "Is Equivalent"); + } + + return !equiv; } public JsonArray addExtendedInformation(JsonArray elements) { @@ -1604,7 +1630,9 @@ private static boolean isEquivalent(Map map1, Map handleElementGet(WebScriptRequest req, Status stat if (commitJson.size() == 0) { log(Level.ERROR, HttpServletResponse.SC_NOT_FOUND, "No elements found."); } - if (commitJson != null && commitJson.size() > 0) { + if (commitJson.size() > 0) { top.add(Sjm.ELEMENTS, filterByPermission(commitJsonToArray, req)); } if (top.has(Sjm.ELEMENTS) && top.get(Sjm.ELEMENTS).getAsJsonArray().size() < 1) { diff --git a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/webscripts/ModelsGet.java b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/webscripts/ModelsGet.java index d305191f..9294c466 100644 --- a/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/webscripts/ModelsGet.java +++ b/mms-ent/repo-amp/src/main/java/gov/nasa/jpl/view_repo/webscripts/ModelsGet.java @@ -115,7 +115,6 @@ public ModelsGet(Repository repositoryHelper, ServiceRegistry registry) { Map model = new HashMap<>(); JsonArray elementsJson = new JsonArray(); - JsonArray errors = new JsonArray(); JsonObject result = new JsonObject(); try { @@ -139,40 +138,39 @@ public ModelsGet(Repository repositoryHelper, ServiceRegistry registry) { if (elements.size() == 0) { log(Level.ERROR, HttpServletResponse.SC_FORBIDDEN, "Permission denied."); } - top.add(Sjm.ELEMENTS, elements); + } else { + log(Level.INFO, HttpServletResponse.SC_OK, "No elements found"); + top.add(Sjm.ELEMENTS, new JsonArray()); + } - JsonArray errorMessages = new JsonArray(); - for (String level : Sjm.ERRORLEVELS) { - errors = JsonUtil.getOptArray(result, level); - if (errors.size() > 0) { - for (int i = 0; i < errors.size(); i++) { - JsonObject errorPayload = new JsonObject(); - errorPayload.addProperty("code", HttpServletResponse.SC_NOT_FOUND); - errorPayload.add(Sjm.SYSMLID, errors.get(i)); - errorPayload.addProperty("message", - String.format("Element %s was not found", errors.get(i).getAsString())); - errorPayload.addProperty("severity", level); - errorMessages.add(errorPayload); - } + JsonArray errorMessages = new JsonArray(); + for (String level : Sjm.ERRORLEVELS) { + JsonArray errors = JsonUtil.getOptArray(result, level); + if (errors.size() > 0) { + for (int i = 0; i < errors.size(); i++) { + JsonObject errorPayload = new JsonObject(); + errorPayload.addProperty("code", HttpServletResponse.SC_NOT_FOUND); + errorPayload.add(Sjm.SYSMLID, errors.get(i)); + errorPayload.addProperty("message", + String.format("Element %s was not found", errors.get(i).getAsString())); + errorPayload.addProperty("severity", level); + errorMessages.add(errorPayload); } } + } - if (errorMessages.size() > 0) { - top.add("messages", errorMessages); - } + if (errorMessages.size() > 0) { + top.add("messages", errorMessages); + } - if (prettyPrint || accept.contains("webp")) { - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - model.put(Sjm.RES, gson.toJson(top)); - } else { - model.put(Sjm.RES, top); - } + if (prettyPrint || accept.contains("webp")) { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + model.put(Sjm.RES, gson.toJson(top)); } else { - log(Level.INFO, HttpServletResponse.SC_OK, "No elements found"); - top.add(Sjm.ELEMENTS, new JsonArray()); model.put(Sjm.RES, top); } + } catch (Exception e) { logger.error(String.format("%s", LogUtil.getStackTrace(e))); } diff --git a/mms-ent/repo/pom.xml b/mms-ent/repo/pom.xml index 78ad2e2b..1edf1653 100755 --- a/mms-ent/repo/pom.xml +++ b/mms-ent/repo/pom.xml @@ -18,7 +18,7 @@ gov.nasa.jpl.mbee mms-ent - 3.3.0-RC1 + 3.3.0-RC2 diff --git a/mms-ent/runner/pom.xml b/mms-ent/runner/pom.xml index 3c88b8c6..015a20a1 100755 --- a/mms-ent/runner/pom.xml +++ b/mms-ent/runner/pom.xml @@ -9,7 +9,7 @@ gov.nasa.jpl.mbee mms-ent - 3.3.0-RC1 + 3.3.0-RC2 diff --git a/mms-ent/runner/src/test/robotframework/output/baseline/InvalidUpdateElement.json b/mms-ent/runner/src/test/robotframework/output/baseline/InvalidUpdateElement.json index 55e0122b..e3152147 100644 --- a/mms-ent/runner/src/test/robotframework/output/baseline/InvalidUpdateElement.json +++ b/mms-ent/runner/src/test/robotframework/output/baseline/InvalidUpdateElement.json @@ -23,38 +23,46 @@ ], "rejected": [ { - "_modifier": "admin", - "_projectId": "PA", - "_refId": "master", - "documentation": "something", - "id": "300", - "isDerived": false, - "name": "this name is updated", - "ownerId": "holding_bin_PA", - "type": "Property", - "value": [ - { - "string": "dlam_string", - "type": "LiteralString" - } - ] + "code": 304, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "something", + "id": "300", + "isDerived": false, + "name": "this name is updated", + "ownerId": "holding_bin_PA", + "type": "Property", + "value": [ + { + "string": "dlam_string", + "type": "LiteralString" + } + ] + }, + "message": "Is Equivalent", + "severity": "warn" }, { - "_modifier": "admin", - "_projectId": "PA", - "_refId": "master", - "documentation": "else", - "id": "301", - "isDerived": false, - "name": "this name is also updated", - "ownerId": "300", - "type": "Property", - "value": [ - { - "string": "dlam_string", - "type": "LiteralString" - } - ] + "code": 304, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "else", + "id": "301", + "isDerived": false, + "name": "this name is also updated", + "ownerId": "300", + "type": "Property", + "value": [ + { + "string": "dlam_string", + "type": "LiteralString" + } + ] + }, + "message": "Is Equivalent", + "severity": "warn" } ] } diff --git a/mms-ent/runner/src/test/robotframework/output/baseline/ModifiedTimeElement.json b/mms-ent/runner/src/test/robotframework/output/baseline/ModifiedTimeElement.json index fdc5dfd3..368526bf 100644 --- a/mms-ent/runner/src/test/robotframework/output/baseline/ModifiedTimeElement.json +++ b/mms-ent/runner/src/test/robotframework/output/baseline/ModifiedTimeElement.json @@ -3,38 +3,46 @@ "elements": [], "rejected": [ { - "_modifier": "admin", - "_projectId": "PA", - "_refId": "master", - "documentation": "something", - "id": "300", - "isDerived": false, - "name": "this name is updated for _modified test", - "ownerId": "holding_bin_PA", - "type": "Property", - "value": [ - { - "string": "dlam_string", - "type": "LiteralString" - } - ] + "code": 409, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "something", + "id": "300", + "isDerived": false, + "name": "this name is updated for _modified test", + "ownerId": "holding_bin_PA", + "type": "Property", + "value": [ + { + "string": "dlam_string", + "type": "LiteralString" + } + ] + }, + "message": "Conflict Detected", + "severity": "warn" }, { - "_modifier": "admin", - "_projectId": "PA", - "_refId": "master", - "documentation": "else", - "id": "301", - "isDerived": false, - "name": "this name is also updated for _modified test", - "ownerId": "300", - "type": "Property", - "value": [ - { - "string": "dlam_string", - "type": "LiteralString" - } - ] + "code": 409, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "else", + "id": "301", + "isDerived": false, + "name": "this name is also updated for _modified test", + "ownerId": "300", + "type": "Property", + "value": [ + { + "string": "dlam_string", + "type": "LiteralString" + } + ] + }, + "message": "Conflict Detected", + "severity": "warn" } ] } diff --git a/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsCollaborator.json b/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsCollaborator.json index 016b95f3..1876e3a3 100644 --- a/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsCollaborator.json +++ b/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsCollaborator.json @@ -3,55 +3,67 @@ "elements": [], "rejected": [ { - "_modifier": "Collaborator", - "_projectId": "PA", - "_refId": "master", - "documentation": "something", - "id": "300", - "isDerived": false, - "name": "this name is updated", - "ownerId": "holding_bin_PA", - "type": "Property", - "value": [ - { - "string": "dlam_string", - "type": "LiteralString" - } - ] + "code": 304, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "something", + "id": "300", + "isDerived": false, + "name": "this name is updated", + "ownerId": "holding_bin_PA", + "type": "Property", + "value": [ + { + "string": "dlam_string", + "type": "LiteralString" + } + ] + }, + "message": "Is Equivalent", + "severity": "warn" }, { - "_modifier": "Collaborator", - "_projectId": "PA", - "_refId": "master", - "documentation": "else", - "id": "301", - "isDerived": false, - "name": "this name is also updated", - "ownerId": "300", - "type": "Property", - "value": [ - { - "string": "dlam_string", - "type": "LiteralString" - } - ] + "code": 304, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "else", + "id": "301", + "isDerived": false, + "name": "this name is also updated", + "ownerId": "300", + "type": "Property", + "value": [ + { + "string": "dlam_string", + "type": "LiteralString" + } + ] + }, + "message": "Is Equivalent", + "severity": "warn" }, { - "_modifier": "Collaborator", - "_projectId": "PA", - "_refId": "master", - "documentation": "talk", - "id": "303", - "isDerived": false, - "name": "three hundred and three is also updated", - "ownerId": "302", - "type": "Property", - "value": [ - { - "real": 3.3, - "type": "Real" - } - ] + "code": 304, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "talk", + "id": "303", + "isDerived": false, + "name": "three hundred and three is also updated", + "ownerId": "302", + "type": "Property", + "value": [ + { + "real": 3.3, + "type": "Real" + } + ] + }, + "message": "Is Equivalent", + "severity": "warn" } ] } diff --git a/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsManager.json b/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsManager.json index cd7b2b74..ed38e1d1 100644 --- a/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsManager.json +++ b/mms-ent/runner/src/test/robotframework/output/baseline/UpdateAsManager.json @@ -23,38 +23,46 @@ ], "rejected": [ { - "_modifier": "Manager", - "_projectId": "PA", - "_refId": "master", - "documentation": "something", - "id": "300", - "isDerived": false, - "name": "this name is updated", - "ownerId": "holding_bin_PA", - "type": "Property", - "value": [ - { - "string": "dlam_string", - "type": "LiteralString" - } - ] + "code": 304, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "something", + "id": "300", + "isDerived": false, + "name": "this name is updated", + "ownerId": "holding_bin_PA", + "type": "Property", + "value": [ + { + "string": "dlam_string", + "type": "LiteralString" + } + ] + }, + "message": "Is Equivalent", + "severity": "warn" }, { - "_modifier": "Manager", - "_projectId": "PA", - "_refId": "master", - "documentation": "talk", - "id": "303", - "isDerived": false, - "name": "three hundred and three is also updated", - "ownerId": "302", - "type": "Property", - "value": [ - { - "real": 3.3, - "type": "Real" - } - ] + "code": 304, + "element": { + "_projectId": "PA", + "_refId": "master", + "documentation": "talk", + "id": "303", + "isDerived": false, + "name": "three hundred and three is also updated", + "ownerId": "302", + "type": "Property", + "value": [ + { + "real": 3.3, + "type": "Real" + } + ] + }, + "message": "Is Equivalent", + "severity": "warn" } ] } diff --git a/mms-ent/share-amp/pom.xml b/mms-ent/share-amp/pom.xml index 835fbafb..e6bbf11a 100644 --- a/mms-ent/share-amp/pom.xml +++ b/mms-ent/share-amp/pom.xml @@ -9,7 +9,7 @@ gov.nasa.jpl.mbee mms-ent - 3.3.0-RC1 + 3.3.0-RC2