Refactoring validation
Refactoring validation from Code to FTL
Change-Id: Ic33a3719a021bb4c82565653fd8d95de38b7929e
Issue-ID: SDC-1334
Signed-off-by: shrikantawachar <shrikant.awachar@amdocs.com>
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java
index 6e462dc..7f69bae 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java
@@ -32,7 +32,6 @@
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
-import org.openecomp.sdc.vendorsoftwareproduct.errors.DuplicateComputeInComponentErrorBuilder;
import org.openecomp.sdc.vendorsoftwareproduct.errors.NotSupportedHeatOnboardMethodErrorBuilder;
import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes;
import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator;
@@ -194,14 +193,10 @@
compute.getId());
boolean manual = vspInfoDao.isManual(compute.getVspId(), compute.getVersion());
- if (!manual) {
- validateHeatVspComputeUpdate("Name",
- compute.getComputeCompositionData().getName(),
- retrieved.getComputeCompositionData().getName());
- }
ComputeCompositionSchemaInput schemaInput = new ComputeCompositionSchemaInput();
- schemaInput.setCompute(compute.getComputeCompositionData());
+ schemaInput.setManual(manual);
+ schemaInput.setCompute(retrieved.getComputeCompositionData());
CompositionEntityValidationData validationData = compositionEntityDataManager
.validateEntity(compute, SchemaTemplateContext.composition, schemaInput);
@@ -214,16 +209,6 @@
return validationData;
}
- private void validateHeatVspComputeUpdate(String name, String value, String retrivedValue) {
-
- if (value != null && !value.equals(retrivedValue)) {
-
- final ErrorCode updateHeatComputeErrorBuilder =
- DuplicateComputeInComponentErrorBuilder.getComputeHeatReadOnlyErrorBuilder(name);
- throw new CoreException(updateHeatComputeErrorBuilder);
- }
- }
-
private ComputeEntity getComputeEntity(String vspId, Version version, String componentId,
String computeId) {
ComputeEntity computeEntity =
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java
index 6451768..66f9e97 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java
@@ -146,13 +146,6 @@
getImageEntity(image.getVspId(), image.getVersion(), image.getComponentId(),
image.getId());
- if (!isManual) {
- final Image imageCompositionData = image.getImageCompositionData();
- final String fileName = imageCompositionData.getFileName();
- validateHeatVspImageUpdate("fileName", fileName, retrieved.getImageCompositionData()
- .getFileName());
- }
-
Collection<ImageEntity> vfcImageList = listImages(image.getVspId(),
image.getVersion(), image.getComponentId());
@@ -162,7 +155,8 @@
ImageCompositionSchemaInput schemaInput = new ImageCompositionSchemaInput();
- schemaInput.setImage(image.getImageCompositionData());
+ schemaInput.setManual(isManual);
+ schemaInput.setImage(retrieved.getImageCompositionData());
CompositionEntityValidationData validationData = compositionEntityDataManager
.validateEntity(image, SchemaTemplateContext.composition, schemaInput);
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java
index a4fa6be..24bf8db 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java
@@ -207,13 +207,6 @@
schemaInput.setManual(vspInfoDao.isManual(nic.getVspId(), nic.getVersion()));
schemaInput.setNic(retrieved.getNicCompositionData());
- if (schemaInput.isManual() && !nic.getNicCompositionData().getName()
- .matches(VendorSoftwareProductConstants.NAME_PATTERN)) {
- ErrorCode errorCode = NicErrorBuilder
- .getNicNameFormatErrorBuilder(VendorSoftwareProductConstants.NAME_PATTERN);
- throw new CoreException(errorCode);
- }
-
CompositionEntityValidationData validationData = compositionEntityDataManager
.validateEntity(nic, SchemaTemplateContext.composition, schemaInput);
if (CollectionUtils.isEmpty(validationData.getErrors())) {
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java
index 9479e08..217cdf5 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java
@@ -7,7 +7,6 @@
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.common.errors.ErrorCategory;
import org.openecomp.sdc.common.errors.ErrorCode;
-import org.openecomp.sdc.common.session.SessionContextProviderFactory;
import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao;
import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao;
import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
@@ -196,18 +195,24 @@
public void testUpdateHEATComputeName() throws Exception {
doReturn(createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID))
.when(computeDao).get(anyObject());
+
+ String updatedName = COMPUTE1_ID + " name updated";
+ CompositionEntityValidationData toBeReturned =
+ new CompositionEntityValidationData(CompositionEntityType.compute, COMPUTE1_ID);
+
+ toBeReturned.setErrors(Arrays.asList("#/name: "+updatedName+" is not a valid value."+
+ COMPUTE1_ID+"is the only possible value for this field"));
+ doReturn(toBeReturned).when(compositionEntityDataManagerMock).validateEntity(anyObject(),anyObject(),anyObject());
+
ComputeEntity computeEntity = new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID);
ComputeData computeData = new ComputeData();
- computeData.setName(COMPUTE1_ID + " name updated");
+ computeData.setName(updatedName);
computeData.setDescription(COMPUTE1_ID + " desc updated");
computeEntity.setComputeCompositionData(computeData);
- try {
- computeManager.updateCompute(computeEntity);
- } catch (CoreException ex) {
- Assert
- .assertEquals(ex.code().id(), VendorSoftwareProductErrorCodes.UPDATE_COMPUTE_NOT_ALLOWED);
- }
+ CompositionEntityValidationData output = computeManager.updateCompute(computeEntity);
+
+ Assert.assertEquals(output.getErrors(), toBeReturned.getErrors());
}
@Test
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java
index 3a9af0d..b44bf2d 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java
@@ -184,17 +184,23 @@
public void testUpdateHEATImageFileName() throws Exception {
doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID))
.when(imageDao).get(anyObject());
+
+ String updatedName = IMAGE1_ID +" name updated";
+ CompositionEntityValidationData toBeReturned =
+ new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID);
+
+ toBeReturned.setErrors(Arrays.asList("#/name: "+updatedName+" is not a valid value."+
+ IMAGE1_ID+"is the only possible value for this field"));
+ doReturn(toBeReturned).when(compositionEntityDataManagerMock).validateEntity(anyObject(),anyObject(),anyObject());
+
ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID);
Image imageData = new Image();
- imageData.setFileName(IMAGE1_ID + " name updated");
+ imageData.setFileName(updatedName);
imageData.setDescription(IMAGE1_ID + " desc updated");
imageEntity.setImageCompositionData(imageData);
- try {
- imageManager.updateImage(imageEntity);
- } catch (CoreException ex) {
- Assert.assertEquals(ex.code().id(), VendorSoftwareProductErrorCodes.UPDATE_IMAGE_NOT_ALLOWED);
- }
+ CompositionEntityValidationData output = imageManager.updateImage(imageEntity);
+ Assert.assertEquals(output.getErrors(), toBeReturned.getErrors());
}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java
index 9efb9e1..6ce0f18 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java
@@ -350,7 +350,7 @@
CompositionEntityValidationData toBeReturned =
new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID);
- toBeReturned.setErrors(Arrays.asList("error1", "error2"));
+ toBeReturned.setErrors(Arrays.asList("Field does not conform to predefined criteria:name : must match [a-zA-Z0-9_]*$"));
doReturn(toBeReturned)
.when(compositionEntityDataManagerMock)
.validateEntity(anyObject(), anyObject(), anyObject());
@@ -363,13 +363,9 @@
nicData.setNetworkId(NETWORK1_ID);
nicEntity.setNicCompositionData(nicData);
- try {
- nicManager.updateNic(nicEntity);
- Assert.fail();
- } catch (CoreException ex) {
- Assert.assertEquals(VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED,
- ex.code().id());
- }
+ CompositionEntityValidationData output = nicManager.updateNic(nicEntity);
+ Assert.assertEquals(output.getErrors(),toBeReturned.getErrors());
+
}
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/json/JsonUtil.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/json/JsonUtil.java
index 92c590b..a975016 100644
--- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/json/JsonUtil.java
+++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/json/JsonUtil.java
@@ -36,15 +36,15 @@
import org.apache.commons.collections4.CollectionUtils;
import org.everit.json.schema.EnumSchema;
import org.everit.json.schema.Schema;
+import org.everit.json.schema.StringSchema;
import org.everit.json.schema.ValidationException;
import org.everit.json.schema.loader.SchemaLoader;
import org.json.JSONObject;
-import org.onap.sdc.tosca.datatypes.model.RequirementDefinition;
import org.openecomp.core.utilities.CommonMethods;
import org.openecomp.core.utilities.deserializers.RequirementDefinitionDeserializer;
-
import org.openecomp.sdc.logging.api.Logger;
import org.openecomp.sdc.logging.api.LoggerFactory;
+import org.onap.sdc.tosca.datatypes.model.RequirementDefinition;
/**
@@ -157,9 +157,14 @@
}
private static String mapValidationExceptionToMessage(ValidationException exception) {
- if (exception.getViolatedSchema() instanceof EnumSchema) {
+ Object schema = exception.getViolatedSchema();
+
+ if (schema instanceof EnumSchema) {
return mapEnumViolationToMessage(exception);
+ } else if (schema instanceof StringSchema) {
+ return mapStringViolationToMessage(exception);
}
+
return exception.getMessage();
}
@@ -173,6 +178,15 @@
possibleValues.stream().map(Object::toString).collect(Collectors.toList()))));
}
+ private static String mapStringViolationToMessage(ValidationException validationException) {
+ if (ValidationType.PATTERN.getKeyword().equals(validationException.getKeyword())) {
+ String message = validationException.getMessage();
+ String value = message.substring(message.indexOf("["), message.indexOf("]") + 1);
+ return message.replace("string " + value, value + " is not valid value. It");
+ }
+ return validationException.getMessage();
+ }
+
private static List<ValidationException> validateUsingEverit(String json, String jsonSchema) {
LOGGER.debug(
String.format("validateUsingEverit start, json=%s, jsonSchema=%s", json, jsonSchema));
@@ -189,4 +203,18 @@
}
return null;
}
+
+ private enum ValidationType {
+ PATTERN("pattern");
+
+ private String keyword;
+
+ private ValidationType(String keyword) {
+ this.keyword = keyword;
+ }
+
+ String getKeyword() {
+ return keyword;
+ }
+ }
}
diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/schemagenerator/ImageCompositionSchemaInput.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/schemagenerator/ImageCompositionSchemaInput.java
index add08a7..9db298c 100644
--- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/schemagenerator/ImageCompositionSchemaInput.java
+++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/types/schemagenerator/ImageCompositionSchemaInput.java
@@ -4,6 +4,17 @@
public class ImageCompositionSchemaInput implements SchemaTemplateInput {
+ private boolean manual;
+ private Image image;
+
+ public boolean isManual() {
+ return manual;
+ }
+
+ public void setManual(boolean manual) {
+ this.manual = manual;
+ }
+
public Image getImage() {
return image;
}
@@ -12,7 +23,7 @@
this.image = image;
}
- private Image image;
+
}
diff --git a/openecomp-be/tools/install/database/schemaTemplates/composition/image.ftl b/openecomp-be/tools/install/database/schemaTemplates/composition/image.ftl
index 8391390..6d0fb3c 100644
--- a/openecomp-be/tools/install/database/schemaTemplates/composition/image.ftl
+++ b/openecomp-be/tools/install/database/schemaTemplates/composition/image.ftl
@@ -3,7 +3,9 @@
"type": "object",
"properties": {
"fileName": {
- "type": "string"
+ "type": "string" <#if !manual>,
+ "enum":["${image.fileName}"]
+ </#if>
},
"description": {
"type": "string"
diff --git a/openecomp-be/tools/install/database/schemaTemplates/composition/nic.ftl b/openecomp-be/tools/install/database/schemaTemplates/composition/nic.ftl
index fec5b9c..15d34f2 100644
--- a/openecomp-be/tools/install/database/schemaTemplates/composition/nic.ftl
+++ b/openecomp-be/tools/install/database/schemaTemplates/composition/nic.ftl
@@ -3,12 +3,16 @@
"type": "object",
"properties": {
"name": {
- "type": "string",
- "enum": [
- "${nic.name}"
- ],
- "default": "${nic.name}"
- },
+ "type": "string",
+ <#if manual>
+ {"pattern":"^[a-zA-Z0-9_]*$"}
+ <#else>
+ "enum": [
+ "${nic.name}"
+ ],
+ "default": "${nic.name}"
+ </#if>
+},
"description": {
"type": "string"
}<#if !manual><#if nic.networkId??>,