diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ToscaServiceModelHealer.java')
-rw-r--r-- | openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ToscaServiceModelHealer.java | 146 |
1 files changed, 61 insertions, 85 deletions
diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ToscaServiceModelHealer.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ToscaServiceModelHealer.java index 1aed46163d..b65629002a 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ToscaServiceModelHealer.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-impl/src/main/java/org/openecomp/sdc/healing/healers/ToscaServiceModelHealer.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,9 +17,11 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.healing.healers; +import java.io.IOException; +import java.util.Objects; +import java.util.Optional; import org.apache.commons.collections4.MapUtils; import org.openecomp.core.converter.ToscaConverter; import org.openecomp.core.converter.factory.ToscaConverterFactory; @@ -40,99 +42,73 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFacto import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateEntity; import org.openecomp.sdc.versioning.dao.types.Version; -import java.io.IOException; -import java.util.Objects; -import java.util.Optional; - public class ToscaServiceModelHealer implements Healer { - private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao; - private OrchestrationTemplateDao orchestrationTemplateDao; - private static final String VALIDATION_FAILURE_MESSAGE = "Product was updated. Please " + - "update the uploaded Heat file according to these validation errors: \n"; - - public ToscaServiceModelHealer() { - this.serviceModelDao = ServiceModelDaoFactory.getInstance().createInterface(); - this.orchestrationTemplateDao = OrchestrationTemplateDaoFactory.getInstance().createInterface(); - } - - public ToscaServiceModelHealer( - ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao, - OrchestrationTemplateDao orchestrationTemplateDao) { - this.serviceModelDao = serviceModelDao; - this.orchestrationTemplateDao = orchestrationTemplateDao; - } - - @Override - public boolean isHealingNeeded(String itemId, Version version) { - OrchestrationTemplateEntity orchestrationTemplate = - orchestrationTemplateDao.get(itemId, version); - OnboardingTypesEnum onboardingTypes = - OnboardingTypesEnum.getOnboardingTypesEnum(orchestrationTemplate.getFileSuffix()); - return Objects.nonNull(onboardingTypes) && - Objects.nonNull(orchestrationTemplate.getContentData()); - } + private static final String VALIDATION_FAILURE_MESSAGE = + "Product was updated. Please " + "update the uploaded Heat file according to these validation errors: \n"; + private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao; + private OrchestrationTemplateDao orchestrationTemplateDao; - @Override - public void heal(String itemId, Version version) throws Exception { - OrchestrationTemplateEntity orchestrationTemplateEntity = - orchestrationTemplateDao.get(itemId, version); - OnboardingTypesEnum type = - OnboardingTypesEnum.getOnboardingTypesEnum(orchestrationTemplateEntity.getFileSuffix()); - - Optional<ToscaServiceModel> healedServiceModel = - healServiceModel(orchestrationTemplateEntity, type); - - healedServiceModel.ifPresent(serviceModel -> serviceModelDao - .overrideServiceModel(itemId, version, serviceModel)); - } - - private Optional<ToscaServiceModel> healServiceModel( - OrchestrationTemplateEntity orchestrationTemplateEntity, - OnboardingTypesEnum type) throws IOException { - switch (type) { - case ZIP: - return Optional.of(healServiceModelFromZip( - getFileContentHandlerForHealing(orchestrationTemplateEntity, type))); + public ToscaServiceModelHealer() { + this.serviceModelDao = ServiceModelDaoFactory.getInstance().createInterface(); + this.orchestrationTemplateDao = OrchestrationTemplateDaoFactory.getInstance().createInterface(); + } - case CSAR: - return Optional.of(healServiceModelFromCsar( - getFileContentHandlerForHealing(orchestrationTemplateEntity, type))); + public ToscaServiceModelHealer(ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao, + OrchestrationTemplateDao orchestrationTemplateDao) { + this.serviceModelDao = serviceModelDao; + this.orchestrationTemplateDao = orchestrationTemplateDao; + } - default: - return Optional.empty(); + @Override + public boolean isHealingNeeded(String itemId, Version version) { + OrchestrationTemplateEntity orchestrationTemplate = orchestrationTemplateDao.get(itemId, version); + OnboardingTypesEnum onboardingTypes = OnboardingTypesEnum.getOnboardingTypesEnum(orchestrationTemplate.getFileSuffix()); + return Objects.nonNull(onboardingTypes) && Objects.nonNull(orchestrationTemplate.getContentData()); } - } - private FileContentHandler getFileContentHandlerForHealing( - OrchestrationTemplateEntity orchestrationTemplateEntity, OnboardingTypesEnum type) - throws IOException { - byte[] uploadedFileContent = orchestrationTemplateEntity.getContentData().array(); - return CommonUtil.validateAndUploadFileContent(type, uploadedFileContent); - } + @Override + public void heal(String itemId, Version version) throws Exception { + OrchestrationTemplateEntity orchestrationTemplateEntity = orchestrationTemplateDao.get(itemId, version); + OnboardingTypesEnum type = OnboardingTypesEnum.getOnboardingTypesEnum(orchestrationTemplateEntity.getFileSuffix()); + Optional<ToscaServiceModel> healedServiceModel = healServiceModel(orchestrationTemplateEntity, type); + healedServiceModel.ifPresent(serviceModel -> serviceModelDao.overrideServiceModel(itemId, version, serviceModel)); + } - private ToscaServiceModel healServiceModelFromZip(FileContentHandler contentMap) { - TranslatorOutput translatorOutput = - HeatToToscaUtil.loadAndTranslateTemplateData(contentMap); + private Optional<ToscaServiceModel> healServiceModel(OrchestrationTemplateEntity orchestrationTemplateEntity, OnboardingTypesEnum type) + throws IOException { + switch (type) { + case ZIP: + return Optional.of(healServiceModelFromZip(getFileContentHandlerForHealing(orchestrationTemplateEntity, type))); + case CSAR: + return Optional.of(healServiceModelFromCsar(getFileContentHandlerForHealing(orchestrationTemplateEntity, type))); + default: + return Optional.empty(); + } + } - if (areThereValidationErrors(translatorOutput)) { - String validationErrorsAsString = MessageContainerUtil.getErrorMessagesListAsString - (MessageContainerUtil - .getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages())); - throw new RuntimeException(VALIDATION_FAILURE_MESSAGE + validationErrorsAsString); + private FileContentHandler getFileContentHandlerForHealing(OrchestrationTemplateEntity orchestrationTemplateEntity, OnboardingTypesEnum type) + throws IOException { + byte[] uploadedFileContent = orchestrationTemplateEntity.getContentData().array(); + return CommonUtil.validateAndUploadFileContent(type, uploadedFileContent); } - return translatorOutput.getToscaServiceModel(); - } + private ToscaServiceModel healServiceModelFromZip(FileContentHandler contentMap) { + TranslatorOutput translatorOutput = HeatToToscaUtil.loadAndTranslateTemplateData(contentMap); + if (areThereValidationErrors(translatorOutput)) { + String validationErrorsAsString = MessageContainerUtil + .getErrorMessagesListAsString(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages())); + throw new RuntimeException(VALIDATION_FAILURE_MESSAGE + validationErrorsAsString); + } + return translatorOutput.getToscaServiceModel(); + } - private boolean areThereValidationErrors(TranslatorOutput translatorOutput) { - return MapUtils.isNotEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, - translatorOutput.getErrorMessages())); - } + private boolean areThereValidationErrors(TranslatorOutput translatorOutput) { + return MapUtils.isNotEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages())); + } - private ToscaServiceModel healServiceModelFromCsar(FileContentHandler contentMap) - throws IOException { - ToscaConverter toscaConverter = ToscaConverterFactory.getInstance().createInterface(); - return toscaConverter.convert(contentMap); - } + private ToscaServiceModel healServiceModelFromCsar(FileContentHandler contentMap) throws IOException { + ToscaConverter toscaConverter = ToscaConverterFactory.getInstance().createInterface(); + return toscaConverter.convert(contentMap); + } } |