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=beaa08cc4f0f911248490f86cc618cd947a822d2;hpb=b1fc8c337d3b9750eff6e62b626c0bc3a1467a88;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 beaa08cc4f..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 @@ -27,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; @@ -96,14 +95,18 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { .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 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; @@ -186,11 +189,11 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } 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); @@ -251,7 +254,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { try (InputStream fileInputStream = new FileInputStream(file)) { byte[] data = new byte[(int) file.length()]; if (fileInputStream.read(data) == -1) { - 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); @@ -268,12 +271,12 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } 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); @@ -292,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 @@ -305,7 +309,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { 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); @@ -331,6 +335,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { return getServletUtils().getGson(); } + @Override public ComponentsUtils getComponentsUtils() { return getServletUtils().getComponentsUtils(); } @@ -469,7 +474,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { 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); @@ -478,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) { @@ -656,7 +661,8 @@ 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); @@ -706,7 +712,7 @@ 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()); + .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); @@ -911,21 +917,21 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { validateUserRole(responseWrapper, userWrapper.getInnerElement(), serviceAuthorityEnum); } if (responseWrapper.isEmpty()) { - validateAndFillServiceJson(responseWrapper, uploadServiceInfoWrapper, userWrapper.getInnerElement(), serviceAuthorityEnum, + 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"); + 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"); + 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); Response response = buildErrorResponse(responseFormat); errorResponseWrapper.setInnerElement(response); } @@ -934,7 +940,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - protected void validateAndFillServiceJson(Wrapper responseWrapper, Wrapper uploadServiceInfoWrapper, User user, + protected void validateAndFillServiceJson(Wrapper responseWrapper, Wrapper uploadServiceInfoWrapper, ServiceAuthorityTypeEnum serviceAuthorityEnum, String serviceInfo) { boolean isValid; try { @@ -959,16 +965,16 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { 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); Response errorResponse = buildErrorResponse(responseFormat); @@ -977,35 +983,33 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } protected void specificServiceAuthorityValidations(Wrapper responseWrapper, Wrapper uploadServiceInfoWrapper, - Wrapper yamlStringWrapper, User user, HttpServletRequest request, - String serviceInfoJsonString, ServiceAuthorityTypeEnum serviceAuthorityEnum) - throws FileNotFoundException { + 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, + 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()); + 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); @@ -1034,7 +1038,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - protected void validateMD5(Wrapper responseWrapper, User user, UploadServiceInfo serviceInfo, HttpServletRequest request, + protected void validateMD5(Wrapper responseWrapper, HttpServletRequest request, String serviceInfoJsonString) { boolean isValid; String recievedMD5 = request.getHeader(Constants.MD5_HEADER); @@ -1051,7 +1055,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { } } - 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); @@ -1059,16 +1063,15 @@ 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) { @@ -1079,20 +1082,15 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { 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() + final Service newService = serviceImportManager.getServiceImportBusinessLogic() .createService(service, AuditingActionEnum.CREATE_SERVICE, user, csarUIPayloadRes, payloadName); - actionStatus = ActionStatus.CREATED; - return new ImmutablePair<>(newService, actionStatus); + return new ImmutablePair<>(newService, ActionStatus.CREATED); } private void fillServiceFromServiceInfoObject(Service service, UploadServiceInfo serviceInfoObject) { @@ -1100,7 +1098,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { 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); @@ -1182,7 +1180,7 @@ public abstract class AbstractValidationsServlet extends BeGenericServlet { log.debug("enter fillServicePayloadDataFromFile"); byte[] data = new byte[(int) file.length()]; if (fileInputStream.read(data) == -1) { - 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);