[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / lib / openecomp-sdc-validation-lib / openecomp-sdc-validation-impl / src / main / java / org / openecomp / sdc / validation / impl / validators / ManifestValidator.java
index 4ce40f0..43cafb4 100644 (file)
 package org.openecomp.sdc.validation.impl.validators;
 
 import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.sdc.validation.Validator;
 import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
-import org.openecomp.core.validation.errors.Messages;
-import org.openecomp.core.validation.interfaces.Validator;
 import org.openecomp.core.validation.types.GlobalValidationContext;
-import org.openecomp.sdc.common.utils.AsdcCommon;
+import org.openecomp.sdc.common.errors.Messages;
+import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.heat.datatypes.manifest.FileData;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.openecomp.sdc.logging.api.Logger;
+import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
+import org.openecomp.sdc.logging.types.LoggerConstants;
+import org.openecomp.sdc.logging.types.LoggerErrorCode;
+import org.openecomp.sdc.logging.types.LoggerErrorDescription;
+import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
 
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
-public class ManifestValidator implements Validator {
-
-  private static Logger logger = LoggerFactory.getLogger(YamlValidator.class);
 
+public class ManifestValidator implements Validator {
+  public static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+  private static Logger logger = (Logger) LoggerFactory.getLogger(YamlValidator.class);
 
   @Override
   public void validate(GlobalValidationContext globalContext) {
+    mdcDataDebugMessage.debugEntryMessage(null, null);
 
-
-    InputStream content = globalContext.getFileContent(AsdcCommon.MANIFEST_NAME);
+    Optional<InputStream> content = globalContext.getFileContent(SdcCommon.MANIFEST_NAME);
     ManifestContent manifestContent;
 
     try {
-      manifestContent = JsonUtil.json2Object(content, ManifestContent.class);
-    } catch (RuntimeException re) {
-      globalContext.addMessage(AsdcCommon.MANIFEST_NAME, ErrorLevel.ERROR,
-          Messages.INVALID_MANIFEST_FILE.getErrorMessage());
+      if (content.isPresent()) {
+        manifestContent = JsonUtil.json2Object(content.get(), ManifestContent.class);
+      } else {
+        MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API,
+            LoggerTragetServiceName.VALIDATE_MANIFEST_CONTENT, ErrorLevel.ERROR.name(),
+            LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.EMPTY_FILE);
+        throw new Exception("The manifest file '" + SdcCommon.MANIFEST_NAME + "' has no content");
+      }
+    } catch (Exception re) {
+      globalContext.addMessage(SdcCommon.MANIFEST_NAME, ErrorLevel.ERROR,
+          Messages.INVALID_MANIFEST_FILE.getErrorMessage(),
+          LoggerTragetServiceName.VALIDATE_MANIFEST_CONTENT,
+          LoggerErrorDescription.INVALID_MANIFEST);
       return;
     }
 
@@ -60,22 +76,32 @@ public class ManifestValidator implements Validator {
     manifestFiles.stream().filter(name ->
         !globalContext.getFileContextMap().containsKey(name)
     ).forEach(name -> globalContext
-        .addMessage(name, ErrorLevel.ERROR, Messages.MISSING_FILE_IN_ZIP.getErrorMessage()));
+        .addMessage(name, ErrorLevel.ERROR, Messages.MISSING_FILE_IN_ZIP.getErrorMessage(),
+            LoggerTragetServiceName.VALIDATE_FILE_IN_ZIP, LoggerErrorDescription.MISSING_FILE));
 
     globalContext.getFileContextMap().keySet().stream().filter(name ->
-        !manifestFiles.contains(name) && !AsdcCommon.MANIFEST_NAME.equals(name)
+        !manifestFiles.contains(name) && !SdcCommon.MANIFEST_NAME.equals(name)
     ).forEach(name ->
         globalContext.addMessage(name, ErrorLevel.WARNING,
-            Messages.MISSING_FILE_IN_MANIFEST.getErrorMessage())
+            Messages.MISSING_FILE_IN_MANIFEST.getErrorMessage(),
+            LoggerTragetServiceName.VALIDATE_FILE_IN_MANIFEST, LoggerErrorDescription.MISSING_FILE)
     );
 
+    mdcDataDebugMessage.debugExitMessage(null, null);
   }
 
+
   private List<String> getManifestFileList(ManifestContent manifestContent,
                                            GlobalValidationContext context) {
+
+
+    mdcDataDebugMessage.debugEntryMessage(null, null);
+
     ManifestScanner manifestScanner = new ManifestScanner();
     manifestScanner.init(context);
     manifestScanner.scan(null, manifestContent.getData(), context);
+
+    mdcDataDebugMessage.debugExitMessage(null, null);
     return manifestScanner.getFileList();
   }
 
@@ -98,7 +124,9 @@ public class ManifestValidator implements Validator {
               && childFileData.getType().equals(FileData.Type.HEAT_ENV)) {
             globalContext.addMessage(childFileData.getFile(), ErrorLevel.ERROR,
                 ErrorMessagesFormatBuilder
-                    .getErrorWithParameters(Messages.ENV_NOT_ASSOCIATED_TO_HEAT.getErrorMessage()));
+                    .getErrorWithParameters(Messages.ENV_NOT_ASSOCIATED_TO_HEAT.getErrorMessage()),
+                LoggerTragetServiceName.SCAN_MANIFEST_STRUCTURE,
+                "env file is not associated to HEAT file");
           }
         }
       }
