diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/servlets/AbstractValidationsServlet.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/servlets/AbstractValidationsServlet.java | 436 |
1 files changed, 161 insertions, 275 deletions
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..beaa08cc4f 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; @@ -43,7 +42,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 +92,38 @@ 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<String> 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<String> 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<String> TOSCA_YML_CSAR_VALID_SUFFIX = Arrays.asList(".yml", ".yaml", ".csar", ".meta"); - + 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) { + public AbstractValidationsServlet(UserBusinessLogic userBusinessLogic, ComponentInstanceBusinessLogic componentInstanceBL, + ComponentsUtils componentsUtils, ServletUtils servletUtils, ResourceImportManager resourceImportManager) { super(userBusinessLogic, componentsUtils); this.servletUtils = servletUtils; this.resourceImportManager = resourceImportManager; this.componentInstanceBusinessLogic = componentInstanceBL; } + public static void extractZipContents(Wrapper<String> yamlStringWrapper, File file) throws ZipException { + final Map<String, byte[]> unzippedFolder = ZipUtils.readZip(file, false); + String ymlName = unzippedFolder.keySet().iterator().next(); + fillToscaTemplateFromZip(yamlStringWrapper, ymlName, file); + } + + private static void fillToscaTemplateFromZip(final Wrapper<String> yamlStringWrapper, final String payloadName, final File file) + throws ZipException { + final Map<String, byte[]> 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 +131,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 +153,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,7 +183,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { break; } } - } protected void validateUserRole(Wrapper<Response> errorResponseWrapper, User user) { @@ -190,18 +192,15 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.RESTRICTED_OPERATION); 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<Response> 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 +209,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<Response> responseWrapper, final File csarFile, final String payloadName) { @@ -237,8 +232,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,52 +241,29 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { Response errorResponse = buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT)); responseWrapper.setInnerElement(errorResponse); } - } protected void fillZipContents(Wrapper<String> yamlStringWrapper, File file) throws ZipException { extractZipContents(yamlStringWrapper, file); } - public static void extractZipContents(Wrapper<String> yamlStringWrapper, File file) throws ZipException { - final Map<String, byte[]> unzippedFolder = ZipUtils.readZip(file, false); - String ymlName = unzippedFolder.keySet().iterator().next(); - fillToscaTemplateFromZip(yamlStringWrapper, ymlName, file); - } - - private static void fillToscaTemplateFromZip(final Wrapper<String> yamlStringWrapper, final String payloadName, - final File file) throws ZipException { - final Map<String, byte[]> 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<Response> responseWrapper, UploadResourceInfo uploadResourceInfoWrapper, File file) { - try(InputStream fileInputStream = new FileInputStream(file)){ - - byte [] data = new byte[(int)file.length()]; - if( fileInputStream.read(data) == -1){ + protected void fillPayloadDataFromFile(Wrapper<Response> 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); - } } @@ -304,17 +275,16 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.RESTRICTED_OPERATION); 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<Response> responseWrapper, Wrapper<UploadResourceInfo> uploadResourceInfoWrapper, User user, ResourceAuthorityTypeEnum resourceAuthorityEnum, String resourceInfo) { + protected void validateAndFillResourceJson(Wrapper<Response> responseWrapper, Wrapper<UploadResourceInfo> uploadResourceInfoWrapper, User user, + ResourceAuthorityTypeEnum resourceAuthorityEnum, String resourceInfo) { boolean isValid; try { log.debug("The received json is {}", resourceInfo); @@ -330,11 +300,9 @@ 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."); @@ -371,8 +339,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { log.debug("checking payload is valid tosca"); boolean isValid; Map<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(toscaPayload); - Either<String, ResultStatusEnum> findFirstToscaStringElement = ImportUtils.findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); - + Either<String, ResultStatusEnum> findFirstToscaStringElement = ImportUtils + .findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); if (findFirstToscaStringElement.isRight()) { isValid = false; } else { @@ -383,17 +351,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<Response> responseWrapper, User user, UploadResourceInfo uploadResourceInfo, String toscaTamplatePayload) { + protected void validatePayloadIsYml(Wrapper<Response> 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 +379,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { * @return Resource Type name */ private String getResourceType(final String nodeTypeFullName) { - final Optional<String> nodeTypeNamePrefix = getNodeTypeNamePrefix(nodeTypeFullName); if (nodeTypeNamePrefix.isPresent()) { final String nameWithouNamespacePrefix = nodeTypeFullName.substring(nodeTypeNamePrefix.get().length()); @@ -429,12 +395,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<String> getNodeTypeNamePrefix(final String nodeName) { - final List<String> definedNodeTypeNamespaceList = ConfigurationManager.getConfigurationManager() - .getConfiguration().getDefinedResourceNamespace(); + final List<String> definedNodeTypeNamespaceList = ConfigurationManager.getConfigurationManager().getConfiguration() + .getDefinedResourceNamespace(); for (final String validNamespace : definedNodeTypeNamespaceList) { if (nodeName.startsWith(validNamespace)) { return Optional.of(validNamespace); @@ -443,13 +410,13 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { return Optional.empty(); } - protected void validatePayloadNameSpace(final Wrapper<Response> responseWrapper, - final UploadResourceInfo resourceInfo, - final User user, final String toscaPayload) { + protected void validatePayloadNameSpace(final Wrapper<Response> responseWrapper, final UploadResourceInfo resourceInfo, final User user, + final String toscaPayload) { boolean isValid; String namespace = ""; final Map<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(toscaPayload); - final Either<Map<String, Object>, ResultStatusEnum> toscaElement = ImportUtils.findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); + final Either<Map<String, Object>, ResultStatusEnum> toscaElement = ImportUtils + .findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); if (toscaElement.isRight() || toscaElement.left().value().size() != 1) { isValid = false; } else { @@ -466,38 +433,38 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - private void validatePayloadIsSingleResource(Wrapper<Response> responseWrapper, UploadResourceInfo uploadResourceInfo, User user, String toscaPayload) { + private void validatePayloadIsSingleResource(Wrapper<Response> responseWrapper, UploadResourceInfo uploadResourceInfo, User user, + String toscaPayload) { log.debug("checking payload contains single resource"); boolean isValid; Map<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(toscaPayload); - Either<Map<String, Object>, ResultStatusEnum> toscaElement = ImportUtils.findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); + Either<Map<String, Object>, 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<Response> responseWrapper, User user, UploadResourceInfo uploadResourceInfo, String toscaPayload) { + private void validatePayloadIsNotService(Wrapper<Response> responseWrapper, User user, UploadResourceInfo uploadResourceInfo, + String toscaPayload) { log.debug("checking payload is not a tosca service"); Map<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(toscaPayload); - Either<Object, ResultStatusEnum> toscaElement = ImportUtils.findToscaElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOPOLOGY_TEMPLATE, ToscaElementTypeEnum.ALL); - + Either<Object, ResultStatusEnum> 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<Response> responseWrapper, UploadResourceInfo uploadResourceInfo, User user) { @@ -521,7 +488,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { return isValidSuffix; } - private void validateMD5(Wrapper<Response> responseWrapper, User user, UploadResourceInfo resourceInfo, HttpServletRequest request, String resourceInfoJsonString) { + private void validateMD5(Wrapper<Response> responseWrapper, User user, UploadResourceInfo resourceInfo, HttpServletRequest request, + String resourceInfoJsonString) { boolean isValid; String recievedMD5 = request.getHeader(Constants.MD5_HEADER); if (recievedMD5 == null) { @@ -552,12 +520,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<Response> responseWrapper, Wrapper<String> yamlStringWrapper, User user, UploadResourceInfo resourceInfo) { + private void fillToscaTemplateFromJson(Wrapper<Response> responseWrapper, Wrapper<String> 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 +536,77 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { String decodedPayload = new String(Base64.decodeBase64(toscaPayload)); yamlStringWrapper.setInnerElement(decodedPayload); } - } - void fillPayload(Wrapper<Response> responseWrapper, Wrapper<UploadResourceInfo> uploadResourceInfoWrapper, Wrapper<String> yamlStringWrapper, User user, String resourceInfoJsonString, ResourceAuthorityTypeEnum resourceAuthorityEnum, - File file) throws ZipException { - + void fillPayload(Wrapper<Response> responseWrapper, Wrapper<UploadResourceInfo> uploadResourceInfoWrapper, Wrapper<String> 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<Response> responseWrapper, final Wrapper<UploadResourceInfo> uploadResourceInfoWrapper, - final Wrapper<String> yamlStringWrapper, final User user, - final HttpServletRequest request, final String resourceInfoJsonString, - final ResourceAuthorityTypeEnum resourceAuthorityEnum) { - + final Wrapper<String> 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<Response> responseWrapper, Wrapper<User> userWrapper, Wrapper<UploadResourceInfo> uploadResourceInfoWrapper, ResourceAuthorityTypeEnum resourceAuthorityEnum, String userId, - String resourceInfoJsonString) { - + void commonGeneralValidations(Wrapper<Response> responseWrapper, Wrapper<User> userWrapper, Wrapper<UploadResourceInfo> 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<Response> responseWrapper, UploadResourceInfo uploadResourceInfo, User user) { @@ -668,7 +619,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - private void importUIValidations(Wrapper<Response> responseWrapper, UploadResourceInfo resourceInfo, User user, HttpServletRequest request, String resourceInfoJsonString) { + private void importUIValidations(Wrapper<Response> responseWrapper, UploadResourceInfo resourceInfo, User user, HttpServletRequest request, + String resourceInfoJsonString) { if (responseWrapper.isEmpty()) { validateMD5(responseWrapper, user, resourceInfo, request, resourceInfoJsonString); } @@ -677,8 +629,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - void commonPayloadValidations(Wrapper<Response> responseWrapper, Wrapper<String> yamlStringWrapper, User user, UploadResourceInfo uploadResourceInfo) { - + void commonPayloadValidations(Wrapper<Response> responseWrapper, Wrapper<String> yamlStringWrapper, User user, + UploadResourceInfo uploadResourceInfo) { if (responseWrapper.isEmpty()) { validatePayloadIsYml(responseWrapper, user, uploadResourceInfo, yamlStringWrapper.getInnerElement()); } @@ -693,8 +645,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - - void handleImport(Wrapper<Response> responseWrapper, User user, UploadResourceInfo resourceInfoObject, String yamlAsString, ResourceAuthorityTypeEnum authority, boolean createNewVersion, String resourceUniqueId) { + void handleImport(Wrapper<Response> responseWrapper, User user, UploadResourceInfo resourceInfoObject, String yamlAsString, + ResourceAuthorityTypeEnum authority, boolean createNewVersion, String resourceUniqueId) { ImmutablePair<Resource, ActionStatus> createOrUpdateResponse = null; Response response = null; Object representation = null; @@ -707,12 +659,12 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { createOrUpdateResponse = resourceImportManager.importNormativeResource(yamlAsString, resourceInfoObject, user, createNewVersion, true); } 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 +675,22 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { responseWrapper.setInnerElement(response); } - private ImmutablePair<Resource, ActionStatus> importResourceFromUICsar(UploadResourceInfo resourceInfoObject, User user, String resourceUniqueId) { - + private ImmutablePair<Resource, ActionStatus> importResourceFromUICsar(UploadResourceInfo resourceInfoObject, User user, + String resourceUniqueId) { Resource newResource; ActionStatus actionStatus; Resource resource = new Resource(); String payloadName = resourceInfoObject.getPayloadName(); fillResourceFromResourceInfoObject(resource, resourceInfoObject); - Map<String, byte[]> 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 +705,34 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } private void getAndValidateComponentCsarYaml(Map<String, byte[]> csarUIPayload, Component component, User user, String csarUUID) { - - Either<ImmutablePair<String, String>, ResponseFormat> getToscaYamlRes = CsarValidationUtils.getToscaYaml(csarUIPayload, csarUUID, getComponentsUtils()); - + Either<ImmutablePair<String, String>, ResponseFormat> getToscaYamlRes = CsarValidationUtils + .getToscaYaml(csarUIPayload, csarUUID, getComponentsUtils()); 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<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(toscaYaml); - Either<String, ResultStatusEnum> findFirstToscaStringElement = ImportUtils.findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); - + Either<String, ResultStatusEnum> findFirstToscaStringElement = ImportUtils + .findFirstToscaStringElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.TOSCA_VERSION); if (findFirstToscaStringElement.isRight()) { isValid = false; } else { @@ -796,12 +743,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 +756,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 +769,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - private void buildArtifactsHM(List<UploadArtifactInfo> artifactList, Map<String, ArtifactDefinition> artifactsHM){ + private void buildArtifactsHM(List<UploadArtifactInfo> artifactList, Map<String, ArtifactDefinition> artifactsHM) { for (UploadArtifactInfo artifact : artifactList) { ArtifactDefinition artifactDef = new ArtifactDefinition(); artifactDef.setArtifactName(artifact.getArtifactName()); @@ -839,22 +784,19 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { private Map<String, byte[]> getCsarFromPayload(UploadResourceInfo innerElement) { String csarUUID = innerElement.getPayloadName(); String payloadData = innerElement.getPayloadData(); - return getComponentCsarFromPayload(csarUUID, payloadData); } - private Map<String, byte[]> getComponentCsarFromPayload(String csarUUID, String payloadData){ + private Map<String, byte[]> 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<String, byte[]> csar = null; try { csar = ZipUtils.readZip(decodedPayload, false); @@ -873,7 +815,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } else { dataWrapper.setInnerElement(new String(bytes, StandardCharsets.UTF_8)); } - } <T> void validateClassParse(String data, Wrapper<T> parsedClassWrapper, Supplier<Class<T>> classGen, Wrapper<ResponseFormat> errorWrapper) { @@ -890,7 +831,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - void validateComponentInstanceBusinessLogic(HttpServletRequest request, String containerComponentType, Wrapper<ComponentInstanceBusinessLogic> blWrapper, Wrapper<ResponseFormat> errorWrapper) { + void validateComponentInstanceBusinessLogic(HttpServletRequest request, String containerComponentType, + Wrapper<ComponentInstanceBusinessLogic> blWrapper, Wrapper<ResponseFormat> errorWrapper) { ServletContext context = request.getSession().getServletContext(); ComponentInstanceBusinessLogic componentInstanceLogic = getComponentInstanceBL(context); if (componentInstanceLogic == null) { @@ -915,7 +857,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { protected void validateXECOMPInstanceIDHeader(String instanceIdHeader, Wrapper<ResponseFormat> 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 +866,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { protected void validateHttpCspUserIdHeader(String header, Wrapper<ResponseFormat> 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 +874,6 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } <T> Either<T, ResponseFormat> parseToObject(String json, Supplier<Class<T>> classSupplier) { - try { T object = RepresentationUtils.fromRepresentation(json, classSupplier.get()); return Either.left(object); @@ -953,46 +894,37 @@ 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<Response> responseWrapper, Wrapper<User> userWrapper, - Wrapper<UploadServiceInfo> uploadServiceInfoWrapper, ServiceAuthorityTypeEnum serviceAuthorityEnum, - String userUserId, - String serviceInfoJsonString) { - + protected void commonServiceGeneralValidations(Wrapper<Response> responseWrapper, Wrapper<User> userWrapper, + Wrapper<UploadServiceInfo> 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, userWrapper.getInnerElement(), serviceAuthorityEnum, + serviceInfoJsonString); } - if (responseWrapper.isEmpty()) { - validateToscaTemplatePayloadName(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), - userWrapper.getInnerElement()); + validateToscaTemplatePayloadName(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), userWrapper.getInnerElement()); } - } - protected void validateUserRole(Wrapper<Response> errorResponseWrapper, User user, - ServiceAuthorityTypeEnum serviceAuthority) { + protected void validateUserRole(Wrapper<Response> 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); + ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.RESTRICTED_OPERATION); log.debug("audit before sending response"); Response response = buildErrorResponse(responseFormat); errorResponseWrapper.setInnerElement(response); @@ -1000,12 +932,10 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } else { validateUserRole(errorResponseWrapper, user); } - } - protected void validateAndFillServiceJson(Wrapper<Response> responseWrapper, - Wrapper<UploadServiceInfo> uploadServiceInfoWrapper, User user, - ServiceAuthorityTypeEnum serviceAuthorityEnum, String serviceInfo) { + protected void validateAndFillServiceJson(Wrapper<Response> responseWrapper, Wrapper<UploadServiceInfo> uploadServiceInfoWrapper, User user, + ServiceAuthorityTypeEnum serviceAuthorityEnum, String serviceInfo) { boolean isValid; try { log.debug("The received json is {}", serviceInfo); @@ -1014,25 +944,19 @@ 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."); @@ -1042,72 +966,60 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - protected void validateToscaTemplatePayloadName(Wrapper<Response> responseWrapper, - UploadServiceInfo uploadServiceInfo, User user) { + protected void validateToscaTemplatePayloadName(Wrapper<Response> responseWrapper, UploadServiceInfo uploadServiceInfo, User user) { String toscaTemplatePayloadName = uploadServiceInfo.getPayloadName(); boolean isValidSuffix = isToscaTemplatePayloadNameValid(responseWrapper, 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<Response> responseWrapper, - Wrapper<UploadServiceInfo> uploadServiceInfoWrapper, Wrapper<String> yamlStringWrapper, User user, - HttpServletRequest request, String serviceInfoJsonString, ServiceAuthorityTypeEnum serviceAuthorityEnum) + protected void specificServiceAuthorityValidations(Wrapper<Response> responseWrapper, Wrapper<UploadServiceInfo> uploadServiceInfoWrapper, + Wrapper<String> yamlStringWrapper, User user, HttpServletRequest request, + String serviceInfoJsonString, ServiceAuthorityTypeEnum serviceAuthorityEnum) throws FileNotFoundException { - if (responseWrapper.isEmpty()) { // UI Only Validation if (!serviceAuthorityEnum.isBackEndImport()) { - importUIValidations(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), user, request, - serviceInfoJsonString); + importUIValidations(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), user, request, serviceInfoJsonString); } - // User Defined Type Services - if (serviceAuthorityEnum.isUserTypeService() && !CsarValidationUtils.isCsarPayloadName( - uploadServiceInfoWrapper.getInnerElement().getPayloadName())) { + if (serviceAuthorityEnum.isUserTypeService() && !CsarValidationUtils + .isCsarPayloadName(uploadServiceInfoWrapper.getInnerElement().getPayloadName())) { if (responseWrapper.isEmpty()) { - validatePayloadNameSpace(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), user, - yamlStringWrapper.getInnerElement()); + validatePayloadNameSpace(responseWrapper, uploadServiceInfoWrapper.getInnerElement(), user, yamlStringWrapper.getInnerElement()); } - } } } - protected void importUIValidations(Wrapper<Response> responseWrapper, UploadServiceInfo serviceInfo, User user, - HttpServletRequest request, String serviceInfoJsonString) { + protected void importUIValidations(Wrapper<Response> responseWrapper, UploadServiceInfo serviceInfo, User user, HttpServletRequest request, + String serviceInfoJsonString) { if (responseWrapper.isEmpty()) { validateMD5(responseWrapper, user, serviceInfo, request, serviceInfoJsonString); } - if (responseWrapper.isEmpty() && request != null && request.getMethod() != null && request.getMethod() - .equals("POST")) { + if (responseWrapper.isEmpty() && request != null && request.getMethod() != null && request.getMethod().equals("POST")) { validateServiceDoesNotExist(responseWrapper, user, serviceInfo.getName()); } } - protected void validatePayloadNameSpace(Wrapper<Response> responseWrapper, UploadServiceInfo serviceInfo, User user, - String toscaPayload) { + protected void validatePayloadNameSpace(Wrapper<Response> responseWrapper, UploadServiceInfo serviceInfo, User user, String toscaPayload) { boolean isValid; String nameSpace = ""; Map<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(toscaPayload); - Either<Map<String, Object>, ResultStatusEnum> toscaElement = - ImportUtils.findFirstToscaMapElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TYPES); + Either<Map<String, Object>, 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 +1032,10 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { serviceInfo.setServiceType(ResourceTypeEnum.SERVICE.name()); } } - } - protected void validateMD5(Wrapper<Response> responseWrapper, User user, UploadServiceInfo serviceInfo, - HttpServletRequest request, String serviceInfoJsonString) { + protected void validateMD5(Wrapper<Response> responseWrapper, User user, UploadServiceInfo serviceInfo, HttpServletRequest request, + String serviceInfoJsonString) { boolean isValid; String recievedMD5 = request.getHeader(Constants.MD5_HEADER); if (recievedMD5 == null) { @@ -1134,14 +1045,12 @@ 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<Response> responseWrapper, User user, String serviceName) { if (serviceImportManager.isServiceExist(serviceName)) { ResponseFormat responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.SERVICE_ALREADY_EXISTS); @@ -1150,10 +1059,8 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - protected void handleImportService(Wrapper<Response> responseWrapper, User user, - UploadServiceInfo serviceInfoObject, String yamlAsString, ServiceAuthorityTypeEnum authority, - boolean createNewVersion, String serviceUniqueId) throws ZipException { - + protected void handleImportService(Wrapper<Response> responseWrapper, User user, UploadServiceInfo serviceInfoObject, String yamlAsString, + ServiceAuthorityTypeEnum authority, boolean createNewVersion, String serviceUniqueId) throws ZipException { Response response = null; Object representation = null; ImmutablePair<Service, ActionStatus> importedServiceStatus = null; @@ -1161,57 +1068,45 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { log.debug("import service from csar"); importedServiceStatus = importServiceFromUICsar(serviceInfoObject, user, serviceUniqueId); } - if (importedServiceStatus != 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<Service, ActionStatus> importServiceFromUICsar(UploadServiceInfo serviceInfoObject, User user, - String serviceUniqueId) throws ZipException { - + private ImmutablePair<Service, ActionStatus> importServiceFromUICsar(UploadServiceInfo serviceInfoObject, User user, String serviceUniqueId) + throws ZipException { Service newService; ImmutablePair<Service, ActionStatus> result = null; ActionStatus actionStatus; Service service = new Service(); String payloadName = serviceInfoObject.getPayloadName(); fillServiceFromServiceInfoObject(service, serviceInfoObject); - Map<String, byte[]> csarUIPayloadRes = getCsarFromPayload(serviceInfoObject); - getAndValidateCsarYaml(csarUIPayloadRes, service, user, payloadName); - newService = serviceImportManager.getServiceImportBusinessLogic() - .createService(service, AuditingActionEnum.CREATE_SERVICE, user, csarUIPayloadRes, - payloadName); + .createService(service, AuditingActionEnum.CREATE_SERVICE, user, csarUIPayloadRes, payloadName); actionStatus = ActionStatus.CREATED; - return new ImmutablePair<>(newService, actionStatus); } - private void fillServiceFromServiceInfoObject(Service service, UploadServiceInfo serviceInfoObject) { serviceImportManager.populateServiceMetadata(serviceInfoObject, service); fillArtifacts(service, serviceInfoObject); - } - private Map<String, byte[]> getCsarFromPayload(UploadServiceInfo innerElement) - throws ZipException { + private Map<String, byte[]> getCsarFromPayload(UploadServiceInfo innerElement) throws ZipException { String csarUUID = innerElement.getPayloadName(); String payloadData = innerElement.getPayloadData(); return getComponentCsarFromPayload(csarUUID, payloadData); } - private void getAndValidateCsarYaml(Map<String, byte[]> csarUIPayload, Service service, User user, - String csarUUID) { + private void getAndValidateCsarYaml(Map<String, byte[]> csarUIPayload, Service service, User user, String csarUUID) { getAndValidateComponentCsarYaml(csarUIPayload, service, user, csarUUID); } @@ -1225,8 +1120,10 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } } + /** * import service payload to postman + * * @param responseWrapper * @param uploadServiceInfoWrapper * @param yamlStringWrapper @@ -1236,8 +1133,9 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { * @param file * @throws ZipException */ - protected void fillServicePayload(Wrapper<Response> responseWrapper, Wrapper<UploadServiceInfo> uploadServiceInfoWrapper, Wrapper<String> yamlStringWrapper, User user, String serviceInfoJsonString, ServiceAuthorityTypeEnum serviceAuthorityEnum, - File file) throws ZipException { + protected void fillServicePayload(Wrapper<Response> responseWrapper, Wrapper<UploadServiceInfo> uploadServiceInfoWrapper, + Wrapper<String> 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 +1144,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 +1167,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<Response> responseWrapper, UploadServiceInfo uploadServiceInfoWrapper, File file) { - try(InputStream fileInputStream = new FileInputStream(file)){ - + protected void fillServicePayloadDataFromFile(Wrapper<Response> 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){ + 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<Response> responseWrapper, Wrapper<String> yamlStringWrapper, User user, UploadServiceInfo serviceInfo) { + private void fillServiceToscaTemplateFromJson(Wrapper<Response> responseWrapper, Wrapper<String> 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 +1213,4 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { yamlStringWrapper.setInnerElement(decodedPayload); } } - } |