* ============LICENSE_START=======================================================
* ONAP CLAMP
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
* reserved.
* ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* limitations under the License.
* ============LICENSE_END============================================
* ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
*/
package org.onap.clamp.clds.service;
-import java.io.IOException;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
import javax.annotation.PostConstruct;
-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 javax.xml.transform.TransformerException;
+import javax.servlet.http.HttpServletRequest;
-import org.camunda.bpm.engine.RuntimeService;
import org.onap.clamp.clds.dao.CldsDao;
import org.onap.clamp.clds.model.CldsTemplate;
import org.onap.clamp.clds.model.ValueItem;
-import org.onap.clamp.clds.model.prop.ModelBpmn;
-import org.onap.clamp.clds.transform.XslTransformer;
import org.onap.clamp.clds.util.LoggingUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-
-import com.att.ajsc.common.AjscService;
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.springframework.stereotype.Component;
/**
* Service to save and retrieve the CLDS model attributes.
*/
-@AjscService
-@Path("/cldsTempate")
+@Component
public class CldsTemplateService extends SecureServiceBase {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsTemplateService.class);
- protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
-
- private static final String collectorKey = "Collector";
- private static final String stringMatchKey = "StringMatch";
- private static final String policyKey = "Policy";
-
- @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}")
- private String cldsPermissionTypeTemplate;
-
- @Value("${CLDS_PERMISSION_INSTANCE:dev}")
- private String cldsPermissionInstance;
-
+ @Value("${clamp.config.security.permission.type.template:permission-type-template}")
+ private String cldsPermissionTypeTemplate;
+ @Value("${clamp.config.security.permission.instance:dev}")
+ private String cldsPermissionInstance;
private SecureServicePermission permissionReadTemplate;
-
private SecureServicePermission permissionUpdateTemplate;
+ @Autowired
+ private HttpServletRequest request;
@PostConstruct
private final void afterConstruction() {
- permissionReadTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance,
- "read");
- permissionUpdateTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance,
- "update");
+ permissionReadTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate,
+ cldsPermissionInstance, "read");
+ permissionUpdateTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate,
+ cldsPermissionInstance, "update");
}
@Autowired
- private CldsDao cldsDao;
- @Autowired
- private RuntimeService runtimeService;
- @Autowired
- private XslTransformer cldsBpmnTransformer;
-
- private static String userid;
+ private CldsDao cldsDao;
+ private LoggingUtils util = new LoggingUtils(logger);
/**
* REST service that retrieves BPMN for a CLDS template name from the
* database. This is subset of the json getModel. This is only expected to
* be used for testing purposes, not by the UI.
*
- * @param templateName
+ * @param templateName template name
* @return bpmn xml text - content of bpmn given name
*/
- @GET
- @Path("/template/bpmn/{templateName}")
- @Produces(MediaType.TEXT_XML)
- public String getBpmnTemplate(@PathParam("templateName") String templateName) {
- Date startTime = new Date();
- LoggingUtils.setRequestContext("CldsTemplateService: GET template bpmn", getPrincipalName());
+ public String getBpmnTemplate(String templateName) {
+ util.entering(request, "CldsTemplateService: GET template bpmn");
+ final Date startTime = new Date();
isAuthorized(permissionReadTemplate);
logger.info("GET bpmnText for templateName=" + templateName);
+
CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false);
- // audit log
- LoggingUtils.setTimeContext(startTime, new Date());
- LoggingUtils.setResponseContext("0", "Get template bpmn success", this.getClass().getName());
- auditLogger.info("GET template bpmn completed");
+ auditLogInfo(util, "GET template bpmn", startTime);
return template.getBpmnText();
}
- /**
- * REST service that saves BPMN for a CLDS template by name in the database.
- * This is subset of the json putModel. This is only expected to be used for
- * testing purposes, not by the UI.
- *
- * @param templateName
- * @param bpmnText
- */
- @PUT
- @Path("/template/bpmn/{templateName}")
- @Consumes(MediaType.TEXT_XML)
- public String putBpmnTemplateXml(@PathParam("templateName") String templateName, String bpmnText) {
- Date startTime = new Date();
- LoggingUtils.setRequestContext("CldsTemplateService: PUT template bpmn", getPrincipalName());
- isAuthorized(permissionUpdateTemplate);
- logger.info("PUT bpmnText for templateName=" + templateName);
- logger.info("PUT bpmnText=" + bpmnText);
- CldsTemplate cldsTemplate = CldsTemplate.retrieve(cldsDao, templateName, true);
- cldsTemplate.setBpmnText(bpmnText);
- cldsTemplate.save(cldsDao, userid);
- // audit log
- LoggingUtils.setTimeContext(startTime, new Date());
- LoggingUtils.setResponseContext("0", "Put template bpmn success", this.getClass().getName());
- auditLogger.info("PUT template bpm completed");
- return "wrote bpmnText for templateName=" + templateName;
- }
-
/**
* REST service that retrieves image for a CLDS template name from the
* database. This is subset of the json getModel. This is only expected to
* be used for testing purposes, not by the UI.
*
- * @param templateName
+ * @param templateName template name
* @return image xml text - content of image given name
*/
- @GET
- @Path("/template/image/{templateName}")
- @Produces(MediaType.TEXT_XML)
- public String getImageXml(@PathParam("templateName") String templateName) {
- Date startTime = new Date();
- LoggingUtils.setRequestContext("CldsTemplateService: GET template image", getPrincipalName());
+ public String getImageXml(String templateName) {
+ util.entering(request, "CldsTemplateService: GET template image");
+ final Date startTime = new Date();
isAuthorized(permissionReadTemplate);
logger.info("GET imageText for templateName=" + templateName);
+
CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false);
- // audit log
- LoggingUtils.setTimeContext(startTime, new Date());
- LoggingUtils.setResponseContext("0", "Get template image success", this.getClass().getName());
- auditLogger.info("GET template image completed");
+ auditLogInfo(util, "GET template image", startTime);
return template.getImageText();
}
- /**
- * REST service that saves image for a CLDS template by name in the
- * database. This is subset of the json putModel. This is only expected to
- * be used for testing purposes, not by the UI.
- *
- * @param templateName
- * @param imageText
- */
- @PUT
- @Path("/template/image/{templateName}")
- @Consumes(MediaType.TEXT_XML)
- public String putImageXml(@PathParam("templateName") String templateName, String imageText) {
- Date startTime = new Date();
- LoggingUtils.setRequestContext("CldsTemplateService: PUT template image", getPrincipalName());
- isAuthorized(permissionUpdateTemplate);
- logger.info("PUT iamgeText for modelName=" + templateName);
- logger.info("PUT imageText=" + imageText);
- CldsTemplate cldsTemplate = CldsTemplate.retrieve(cldsDao, templateName, true);
- cldsTemplate.setImageText(imageText);
- cldsTemplate.save(cldsDao, userid);
- // audit log
- LoggingUtils.setTimeContext(startTime, new Date());
- LoggingUtils.setResponseContext("0", "Put template image success", this.getClass().getName());
- auditLogger.info("PUT template image completed");
- return "wrote imageText for modelName=" + templateName;
- }
-
/**
* REST service that retrieves a CLDS template by name from the database.
*
- * @param templateName
+ * @param templateName template name
* @return clds template - clds template for the given template name
*/
- @GET
- @Path("/template/{templateName}")
- @Produces(MediaType.APPLICATION_JSON)
- public CldsTemplate getTemplate(@PathParam("templateName") String templateName) {
- Date startTime = new Date();
- LoggingUtils.setRequestContext("CldsTemplateService: GET template", getPrincipalName());
+ public CldsTemplate getTemplate(String templateName) {
+ util.entering(request, "CldsTemplateService: GET template");
+ final Date startTime = new Date();
isAuthorized(permissionReadTemplate);
logger.info("GET model for templateName=" + templateName);
+
CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false);
template.setUserAuthorizedToUpdate(isAuthorizedNoException(permissionUpdateTemplate));
- // audit log
- LoggingUtils.setTimeContext(startTime, new Date());
- LoggingUtils.setResponseContext("0", "Get template success", this.getClass().getName());
- auditLogger.info("GET template completed");
+ auditLogInfo(util, "GET template", startTime);
return template;
}
/**
* REST service that saves a CLDS template by name in the database.
*
- * @param templateName
- * @throws IOException
- * @throws JsonMappingException
- * @throws JsonParseException
+ * @param templateName template name
+ * @param cldsTemplate clds template
+ * @return The CldsTemplate modified and saved in DB
*/
- @PUT
- @Path("/template/{templateName}")
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces(MediaType.APPLICATION_JSON)
- public CldsTemplate putTemplate(@PathParam("templateName") String templateName, CldsTemplate cldsTemplate)
- throws TransformerException, IOException {
- Date startTime = new Date();
- LoggingUtils.setRequestContext("CldsTemplateService: PUT template", getPrincipalName());
+ public CldsTemplate putTemplate(String templateName, CldsTemplate cldsTemplate) {
+ util.entering(request, "CldsTemplateService: PUT template");
+ final Date startTime = new Date();
isAuthorized(permissionUpdateTemplate);
-
logger.info("PUT Template for templateName=" + templateName);
logger.info("PUT bpmnText=" + cldsTemplate.getBpmnText());
logger.info("PUT propText=" + cldsTemplate.getPropText());
logger.info("PUT imageText=" + cldsTemplate.getImageText());
cldsTemplate.setName(templateName);
- String bpmnText = cldsTemplate.getBpmnText();
- String imageText = cldsTemplate.getImageText();
- String propText = cldsTemplate.getPropText();
- Map<String, String> newBpmnIdsMap = getNewBpmnIdsMap(bpmnText, cldsTemplate.getPropText());
- for (String currBpmnId : newBpmnIdsMap.keySet()) {
- if (currBpmnId != null && newBpmnIdsMap.get(currBpmnId) != null) {
- bpmnText = bpmnText.replace(currBpmnId, newBpmnIdsMap.get(currBpmnId));
- imageText = imageText.replace(currBpmnId, newBpmnIdsMap.get(currBpmnId));
- propText = propText.replace(currBpmnId, newBpmnIdsMap.get(currBpmnId));
- }
- }
- cldsTemplate.setBpmnText(bpmnText);
- cldsTemplate.setImageText(imageText);
- cldsTemplate.setPropText(propText);
- logger.info(" bpmnText : " + cldsTemplate.getBpmnText());
- logger.info(" Image Text : " + cldsTemplate.getImageText());
- logger.info(" Prop Text : " + cldsTemplate.getPropText());
- cldsTemplate.save(cldsDao, userid);
-
- // audit log
- LoggingUtils.setTimeContext(startTime, new Date());
- LoggingUtils.setResponseContext("0", "Put template success", this.getClass().getName());
- auditLogger.info("PUT template completed");
-
+ cldsTemplate.save(cldsDao, null);
+ auditLogInfo(util, "PUT template", startTime);
return cldsTemplate;
}
*
* @return template names in JSON
*/
- @GET
- @Path("/template-names")
- @Produces(MediaType.APPLICATION_JSON)
public List<ValueItem> getTemplateNames() {
- Date startTime = new Date();
- LoggingUtils.setRequestContext("CldsTemplateService: GET template names", getPrincipalName());
+ util.entering(request, "CldsTemplateService: GET template names");
+ final Date startTime = new Date();
isAuthorized(permissionReadTemplate);
logger.info("GET list of template names");
+
List<ValueItem> names = cldsDao.getTemplateNames();
- // audit log
- LoggingUtils.setTimeContext(startTime, new Date());
- LoggingUtils.setResponseContext("0", "Get template names success", this.getClass().getName());
- auditLogger.info("GET template names completed");
+ auditLogInfo(util, "GET template names", startTime);
return names;
}
- private Map<String, String> getNewBpmnIdsMap(String bpmnText, String propText)
- throws TransformerException, IOException {
- /**
- * Test sample code start
- */
- String bpmnJson = cldsBpmnTransformer.doXslTransformToString(bpmnText);
- ModelBpmn templateBpmn = ModelBpmn.create(bpmnJson);
- List<String> bpmnElementIds = templateBpmn.getBpmnElementIds();
- logger.info("value of elementIds:" + bpmnElementIds);
- logger.info("value of prop text:" + propText);
- Map<String, String> bpmnIoIdsMap = new HashMap<>();
- if (bpmnElementIds != null && bpmnElementIds.size() > 0) {
- ObjectMapper objectMapper = new ObjectMapper();
- ObjectNode root = objectMapper.readValue(propText, ObjectNode.class);
- Iterator<Entry<String, JsonNode>> entryItr = root.fields();
- while (entryItr.hasNext()) {
- // process the entry
- Entry<String, JsonNode> entry = entryItr.next();
- String keyPropName = entry.getKey();
- for (String currElementId : bpmnElementIds) {
- if (keyPropName != null && keyPropName.equalsIgnoreCase(currElementId)) {
- ArrayNode arrayNode = (ArrayNode) entry.getValue();
- // process each id/from object, like:
- // {"id":"Collector_11r50j1", "from":"StartEvent_1"}
- for (JsonNode anArrayNode : arrayNode) {
- ObjectNode node = (ObjectNode) anArrayNode;
- String valueNode = node.get("value").asText();
- logger.info("value of node:" + valueNode);
- if (keyPropName.startsWith(collectorKey)) {
- valueNode = collectorKey + "_" + valueNode;
- } else if (keyPropName.startsWith(stringMatchKey)) {
- valueNode = stringMatchKey + "_" + valueNode;
- } else if (keyPropName.startsWith(policyKey)) {
- valueNode = policyKey + "_" + valueNode;
- }
- bpmnIoIdsMap.put(keyPropName, valueNode);
- }
- break;
- }
- }
- }
- }
- logger.info("value of hashmap:" + bpmnIoIdsMap);
- /**
- * Test sample code end
- */
- return bpmnIoIdsMap;
+ // Created for the integration test
+ public void setLoggingUtil(LoggingUtils utilP) {
+ util = utilP;
}
}