X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Fservlets%2FAbstractValidationsServlet.java;h=ade8637715a47a6406f2f398b664b94f27fc3cf2;hb=216ea4998de9ae4ee603d7f8f5f6725b218ca710;hp=cb0cc239f22277b9e6d2a674acbe83c8a014fe6d;hpb=a8d3e1b8c759c21227690a425552a245da883e97;p=sdc.git diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/AbstractValidationsServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/AbstractValidationsServlet.java index cb0cc239f2..ade8637715 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/AbstractValidationsServlet.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/AbstractValidationsServlet.java @@ -19,7 +19,6 @@ * Modifications copyright (c) 2019 Nokia * ================================================================================ */ - package org.openecomp.sdc.be.servlets; import com.fasterxml.jackson.databind.ObjectMapper; @@ -28,7 +27,6 @@ import com.google.gson.JsonSyntaxException; import fj.data.Either; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Type; @@ -43,7 +41,6 @@ import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Response; import org.apache.commons.codec.binary.Base64; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -94,31 +91,42 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { private static final Logger log = Logger.getLogger(AbstractValidationsServlet.class); private static final String TOSCA_SIMPLE_YAML_PREFIX = "tosca_simple_yaml_"; - private static final List TOSCA_DEFINITION_VERSIONS = Arrays.asList( - TOSCA_SIMPLE_YAML_PREFIX + "1_0_0", - TOSCA_SIMPLE_YAML_PREFIX + "1_1_0", - "tosca_simple_profile_for_nfv_1_0_0", - TOSCA_SIMPLE_YAML_PREFIX + "1_0", - TOSCA_SIMPLE_YAML_PREFIX + "1_1", - TOSCA_SIMPLE_YAML_PREFIX + "1_2", - TOSCA_SIMPLE_YAML_PREFIX + "1_3"); + private static final List TOSCA_DEFINITION_VERSIONS = Arrays + .asList(TOSCA_SIMPLE_YAML_PREFIX + "1_0_0", TOSCA_SIMPLE_YAML_PREFIX + "1_1_0", "tosca_simple_profile_for_nfv_1_0_0", + TOSCA_SIMPLE_YAML_PREFIX + "1_0", TOSCA_SIMPLE_YAML_PREFIX + "1_1", TOSCA_SIMPLE_YAML_PREFIX + "1_2", TOSCA_SIMPLE_YAML_PREFIX + "1_3"); private static final List TOSCA_YML_CSAR_VALID_SUFFIX = Arrays.asList(".yml", ".yaml", ".csar", ".meta"); - + private static final String INVALID_JSON_WAS_RECEIVED = "Invalid json was received."; + private static final String AUDIT_BEFORE_SENDING_RESPONSE = "audit before sending response"; + private static final String VALIDATE_USER_ROLE = "validate user role"; + private static final String USER_IS_NOT_IN_APPROPRIATE_ROLE_TO_PERFORM_ACTION = "user is not in appropriate role to perform action"; + protected final ComponentInstanceBusinessLogic componentInstanceBusinessLogic; protected ServletUtils servletUtils; protected ResourceImportManager resourceImportManager; - protected final ComponentInstanceBusinessLogic componentInstanceBusinessLogic; - protected ServiceImportManager serviceImportManager; - public AbstractValidationsServlet(UserBusinessLogic userBusinessLogic, - ComponentInstanceBusinessLogic componentInstanceBL, ComponentsUtils componentsUtils, - ServletUtils servletUtils, ResourceImportManager resourceImportManager) { - super(userBusinessLogic, componentsUtils); + protected AbstractValidationsServlet(ComponentInstanceBusinessLogic componentInstanceBL, + ComponentsUtils componentsUtils, ServletUtils servletUtils, ResourceImportManager resourceImportManager) { + super(componentsUtils); this.servletUtils = servletUtils; this.resourceImportManager = resourceImportManager; this.componentInstanceBusinessLogic = componentInstanceBL; } + public static void extractZipContents(Wrapper yamlStringWrapper, File file) throws ZipException { + final Map unzippedFolder = ZipUtils.readZip(file, false); + String ymlName = unzippedFolder.keySet().iterator().next(); + fillToscaTemplateFromZip(yamlStringWrapper, ymlName, file); + } + + private static void fillToscaTemplateFromZip(final Wrapper yamlStringWrapper, final String payloadName, final File file) + throws ZipException { + final Map unzippedFolder = ZipUtils.readZip(file, false); + final byte[] yamlFileInBytes = unzippedFolder.get(payloadName); + final String yamlAsString = new String(yamlFileInBytes, StandardCharsets.UTF_8); + log.debug("received yaml: {}", yamlAsString); + yamlStringWrapper.setInnerElement(yamlAsString); + } + protected void init() { } @@ -126,7 +134,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { if (serviceImportManager == null) { ServletContext context = servletRequest.getSession().getServletContext(); WebAppContextWrapper webApplicationContextWrapper = (WebAppContextWrapper) context - .getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR); + .getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR); WebApplicationContext webApplicationContext = webApplicationContextWrapper.getWebAppContext(context); serviceImportManager = webApplicationContext.getBean(ServiceImportManager.class); } @@ -148,9 +156,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { log.info("user userId is null"); Response response = returnMissingInformation(new User()); responseWrapper.setInnerElement(response); - } - - else { + } else { UserBusinessLogic userAdmin = getServletUtils().getUserAdmin(); try { User user = userAdmin.getUser(userUserId); @@ -180,28 +186,24 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { break; } } - } protected void validateUserRole(Wrapper errorResponseWrapper, User user) { - log.debug("validate user role"); + log.debug(VALIDATE_USER_ROLE); if (!user.getRole().equals(Role.ADMIN.name()) && !user.getRole().equals(Role.DESIGNER.name())) { - log.info("user is not in appropriate role to perform action"); + log.info(USER_IS_NOT_IN_APPROPRIATE_ROLE_TO_PERFORM_ACTION); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.RESTRICTED_OPERATION); - log.debug("audit before sending response"); + log.debug(AUDIT_BEFORE_SENDING_RESPONSE); getComponentsUtils().auditResource(responseFormat, user, "", AuditingActionEnum.IMPORT_RESOURCE); - Response response = buildErrorResponse(responseFormat); errorResponseWrapper.setInnerElement(response); } - } protected void validateZip(final Wrapper responseWrapper, final File zipFile, final String payloadName) { if (StringUtils.isEmpty(payloadName)) { log.info("Invalid JSON was received. Payload name is empty"); - final Response errorResponse = - buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); + final Response errorResponse = buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); responseWrapper.setInnerElement(errorResponse); return; } @@ -210,19 +212,15 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { unzippedFolder = ZipUtils.readZip(zipFile, false); } catch (final ZipException e) { log.error("Could not read ZIP file '{}' for validation", zipFile.getName(), e); - final Response errorResponse = - buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); + final Response errorResponse = buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); responseWrapper.setInnerElement(errorResponse); return; } if (!unzippedFolder.containsKey(payloadName)) { log.info("Could no find payload '{}' in ZIP file '{}'", payloadName, zipFile.getName()); - final Response errorResponse = - buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); + final Response errorResponse = buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); responseWrapper.setInnerElement(errorResponse); } - - } protected void validateCsar(final Wrapper responseWrapper, final File csarFile, final String payloadName) { @@ -237,8 +235,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { unzippedFolder = ZipUtils.readZip(csarFile, false); } catch (final ZipException e) { log.error("Could not read CSAR file '{}' for validation", csarFile.getName(), e); - final Response errorResponse = - buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); + final Response errorResponse = buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); responseWrapper.setInnerElement(errorResponse); return; } @@ -247,74 +244,50 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { Response errorResponse = buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); responseWrapper.setInnerElement(errorResponse); } - } protected void fillZipContents(Wrapper yamlStringWrapper, File file) throws ZipException { extractZipContents(yamlStringWrapper, file); } - public static void extractZipContents(Wrapper yamlStringWrapper, File file) throws ZipException { - final Map unzippedFolder = ZipUtils.readZip(file, false); - String ymlName = unzippedFolder.keySet().iterator().next(); - fillToscaTemplateFromZip(yamlStringWrapper, ymlName, file); - } - - private static void fillToscaTemplateFromZip(final Wrapper yamlStringWrapper, final String payloadName, - final File file) throws ZipException { - final Map unzippedFolder = ZipUtils.readZip(file, false); - final byte[] yamlFileInBytes = unzippedFolder.get(payloadName); - final String yamlAsString = new String(yamlFileInBytes, StandardCharsets.UTF_8); - log.debug("received yaml: {}", yamlAsString); - yamlStringWrapper.setInnerElement(yamlAsString); - } - - protected void fillPayloadDataFromFile(Wrapper responseWrapper, UploadResourceInfo uploadResourceInfoWrapper, File file) { - try(InputStream fileInputStream = new FileInputStream(file)){ - - byte [] data = new byte[(int)file.length()]; - if( fileInputStream.read(data) == -1){ - log.info("Invalid json was received."); + protected void fillPayloadDataFromFile(Wrapper responseWrapper, UploadResourceInfo uploadResourceInfoWrapper, File file) { + try (InputStream fileInputStream = new FileInputStream(file)) { + byte[] data = new byte[(int) file.length()]; + if (fileInputStream.read(data) == -1) { + log.info(INVALID_JSON_WAS_RECEIVED); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); - Response errorResp = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResp); } - String payloadData = Base64.encodeBase64String(data); + String payloadData = Base64.encodeBase64String(data); uploadResourceInfoWrapper.setPayloadData(payloadData); - - - } catch (IOException e) { log.info("Invalid json was received or Error while closing input Stream."); log.debug("Invalid json was received or Error while closing input Stream. {}", e.getMessage(), e); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); - Response errorResp = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResp); - } } protected void validateUserRole(Wrapper errorResponseWrapper, User user, ResourceAuthorityTypeEnum resourceAuthority) { - log.debug("validate user role"); + log.debug(VALIDATE_USER_ROLE); if (resourceAuthority == ResourceAuthorityTypeEnum.NORMATIVE_TYPE_BE) { if (!user.getRole().equals(Role.ADMIN.name())) { - log.info("user is not in appropriate role to perform action"); + log.info(USER_IS_NOT_IN_APPROPRIATE_ROLE_TO_PERFORM_ACTION); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.RESTRICTED_OPERATION); - log.debug("audit before sending response"); + log.debug(AUDIT_BEFORE_SENDING_RESPONSE); getComponentsUtils().auditResource(responseFormat, user, "", AuditingActionEnum.IMPORT_RESOURCE); - Response response = buildErrorResponse(responseFormat); errorResponseWrapper.setInnerElement(response); } } else { validateUserRole(errorResponseWrapper, user); } - } - protected void validateAndFillResourceJson(Wrapper responseWrapper, Wrapper uploadResourceInfoWrapper, User user, ResourceAuthorityTypeEnum resourceAuthorityEnum, String resourceInfo) { + protected void validateAndFillResourceJson(Wrapper responseWrapper, Wrapper uploadResourceInfoWrapper, User user, + ResourceAuthorityTypeEnum resourceAuthorityEnum, String resourceInfo) { boolean isValid; try { log.debug("The received json is {}", resourceInfo); @@ -322,6 +295,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { if (resourceInfoObject == null) { isValid = false; } else { + resourceInfoObject.setNormative(!resourceAuthorityEnum.isUserTypeResource()); if (!resourceAuthorityEnum.isBackEndImport()) { isValid = resourceInfoObject.getPayloadName() != null && !resourceInfoObject.getPayloadName().isEmpty(); //only resource name is checked @@ -330,14 +304,12 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } uploadResourceInfoWrapper.setInnerElement(resourceInfoObject); } - } catch (JsonSyntaxException e) { log.debug("Invalid json was received. {}", e.getMessage(), e); isValid = false; - } if (!isValid) { - log.info("Invalid json was received."); + log.info(INVALID_JSON_WAS_RECEIVED); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); getComponentsUtils().auditResource(responseFormat, user, "", AuditingActionEnum.IMPORT_RESOURCE); Response errorResp = buildErrorResponse(responseFormat); @@ -363,6 +335,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { return getServletUtils().getGson(); } + @Override public ComponentsUtils getComponentsUtils() { return getServletUtils().getComponentsUtils(); } @@ -371,8 +344,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { log.debug("checking payload is valid tosca"); boolean isValid; Map mappedToscaTemplate = (Map) new Yaml().load(toscaPayload); - Either findFirstToscaStringElement = ImportUtils.findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); - + Either findFirstToscaStringElement = ImportUtils + .findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); if (findFirstToscaStringElement.isRight()) { isValid = false; } else { @@ -383,17 +356,16 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { isValid = TOSCA_DEFINITION_VERSIONS.contains(defenitionVersionFound); } } - if (!isValid) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_TOSCA_TEMPLATE); Response errorResponse = buildErrorResponse(responseFormat); getComponentsUtils().auditResource(responseFormat, user, uploadResourceInfo.getName(), AuditingActionEnum.IMPORT_RESOURCE); responseWrapper.setInnerElement(errorResponse); } - } - protected void validatePayloadIsYml(Wrapper responseWrapper, User user, UploadResourceInfo uploadResourceInfo, String toscaTamplatePayload) { + protected void validatePayloadIsYml(Wrapper responseWrapper, User user, UploadResourceInfo uploadResourceInfo, + String toscaTamplatePayload) { log.debug("checking tosca template is valid yml"); YamlToObjectConverter yamlConvertor = new YamlToObjectConverter(); boolean isYamlValid = yamlConvertor.isValidYaml(toscaTamplatePayload.getBytes()); @@ -412,7 +384,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { * @return Resource Type name */ private String getResourceType(final String nodeTypeFullName) { - final Optional nodeTypeNamePrefix = getNodeTypeNamePrefix(nodeTypeFullName); if (nodeTypeNamePrefix.isPresent()) { final String nameWithouNamespacePrefix = nodeTypeFullName.substring(nodeTypeNamePrefix.get().length()); @@ -429,12 +400,13 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { /** * Extracts the Node Type Name prefix from the given Node Type Name. + * * @param nodeName - Node Type Name * @return Node Type Name prefix */ private Optional getNodeTypeNamePrefix(final String nodeName) { - final List definedNodeTypeNamespaceList = ConfigurationManager.getConfigurationManager() - .getConfiguration().getDefinedResourceNamespace(); + final List definedNodeTypeNamespaceList = ConfigurationManager.getConfigurationManager().getConfiguration() + .getDefinedResourceNamespace(); for (final String validNamespace : definedNodeTypeNamespaceList) { if (nodeName.startsWith(validNamespace)) { return Optional.of(validNamespace); @@ -443,13 +415,13 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { return Optional.empty(); } - protected void validatePayloadNameSpace(final Wrapper responseWrapper, - final UploadResourceInfo resourceInfo, - final User user, final String toscaPayload) { + protected void validatePayloadNameSpace(final Wrapper responseWrapper, final UploadResourceInfo resourceInfo, final User user, + final String toscaPayload) { boolean isValid; String namespace = ""; final Map mappedToscaTemplate = (Map) new Yaml().load(toscaPayload); - final Either, ResultStatusEnum> toscaElement = ImportUtils.findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); + final Either, ResultStatusEnum> toscaElement = ImportUtils + .findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); if (toscaElement.isRight() || toscaElement.left().value().size() != 1) { isValid = false; } else { @@ -466,43 +438,43 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - private void validatePayloadIsSingleResource(Wrapper responseWrapper, UploadResourceInfo uploadResourceInfo, User user, String toscaPayload) { + private void validatePayloadIsSingleResource(Wrapper responseWrapper, UploadResourceInfo uploadResourceInfo, User user, + String toscaPayload) { log.debug("checking payload contains single resource"); boolean isValid; Map mappedToscaTemplate = (Map) new Yaml().load(toscaPayload); - Either, ResultStatusEnum> toscaElement = ImportUtils.findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); + Either, ResultStatusEnum> toscaElement = ImportUtils + .findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); if (toscaElement.isRight()) { isValid = false; } else { isValid = toscaElement.left().value().size() == 1; } - if (!isValid) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.NOT_SINGLE_RESOURCE); Response errorResponse = buildErrorResponse(responseFormat); getComponentsUtils().auditResource(responseFormat, user, uploadResourceInfo.getName(), AuditingActionEnum.IMPORT_RESOURCE); responseWrapper.setInnerElement(errorResponse); } - } - private void validatePayloadIsNotService(Wrapper responseWrapper, User user, UploadResourceInfo uploadResourceInfo, String toscaPayload) { + private void validatePayloadIsNotService(Wrapper responseWrapper, User user, UploadResourceInfo uploadResourceInfo, + String toscaPayload) { log.debug("checking payload is not a tosca service"); Map mappedToscaTemplate = (Map) new Yaml().load(toscaPayload); - Either toscaElement = ImportUtils.findToscaElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOPOLOGY_TEMPLATE, ToscaElementTypeEnum.ALL); - + Either toscaElement = ImportUtils + .findToscaElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOPOLOGY_TEMPLATE, ToscaElementTypeEnum.ALL); if (toscaElement.isLeft()) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.NOT_RESOURCE_TOSCA_TEMPLATE); Response errorResponse = buildErrorResponse(responseFormat); getComponentsUtils().auditResource(responseFormat, user, uploadResourceInfo.getName(), AuditingActionEnum.IMPORT_RESOURCE); responseWrapper.setInnerElement(errorResponse); } - } private void validateToscaTemplatePayloadName(Wrapper responseWrapper, UploadResourceInfo uploadResourceInfo, User user) { String toscaTemplatePayloadName = uploadResourceInfo.getPayloadName(); - boolean isValidSuffix = isToscaTemplatePayloadNameValid(responseWrapper, toscaTemplatePayloadName); + boolean isValidSuffix = isToscaTemplatePayloadNameValid(toscaTemplatePayloadName); if (!isValidSuffix) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_TOSCA_FILE_EXTENSION); Response errorResponse = buildErrorResponse(responseFormat); @@ -511,7 +483,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - private boolean isToscaTemplatePayloadNameValid(Wrapper responseWrapper, String toscaTemplatePayloadName) { + private boolean isToscaTemplatePayloadNameValid(String toscaTemplatePayloadName) { boolean isValidSuffix = false; if (toscaTemplatePayloadName != null && !toscaTemplatePayloadName.isEmpty()) { for (String validSuffix : TOSCA_YML_CSAR_VALID_SUFFIX) { @@ -521,7 +493,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { return isValidSuffix; } - private void validateMD5(Wrapper responseWrapper, User user, UploadResourceInfo resourceInfo, HttpServletRequest request, String resourceInfoJsonString) { + private void validateMD5(Wrapper responseWrapper, User user, UploadResourceInfo resourceInfo, HttpServletRequest request, + String resourceInfoJsonString) { boolean isValid; String recievedMD5 = request.getHeader(Constants.MD5_HEADER); if (recievedMD5 == null) { @@ -552,12 +525,12 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { throw new ByActionStatusComponentException(ActionStatus.UNSUPPORTED_ERROR, componentType); } - ComponentTypeEnum convertToComponentType(String componentType) { return validateComponentType(componentType); } - private void fillToscaTemplateFromJson(Wrapper responseWrapper, Wrapper yamlStringWrapper, User user, UploadResourceInfo resourceInfo) { + private void fillToscaTemplateFromJson(Wrapper responseWrapper, Wrapper yamlStringWrapper, User user, + UploadResourceInfo resourceInfo) { if (resourceInfo.getPayloadData() == null || resourceInfo.getPayloadData().isEmpty()) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_RESOURCE_PAYLOAD); Response errorResponse = buildErrorResponse(responseFormat); @@ -568,94 +541,77 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { String decodedPayload = new String(Base64.decodeBase64(toscaPayload)); yamlStringWrapper.setInnerElement(decodedPayload); } - } - void fillPayload(Wrapper responseWrapper, Wrapper uploadResourceInfoWrapper, Wrapper yamlStringWrapper, User user, String resourceInfoJsonString, ResourceAuthorityTypeEnum resourceAuthorityEnum, - File file) throws ZipException { - + void fillPayload(Wrapper responseWrapper, Wrapper uploadResourceInfoWrapper, Wrapper yamlStringWrapper, + User user, String resourceInfoJsonString, ResourceAuthorityTypeEnum resourceAuthorityEnum, File file) throws ZipException { if (responseWrapper.isEmpty()) { if (resourceAuthorityEnum.isBackEndImport()) { // PrePayload Validations if (responseWrapper.isEmpty()) { validateDataNotNull(responseWrapper, file, resourceInfoJsonString); } - if(!resourceAuthorityEnum.equals(ResourceAuthorityTypeEnum.CSAR_TYPE_BE)){ + if (!resourceAuthorityEnum.equals(ResourceAuthorityTypeEnum.CSAR_TYPE_BE)) { if (responseWrapper.isEmpty()) { validateZip(responseWrapper, file, uploadResourceInfoWrapper.getInnerElement().getPayloadName()); } - // Fill PayLoad From File if (responseWrapper.isEmpty()) { fillToscaTemplateFromZip(yamlStringWrapper, uploadResourceInfoWrapper.getInnerElement().getPayloadName(), file); } - }else{ - + } else { if (responseWrapper.isEmpty()) { validateCsar(responseWrapper, file, uploadResourceInfoWrapper.getInnerElement().getPayloadName()); } - // Fill PayLoad From File if (responseWrapper.isEmpty()) { fillPayloadDataFromFile(responseWrapper, uploadResourceInfoWrapper.getInnerElement(), file); } - } - } else { // Fill PayLoad From JSON if (responseWrapper.isEmpty()) { fillToscaTemplateFromJson(responseWrapper, yamlStringWrapper, user, uploadResourceInfoWrapper.getInnerElement()); } } - } - } protected void specificResourceAuthorityValidations(final Wrapper responseWrapper, final Wrapper uploadResourceInfoWrapper, - final Wrapper yamlStringWrapper, final User user, - final HttpServletRequest request, final String resourceInfoJsonString, - final ResourceAuthorityTypeEnum resourceAuthorityEnum) { - + final Wrapper yamlStringWrapper, final User user, final HttpServletRequest request, + final String resourceInfoJsonString, final ResourceAuthorityTypeEnum resourceAuthorityEnum) { if (responseWrapper.isEmpty()) { // UI Only Validation if (!resourceAuthorityEnum.isBackEndImport()) { importUIValidations(responseWrapper, uploadResourceInfoWrapper.getInnerElement(), user, request, resourceInfoJsonString); } - // User Defined Type Resources - if (resourceAuthorityEnum.isUserTypeResource() - && !CsarValidationUtils.isCsarPayloadName(uploadResourceInfoWrapper.getInnerElement().getPayloadName()) - && responseWrapper.isEmpty()) { - validatePayloadNameSpace(responseWrapper, uploadResourceInfoWrapper.getInnerElement(), user, yamlStringWrapper.getInnerElement()); + if (resourceAuthorityEnum.isUserTypeResource() && !CsarValidationUtils + .isCsarPayloadName(uploadResourceInfoWrapper.getInnerElement().getPayloadName()) && responseWrapper.isEmpty()) { + validatePayloadNameSpace(responseWrapper, uploadResourceInfoWrapper.getInnerElement(), user, yamlStringWrapper.getInnerElement()); } } } - void commonGeneralValidations(Wrapper responseWrapper, Wrapper userWrapper, Wrapper uploadResourceInfoWrapper, ResourceAuthorityTypeEnum resourceAuthorityEnum, String userId, - String resourceInfoJsonString) { - + void commonGeneralValidations(Wrapper responseWrapper, Wrapper userWrapper, Wrapper uploadResourceInfoWrapper, + ResourceAuthorityTypeEnum resourceAuthorityEnum, String userId, String resourceInfoJsonString) { if (responseWrapper.isEmpty()) { validateUserExist(responseWrapper, userWrapper, userId); } - if (responseWrapper.isEmpty()) { validateUserRole(responseWrapper, userWrapper.getInnerElement(), resourceAuthorityEnum); } - if (responseWrapper.isEmpty()) { - validateAndFillResourceJson(responseWrapper, uploadResourceInfoWrapper, userWrapper.getInnerElement(), resourceAuthorityEnum, resourceInfoJsonString); + validateAndFillResourceJson(responseWrapper, uploadResourceInfoWrapper, userWrapper.getInnerElement(), resourceAuthorityEnum, + resourceInfoJsonString); } - if (responseWrapper.isEmpty()) { validateToscaTemplatePayloadName(responseWrapper, uploadResourceInfoWrapper.getInnerElement(), userWrapper.getInnerElement()); } if (responseWrapper.isEmpty()) { validateResourceType(responseWrapper, uploadResourceInfoWrapper.getInnerElement(), userWrapper.getInnerElement()); } - } private void validateResourceType(Wrapper responseWrapper, UploadResourceInfo uploadResourceInfo, User user) { @@ -668,7 +624,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - private void importUIValidations(Wrapper responseWrapper, UploadResourceInfo resourceInfo, User user, HttpServletRequest request, String resourceInfoJsonString) { + private void importUIValidations(Wrapper responseWrapper, UploadResourceInfo resourceInfo, User user, HttpServletRequest request, + String resourceInfoJsonString) { if (responseWrapper.isEmpty()) { validateMD5(responseWrapper, user, resourceInfo, request, resourceInfoJsonString); } @@ -677,8 +634,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - void commonPayloadValidations(Wrapper responseWrapper, Wrapper yamlStringWrapper, User user, UploadResourceInfo uploadResourceInfo) { - + void commonPayloadValidations(Wrapper responseWrapper, Wrapper yamlStringWrapper, User user, + UploadResourceInfo uploadResourceInfo) { if (responseWrapper.isEmpty()) { validatePayloadIsYml(responseWrapper, user, uploadResourceInfo, yamlStringWrapper.getInnerElement()); } @@ -693,8 +650,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - - void handleImport(Wrapper responseWrapper, User user, UploadResourceInfo resourceInfoObject, String yamlAsString, ResourceAuthorityTypeEnum authority, boolean createNewVersion, String resourceUniqueId) { + void handleImport(Wrapper responseWrapper, User user, UploadResourceInfo resourceInfoObject, String yamlAsString, + ResourceAuthorityTypeEnum authority, boolean createNewVersion, String resourceUniqueId) { ImmutablePair createOrUpdateResponse = null; Response response = null; Object representation = null; @@ -704,15 +661,16 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { importedResourceStatus = importResourceFromUICsar(resourceInfoObject, user, resourceUniqueId); } else if (!authority.isUserTypeResource()) { log.debug("import normative type resource"); - createOrUpdateResponse = resourceImportManager.importNormativeResource(yamlAsString, resourceInfoObject, user, createNewVersion, true); + createOrUpdateResponse = + resourceImportManager.importNormativeResource(yamlAsString, resourceInfoObject, user, createNewVersion, true, false); } else { log.debug("import user resource (not normative type)"); - createOrUpdateResponse = resourceImportManager.importUserDefinedResource(yamlAsString, resourceInfoObject, user, false); + createOrUpdateResponse = resourceImportManager.importUserDefinedResource(yamlAsString, resourceInfoObject, user, false); } - if (createOrUpdateResponse!= null){ + if (createOrUpdateResponse != null) { importedResourceStatus = createOrUpdateResponse; } - if(importedResourceStatus != null){ + if (importedResourceStatus != null) { try { representation = RepresentationUtils.toRepresentation(importedResourceStatus.left); } catch (IOException e) { @@ -723,22 +681,22 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { responseWrapper.setInnerElement(response); } - private ImmutablePair importResourceFromUICsar(UploadResourceInfo resourceInfoObject, User user, String resourceUniqueId) { - + private ImmutablePair importResourceFromUICsar(UploadResourceInfo resourceInfoObject, User user, + String resourceUniqueId) { Resource newResource; ActionStatus actionStatus; Resource resource = new Resource(); String payloadName = resourceInfoObject.getPayloadName(); fillResourceFromResourceInfoObject(resource, resourceInfoObject); - Map csarUIPayload = getCsarFromPayload(resourceInfoObject); getAndValidateCsarYaml(csarUIPayload, resource, user, payloadName); - if (resourceUniqueId == null || resourceUniqueId.isEmpty()) { - newResource = resourceImportManager.getResourceBusinessLogic().createResource(resource, AuditingActionEnum.CREATE_RESOURCE, user, csarUIPayload, payloadName); + newResource = resourceImportManager.getResourceBusinessLogic() + .createResource(resource, AuditingActionEnum.CREATE_RESOURCE, user, csarUIPayload, payloadName); actionStatus = ActionStatus.CREATED; } else { - newResource = resourceImportManager.getResourceBusinessLogic().validateAndUpdateResourceFromCsar(resource, user, csarUIPayload, payloadName, resourceUniqueId); + newResource = resourceImportManager.getResourceBusinessLogic() + .validateAndUpdateResourceFromCsar(resource, user, csarUIPayload, payloadName, resourceUniqueId); actionStatus = ActionStatus.OK; } return new ImmutablePair<>(newResource, actionStatus); @@ -753,39 +711,34 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } private void getAndValidateComponentCsarYaml(Map csarUIPayload, Component component, User user, String csarUUID) { - - Either, ResponseFormat> getToscaYamlRes = CsarValidationUtils.getToscaYaml(csarUIPayload, csarUUID, getComponentsUtils()); - + Either, ResponseFormat> getToscaYamlRes = CsarValidationUtils + .getToscaYaml(csarUIPayload, csarUUID, getComponentsUtils(), null); if (getToscaYamlRes.isRight()) { ResponseFormat responseFormat = getToscaYamlRes.right().value(); log.debug("Error when try to get csar toscayamlFile with csar ID {}, error: {}", csarUUID, responseFormat); if (component instanceof Resource) { - BeEcompErrorManager.getInstance() - .logBeDaoSystemError("Creating resource from CSAR: fetching CSAR with id " + csarUUID + " failed"); - getComponentsUtils().auditResource(responseFormat, user, (Resource)component, AuditingActionEnum.CREATE_RESOURCE); - }else { - BeEcompErrorManager.getInstance() - .logBeDaoSystemError("Creating service from CSAR: fetching CSAR with id " + csarUUID + " failed"); + BeEcompErrorManager.getInstance().logBeDaoSystemError("Creating resource from CSAR: fetching CSAR with id " + csarUUID + " failed"); + getComponentsUtils().auditResource(responseFormat, user, (Resource) component, AuditingActionEnum.CREATE_RESOURCE); + } else { + BeEcompErrorManager.getInstance().logBeDaoSystemError("Creating service from CSAR: fetching CSAR with id " + csarUUID + " failed"); } throwComponentException(responseFormat); } String toscaYaml = getToscaYamlRes.left().value().getValue(); - log.debug("checking tosca template is valid yml"); YamlToObjectConverter yamlConvertor = new YamlToObjectConverter(); boolean isValid = yamlConvertor.isValidYaml(toscaYaml.getBytes()); if (!isValid) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_YAML_FILE); if (component instanceof Resource) { - getComponentsUtils().auditResource(responseFormat, user, (Resource)component, AuditingActionEnum.IMPORT_RESOURCE); + getComponentsUtils().auditResource(responseFormat, user, (Resource) component, AuditingActionEnum.IMPORT_RESOURCE); } throwComponentException(responseFormat); } - log.debug("checking payload is valid tosca"); Map mappedToscaTemplate = (Map) new Yaml().load(toscaYaml); - Either findFirstToscaStringElement = ImportUtils.findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); - + Either findFirstToscaStringElement = ImportUtils + .findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); if (findFirstToscaStringElement.isRight()) { isValid = false; } else { @@ -796,12 +749,11 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { isValid = TOSCA_DEFINITION_VERSIONS.contains(defenitionVersionFound); } } - if (!isValid) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_TOSCA_TEMPLATE); if (component instanceof Resource) { log.debug("enter getAndValidateComponentCsarYaml,component instanceof Resource"); - getComponentsUtils().auditResource(responseFormat, user, (Resource)component, AuditingActionEnum.IMPORT_RESOURCE); + getComponentsUtils().auditResource(responseFormat, user, (Resource) component, AuditingActionEnum.IMPORT_RESOURCE); } throwComponentException(responseFormat); } @@ -810,7 +762,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { private void fillResourceFromResourceInfoObject(Resource resource, UploadResourceInfo resourceInfoObject) { resourceImportManager.populateResourceMetadata(resourceInfoObject, resource); fillArtifacts(resource, resourceInfoObject); - } private void fillArtifacts(Resource resource, UploadResourceInfo resourceInfoObject) { @@ -824,7 +775,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - private void buildArtifactsHM(List artifactList, Map artifactsHM){ + private void buildArtifactsHM(List artifactList, Map artifactsHM) { for (UploadArtifactInfo artifact : artifactList) { ArtifactDefinition artifactDef = new ArtifactDefinition(); artifactDef.setArtifactName(artifact.getArtifactName()); @@ -839,22 +790,19 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { private Map getCsarFromPayload(UploadResourceInfo innerElement) { String csarUUID = innerElement.getPayloadName(); String payloadData = innerElement.getPayloadData(); - return getComponentCsarFromPayload(csarUUID, payloadData); } - private Map getComponentCsarFromPayload(String csarUUID, String payloadData){ + private Map getComponentCsarFromPayload(String csarUUID, String payloadData) { if (payloadData == null) { log.info("Failed to decode received csar {}", csarUUID); throw new ByActionStatusComponentException(ActionStatus.CSAR_NOT_FOUND, csarUUID); } - byte[] decodedPayload = Base64.decodeBase64(payloadData.getBytes(StandardCharsets.UTF_8)); if (decodedPayload == null) { log.info("Failed to decode received csar {}", csarUUID); throw new ByActionStatusComponentException(ActionStatus.CSAR_NOT_FOUND, csarUUID); } - Map csar = null; try { csar = ZipUtils.readZip(decodedPayload, false); @@ -873,7 +821,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } else { dataWrapper.setInnerElement(new String(bytes, StandardCharsets.UTF_8)); } - } void validateClassParse(String data, Wrapper parsedClassWrapper, Supplier> classGen, Wrapper errorWrapper) { @@ -890,7 +837,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - void validateComponentInstanceBusinessLogic(HttpServletRequest request, String containerComponentType, Wrapper blWrapper, Wrapper errorWrapper) { + void validateComponentInstanceBusinessLogic(HttpServletRequest request, String containerComponentType, + Wrapper blWrapper, Wrapper errorWrapper) { ServletContext context = request.getSession().getServletContext(); ComponentInstanceBusinessLogic componentInstanceLogic = getComponentInstanceBL(context); if (componentInstanceLogic == null) { @@ -915,7 +863,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { protected void validateXECOMPInstanceIDHeader(String instanceIdHeader, Wrapper responseWrapper) { ResponseFormat responseFormat; - if(StringUtils.isEmpty(instanceIdHeader) ){ + if (StringUtils.isEmpty(instanceIdHeader)) { log.debug("Missing X-ECOMP-InstanceID header"); responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.MISSING_X_ECOMP_INSTANCE_ID); responseWrapper.setInnerElement(responseFormat); @@ -924,7 +872,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { protected void validateHttpCspUserIdHeader(String header, Wrapper responseWrapper) { ResponseFormat responseFormat; - if( StringUtils.isEmpty(header)){ + if (StringUtils.isEmpty(header)) { log.debug("MissingUSER_ID"); responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.MISSING_USER_ID); responseWrapper.setInnerElement(responseFormat); @@ -932,7 +880,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } Either parseToObject(String json, Supplier> classSupplier) { - try { T object = RepresentationUtils.fromRepresentation(json, classSupplier.get()); return Either.left(object); @@ -953,59 +900,48 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { return Either.right(responseFormat); } } + protected void validateNotEmptyBody(String data) { if (StringUtils.isEmpty(data)) { throw new ByActionStatusComponentException(ActionStatus.MISSING_BODY); } } - protected void commonServiceGeneralValidations( - Wrapper responseWrapper, Wrapper userWrapper, - Wrapper uploadServiceInfoWrapper, ServiceAuthorityTypeEnum serviceAuthorityEnum, - String userUserId, - String serviceInfoJsonString) { - + protected void commonServiceGeneralValidations(Wrapper responseWrapper, Wrapper userWrapper, + Wrapper uploadServiceInfoWrapper, ServiceAuthorityTypeEnum serviceAuthorityEnum, + String userUserId, String serviceInfoJsonString) { if (responseWrapper.isEmpty()) { validateUserExist(responseWrapper, userWrapper, userUserId); } - if (responseWrapper.isEmpty()) { validateUserRole(responseWrapper, userWrapper.getInnerElement(), serviceAuthorityEnum); } - if (responseWrapper.isEmpty()) { - validateAndFillServiceJson(responseWrapper, uploadServiceInfoWrapper, userWrapper.getInnerElement(), - serviceAuthorityEnum, serviceInfoJsonString); + validateAndFillServiceJson(responseWrapper, uploadServiceInfoWrapper, serviceAuthorityEnum, + serviceInfoJsonString); } - if (responseWrapper.isEmpty()) { - validateToscaTemplatePayloadName(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), - userWrapper.getInnerElement()); + validateToscaTemplatePayloadName(responseWrapper, uploadServiceInfoWrapper.getInnerElement()); } - } - protected void validateUserRole(Wrapper errorResponseWrapper, User user, - ServiceAuthorityTypeEnum serviceAuthority) { - log.debug("validate user role"); + protected void validateUserRole(Wrapper errorResponseWrapper, User user, ServiceAuthorityTypeEnum serviceAuthority) { + log.debug(VALIDATE_USER_ROLE); if (serviceAuthority == ServiceAuthorityTypeEnum.NORMATIVE_TYPE_BE) { if (!user.getRole().equals(Role.ADMIN.name())) { - log.info("user is not in appropriate role to perform action"); - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.RESTRICTED_OPERATION); - log.debug("audit before sending response"); + log.info(USER_IS_NOT_IN_APPROPRIATE_ROLE_TO_PERFORM_ACTION); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.RESTRICTED_OPERATION); + log.debug(AUDIT_BEFORE_SENDING_RESPONSE); Response response = buildErrorResponse(responseFormat); errorResponseWrapper.setInnerElement(response); } } else { validateUserRole(errorResponseWrapper, user); } - } - protected void validateAndFillServiceJson(Wrapper responseWrapper, - Wrapper uploadServiceInfoWrapper, User user, - ServiceAuthorityTypeEnum serviceAuthorityEnum, String serviceInfo) { + protected void validateAndFillServiceJson(Wrapper responseWrapper, Wrapper uploadServiceInfoWrapper, + ServiceAuthorityTypeEnum serviceAuthorityEnum, String serviceInfo) { boolean isValid; try { log.debug("The received json is {}", serviceInfo); @@ -1014,100 +950,80 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { isValid = false; } else { if (!serviceAuthorityEnum.isBackEndImport()) { - isValid = - serviceInfoObject.getPayloadName() != null && !serviceInfoObject.getPayloadName().isEmpty(); + isValid = serviceInfoObject.getPayloadName() != null && !serviceInfoObject.getPayloadName().isEmpty(); //only service name is checked } else { isValid = true; } uploadServiceInfoWrapper.setInnerElement(serviceInfoObject); - log.debug("get isValid:{},serviceInfoObject get name:{},get tags:{},getContactId:{}," + - " getPayloadName:{}",isValid, - uploadServiceInfoWrapper.getInnerElement().getName(), - uploadServiceInfoWrapper.getInnerElement().getTags(), - uploadServiceInfoWrapper.getInnerElement().getContactId(), - uploadServiceInfoWrapper.getInnerElement().getPayloadName()); + log.debug("get isValid:{},serviceInfoObject get name:{},get tags:{},getContactId:{}," + " getPayloadName:{}", isValid, + uploadServiceInfoWrapper.getInnerElement().getName(), uploadServiceInfoWrapper.getInnerElement().getTags(), + uploadServiceInfoWrapper.getInnerElement().getContactId(), uploadServiceInfoWrapper.getInnerElement().getPayloadName()); } - } catch (JsonSyntaxException e) { log.debug("enter validateAndFillServiceJson,Invalid json was received. {}", e.getMessage(), e); isValid = false; - } if (!isValid) { - log.info("Invalid json was received."); + log.info(INVALID_JSON_WAS_RECEIVED); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); Response errorResp = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResp); } } - protected void validateToscaTemplatePayloadName(Wrapper responseWrapper, - UploadServiceInfo uploadServiceInfo, User user) { + protected void validateToscaTemplatePayloadName(Wrapper responseWrapper, UploadServiceInfo uploadServiceInfo) { String toscaTemplatePayloadName = uploadServiceInfo.getPayloadName(); - boolean isValidSuffix = isToscaTemplatePayloadNameValid(responseWrapper, toscaTemplatePayloadName); + boolean isValidSuffix = isToscaTemplatePayloadNameValid(toscaTemplatePayloadName); if (!isValidSuffix) { - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.INVALID_TOSCA_FILE_EXTENSION); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_TOSCA_FILE_EXTENSION); Response errorResponse = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResponse); } - } - - protected void specificServiceAuthorityValidations(Wrapper responseWrapper, - Wrapper uploadServiceInfoWrapper, Wrapper yamlStringWrapper, User user, - HttpServletRequest request, String serviceInfoJsonString, ServiceAuthorityTypeEnum serviceAuthorityEnum) - throws FileNotFoundException { - + protected void specificServiceAuthorityValidations(Wrapper responseWrapper, Wrapper uploadServiceInfoWrapper, + Wrapper yamlStringWrapper, HttpServletRequest request, + String serviceInfoJsonString, ServiceAuthorityTypeEnum serviceAuthorityEnum) { if (responseWrapper.isEmpty()) { // UI Only Validation if (!serviceAuthorityEnum.isBackEndImport()) { - importUIValidations(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), user, request, - serviceInfoJsonString); + importUIValidations(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), request, serviceInfoJsonString); } - // User Defined Type Services - if (serviceAuthorityEnum.isUserTypeService() && !CsarValidationUtils.isCsarPayloadName( - uploadServiceInfoWrapper.getInnerElement().getPayloadName())) { - if (responseWrapper.isEmpty()) { - validatePayloadNameSpace(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), user, - yamlStringWrapper.getInnerElement()); - } - + if (serviceAuthorityEnum.isUserTypeService() + && !CsarValidationUtils.isCsarPayloadName(uploadServiceInfoWrapper.getInnerElement().getPayloadName()) + && responseWrapper.isEmpty()) { + validatePayloadNameSpace(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), yamlStringWrapper.getInnerElement()); } } } - protected void importUIValidations(Wrapper responseWrapper, UploadServiceInfo serviceInfo, User user, - HttpServletRequest request, String serviceInfoJsonString) { + protected void importUIValidations(Wrapper responseWrapper, UploadServiceInfo serviceInfo, HttpServletRequest request, + String serviceInfoJsonString) { if (responseWrapper.isEmpty()) { - validateMD5(responseWrapper, user, serviceInfo, request, serviceInfoJsonString); + validateMD5(responseWrapper, request, serviceInfoJsonString); } - if (responseWrapper.isEmpty() && request != null && request.getMethod() != null && request.getMethod() - .equals("POST")) { - validateServiceDoesNotExist(responseWrapper, user, serviceInfo.getName()); + if (responseWrapper.isEmpty() && request != null && request.getMethod() != null && request.getMethod().equals("POST")) { + validateServiceDoesNotExist(responseWrapper, serviceInfo.getName()); } } - protected void validatePayloadNameSpace(Wrapper responseWrapper, UploadServiceInfo serviceInfo, User user, - String toscaPayload) { + protected void validatePayloadNameSpace(Wrapper responseWrapper, UploadServiceInfo serviceInfo, String toscaPayload) { boolean isValid; String nameSpace = ""; Map mappedToscaTemplate = (Map) new Yaml().load(toscaPayload); - Either, ResultStatusEnum> toscaElement = - ImportUtils.findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); + Either, ResultStatusEnum> toscaElement = ImportUtils + .findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); if (toscaElement.isRight() || toscaElement.left().value().size() != 1) { isValid = false; } else { nameSpace = toscaElement.left().value().keySet().iterator().next(); isValid = nameSpace.startsWith(Constants.USER_DEFINED_SERVICE_NAMESPACE_PREFIX); - log.debug("enter validatePayloadNameSpace,get nameSpace:{},get Valid is:{}",nameSpace,isValid); + log.debug("enter validatePayloadNameSpace,get nameSpace:{},get Valid is:{}", nameSpace, isValid); } if (!isValid) { - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.INVALID_SERVICE_NAMESPACE); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_SERVICE_NAMESPACE); Response errorResponse = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResponse); } else { @@ -1120,11 +1036,10 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { serviceInfo.setServiceType(ResourceTypeEnum.SERVICE.name()); } } - } - protected void validateMD5(Wrapper responseWrapper, User user, UploadServiceInfo serviceInfo, - HttpServletRequest request, String serviceInfoJsonString) { + protected void validateMD5(Wrapper responseWrapper, HttpServletRequest request, + String serviceInfoJsonString) { boolean isValid; String recievedMD5 = request.getHeader(Constants.MD5_HEADER); if (recievedMD5 == null) { @@ -1134,15 +1049,13 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { isValid = calculateMD5.equals(recievedMD5); } if (!isValid) { - ResponseFormat responseFormat = - getComponentsUtils().getResponseFormat(ActionStatus.INVALID_SERVICE_CHECKSUM); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_SERVICE_CHECKSUM); Response errorResponse = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResponse); } } - - protected void validateServiceDoesNotExist(Wrapper responseWrapper, User user, String serviceName) { + protected void validateServiceDoesNotExist(Wrapper responseWrapper, String serviceName) { if (serviceImportManager.isServiceExist(serviceName)) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.SERVICE_ALREADY_EXISTS); Response errorResponse = buildErrorResponse(responseFormat); @@ -1150,68 +1063,48 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - protected void handleImportService(Wrapper responseWrapper, User user, - UploadServiceInfo serviceInfoObject, String yamlAsString, ServiceAuthorityTypeEnum authority, - boolean createNewVersion, String serviceUniqueId) throws ZipException { - + protected void handleImportService(Wrapper responseWrapper, User user, UploadServiceInfo serviceInfoObject) { Response response = null; - Object representation = null; ImmutablePair importedServiceStatus = null; if (CsarValidationUtils.isCsarPayloadName(serviceInfoObject.getPayloadName())) { log.debug("import service from csar"); - importedServiceStatus = importServiceFromUICsar(serviceInfoObject, user, serviceUniqueId); + importedServiceStatus = importServiceFromUICsar(serviceInfoObject, user); } - if (importedServiceStatus != null) { + Object representation = null; try { representation = RepresentationUtils.toRepresentation(importedServiceStatus.left); } catch (IOException e) { log.debug("Error while building service representation : {}", e.getMessage(), e); } - response = buildOkResponse(getComponentsUtils().getResponseFormat(importedServiceStatus.right), - representation); + response = buildOkResponse(getComponentsUtils().getResponseFormat(importedServiceStatus.right), representation); } responseWrapper.setInnerElement(response); } - private ImmutablePair importServiceFromUICsar(UploadServiceInfo serviceInfoObject, User user, - String serviceUniqueId) throws ZipException { - - Service newService; - ImmutablePair result = null; - ActionStatus actionStatus; + private ImmutablePair importServiceFromUICsar(UploadServiceInfo serviceInfoObject, User user) { Service service = new Service(); String payloadName = serviceInfoObject.getPayloadName(); fillServiceFromServiceInfoObject(service, serviceInfoObject); - Map csarUIPayloadRes = getCsarFromPayload(serviceInfoObject); - getAndValidateCsarYaml(csarUIPayloadRes, service, user, payloadName); - - newService = serviceImportManager.getServiceImportBusinessLogic() - .createService(service, AuditingActionEnum.CREATE_SERVICE, user, csarUIPayloadRes, - payloadName); - actionStatus = ActionStatus.CREATED; - - return new ImmutablePair<>(newService, actionStatus); + final Service newService = serviceImportManager.getServiceImportBusinessLogic() + .createService(service, AuditingActionEnum.CREATE_SERVICE, user, csarUIPayloadRes, payloadName); + return new ImmutablePair<>(newService, ActionStatus.CREATED); } - private void fillServiceFromServiceInfoObject(Service service, UploadServiceInfo serviceInfoObject) { serviceImportManager.populateServiceMetadata(serviceInfoObject, service); fillArtifacts(service, serviceInfoObject); - } - private Map getCsarFromPayload(UploadServiceInfo innerElement) - throws ZipException { + private Map getCsarFromPayload(UploadServiceInfo innerElement) { String csarUUID = innerElement.getPayloadName(); String payloadData = innerElement.getPayloadData(); return getComponentCsarFromPayload(csarUUID, payloadData); } - private void getAndValidateCsarYaml(Map csarUIPayload, Service service, User user, - String csarUUID) { + private void getAndValidateCsarYaml(Map csarUIPayload, Service service, User user, String csarUUID) { getAndValidateComponentCsarYaml(csarUIPayload, service, user, csarUUID); } @@ -1225,8 +1118,10 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } } + /** * import service payload to postman + * * @param responseWrapper * @param uploadServiceInfoWrapper * @param yamlStringWrapper @@ -1236,8 +1131,9 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { * @param file * @throws ZipException */ - protected void fillServicePayload(Wrapper responseWrapper, Wrapper uploadServiceInfoWrapper, Wrapper yamlStringWrapper, User user, String serviceInfoJsonString, ServiceAuthorityTypeEnum serviceAuthorityEnum, - File file) throws ZipException { + protected void fillServicePayload(Wrapper responseWrapper, Wrapper uploadServiceInfoWrapper, + Wrapper yamlStringWrapper, User user, String serviceInfoJsonString, + ServiceAuthorityTypeEnum serviceAuthorityEnum, File file) throws ZipException { log.debug("enter fillServicePayload"); if (responseWrapper.isEmpty()) { log.debug("enter fillServicePayload,get responseWrapper is empty"); @@ -1246,20 +1142,18 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { if (responseWrapper.isEmpty()) { validateDataNotNull(responseWrapper, file, serviceInfoJsonString); } - if (responseWrapper.isEmpty()){ + if (responseWrapper.isEmpty()) { log.debug("enter fillServicePayload,responseWrapper is empty"); } - if(!serviceAuthorityEnum.equals(ServiceAuthorityTypeEnum.CSAR_TYPE_BE)){ + if (!serviceAuthorityEnum.equals(ServiceAuthorityTypeEnum.CSAR_TYPE_BE)) { if (responseWrapper.isEmpty()) { validateZip(responseWrapper, file, uploadServiceInfoWrapper.getInnerElement().getPayloadName()); } - // Fill PayLoad From File if (responseWrapper.isEmpty()) { fillToscaTemplateFromZip(yamlStringWrapper, uploadServiceInfoWrapper.getInnerElement().getPayloadName(), file); } - }else{ - + } else { log.debug("enter fillServicePayload,ServiceAuthorityTypeEnum is CSAR_TYPE_BE"); if (responseWrapper.isEmpty()) { validateCsar(responseWrapper, file, uploadServiceInfoWrapper.getInnerElement().getPayloadName()); @@ -1271,50 +1165,41 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { if (responseWrapper.isEmpty()) { fillServicePayloadDataFromFile(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), file); } - } - } else { // Fill PayLoad From JSON if (responseWrapper.isEmpty()) { fillServiceToscaTemplateFromJson(responseWrapper, yamlStringWrapper, user, uploadServiceInfoWrapper.getInnerElement()); } } - } - } - protected void fillServicePayloadDataFromFile(Wrapper responseWrapper, UploadServiceInfo uploadServiceInfoWrapper, File file) { - try(InputStream fileInputStream = new FileInputStream(file)){ - + protected void fillServicePayloadDataFromFile(Wrapper responseWrapper, UploadServiceInfo uploadServiceInfoWrapper, File file) { + try (InputStream fileInputStream = new FileInputStream(file)) { log.debug("enter fillServicePayloadDataFromFile"); - byte [] data = new byte[(int)file.length()]; - if( fileInputStream.read(data) == -1){ - log.info("Invalid json was received."); + byte[] data = new byte[(int) file.length()]; + if (fileInputStream.read(data) == -1) { + log.info(INVALID_JSON_WAS_RECEIVED); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); - Response errorResp = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResp); } - String payloadData = Base64.encodeBase64String(data); + String payloadData = Base64.encodeBase64String(data); uploadServiceInfoWrapper.setPayloadData(payloadData); - log.debug("enter fillServicePayloadDataFromFile,get payloadData:{}", - uploadServiceInfoWrapper.getPayloadData()); - - log.debug("enter fillServicePayloadDataFromFile,get uploadService:{}",uploadServiceInfoWrapper); - + log.debug("enter fillServicePayloadDataFromFile,get payloadData:{}", uploadServiceInfoWrapper.getPayloadData()); + log.debug("enter fillServicePayloadDataFromFile,get uploadService:{}", uploadServiceInfoWrapper); } catch (IOException e) { log.info("Invalid json was received or Error while closing input Stream."); log.debug("Invalid json was received or Error while closing input Stream. {}", e.getMessage(), e); ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT); - Response errorResp = buildErrorResponse(responseFormat); responseWrapper.setInnerElement(errorResp); } } - private void fillServiceToscaTemplateFromJson(Wrapper responseWrapper, Wrapper yamlStringWrapper, User user, UploadServiceInfo serviceInfo) { + private void fillServiceToscaTemplateFromJson(Wrapper responseWrapper, Wrapper yamlStringWrapper, User user, + UploadServiceInfo serviceInfo) { if (serviceInfo.getPayloadData() == null || serviceInfo.getPayloadData().isEmpty()) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_RESOURCE_PAYLOAD); Response errorResponse = buildErrorResponse(responseFormat); @@ -1326,5 +1211,4 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { yamlStringWrapper.setInnerElement(decodedPayload); } } - }