@@ -109,9 +137,7 @@ public class ManifestValidator implements Validator {
       if (data == null) {
         return;
       }
-      data.stream().forEach(chileFileData -> {
-        scan(chileFileData, chileFileData.getData(), globalContext);
-      });
+      data.forEach(chileFileData -> scan(chileFileData, chileFileData.getData(), globalContext));
     }
 
 
@@ -122,28 +148,32 @@ public class ManifestValidator implements Validator {
     private void validateFileTypeVsFileName(FileData fileData) {
       String fileName = fileData.getFile();
       if (fileName == null) {
-        this.globalValidationContext.addMessage(AsdcCommon.MANIFEST_NAME, ErrorLevel.ERROR,
-            Messages.MISSING_FILE_NAME_IN_MANIFEST.getErrorMessage());
+        this.globalValidationContext.addMessage(SdcCommon.MANIFEST_NAME, ErrorLevel.ERROR,
+            Messages.MISSING_FILE_NAME_IN_MANIFEST.getErrorMessage(),
+            LoggerTragetServiceName.VALIDATE_FILE_TYPE_AND_NAME, "Missing file name in manifest");
 
       }
       FileData.Type type = fileData.getType();
       if (type == null) {
         this.globalValidationContext
-            .addMessage(fileName, ErrorLevel.ERROR, Messages.INVALID_FILE_TYPE.getErrorMessage());
+            .addMessage(fileName, ErrorLevel.ERROR, Messages.INVALID_FILE_TYPE.getErrorMessage(),
+                LoggerTragetServiceName.VALIDATE_FILE_TYPE_AND_NAME, "Invalid file type");
       } else if (type.equals(FileData.Type.HEAT_NET) || type.equals(FileData.Type.HEAT_VOL)
           || type.equals(FileData.Type.HEAT)) {
         if (fileName != null && !fileName.endsWith(".yml") && !fileName.endsWith(".yaml")) {
           this.globalValidationContext.addMessage(fileName, ErrorLevel.ERROR,
               ErrorMessagesFormatBuilder
                   .getErrorWithParameters(Messages.WRONG_HEAT_FILE_EXTENSION.getErrorMessage(),
-                      fileName));
+                      fileName), LoggerTragetServiceName.VALIDATE_FILE_TYPE_AND_NAME,
+              "Wrong HEAT file extention");
         }
       } else if (type.equals(FileData.Type.HEAT_ENV)) {
         if (fileName != null && !fileName.endsWith(".env")) {
           this.globalValidationContext.addMessage(fileName, ErrorLevel.ERROR,
               ErrorMessagesFormatBuilder
                   .getErrorWithParameters(Messages.WRONG_ENV_FILE_EXTENSION.getErrorMessage(),
-                      fileName));
+                      fileName), LoggerTragetServiceName.VALIDATE_FILE_TYPE_AND_NAME,
+              "Wrong env file extention");
         }
       }
     }