From: vasraz Date: Fri, 14 Jul 2023 14:32:42 +0000 (+0100) Subject: Fix 'Import service with JUEL-function produces wrong UI representation' X-Git-Tag: 1.13.3~2 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;ds=sidebyside;h=531f22dd3eebf6581d923f4d794ffcd4f5d8dbe2;p=sdc.git Fix 'Import service with JUEL-function produces wrong UI representation' Signed-off-by: Vasyl Razinkov Change-Id: Icc37f2892fa5630df04d32e8496a57fc25ad7ad2 Issue-ID: SDC-4573 --- diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java index e641365afa..d03a238fce 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java @@ -55,6 +55,9 @@ import java.util.function.Function; import java.util.stream.Collectors; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; @@ -674,7 +677,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { validateUserRole(user, service, new ArrayList<>(), AuditingActionEnum.CREATE_RESOURCE, null); service.setCreatorUserId(user.getUserId()); // warn on overridden fields - checkFieldsForOverideAttampt(service); + checkFieldsForOverideAttempt(service); // enrich object log.debug("enrich service with version and state"); service.setState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT); @@ -689,7 +692,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { return createServiceByDao(service, user).left().bind(c -> updateCatalog(c, ChangeTypeEnum.LIFECYCLE).left().map(Service.class::cast)); } - private void checkFieldsForOverideAttampt(Service service) { + private void checkFieldsForOverideAttempt(Service service) { checkComponentFieldsForOverrideAttempt(service); if (service.getDistributionStatus() != null) { log.info("Distribution Status cannot be defined by user. This field will be overridden by the application"); @@ -2327,8 +2330,10 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { } public boolean isServiceExist(String serviceName) { - Either latestByName = toscaOperationFacade.getLatestByServiceName(serviceName); - return latestByName.isLeft(); + return toscaOperationFacade.getLatestByServiceName(serviceName).isLeft(); + } + + public void updateService(Service service, Map map) { } interface ArtifactGenerator extends Callable> { @@ -2336,26 +2341,16 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { } @Getter + @AllArgsConstructor(access = AccessLevel.PRIVATE) class HeatEnvArtifactGenerator implements ArtifactGenerator { private ArtifactDefinition artifactDefinition; private Service service; private String resourceInstanceName; private User modifier; - private String instanceId; private boolean shouldLock; private boolean inTransaction; - - HeatEnvArtifactGenerator(ArtifactDefinition artifactDefinition, Service service, String resourceInstanceName, User modifier, - boolean shouldLock, boolean inTransaction, String instanceId) { - this.artifactDefinition = artifactDefinition; - this.service = service; - this.resourceInstanceName = resourceInstanceName; - this.modifier = modifier; - this.shouldLock = shouldLock; - this.instanceId = instanceId; - this.inTransaction = inTransaction; - } + private String instanceId; @Override public Either call() throws Exception { @@ -2365,23 +2360,14 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { } } + @AllArgsConstructor(access = AccessLevel.PRIVATE) class VfModuleArtifactGenerator implements ArtifactGenerator { - boolean shouldLock; - boolean inTransaction; private User user; private ComponentInstance componentInstance; private Service service; - - private VfModuleArtifactGenerator(User user, ComponentInstance componentInstance, Service service, boolean shouldLock, - boolean inTransaction) { - super(); - this.user = user; - this.componentInstance = componentInstance; - this.service = service; - this.shouldLock = shouldLock; - this.inTransaction = inTransaction; - } + private boolean shouldLock; + private boolean inTransaction; private Either generateVfModuleInstanceArtifact(User modifier, ComponentInstance currVFInstance, Service service, boolean shouldLock, @@ -2400,13 +2386,11 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { vfModuleArtifact = fillVfModulePayload(modifier, currVFInstance, vfModuleArtifact, shouldLock, inTransaction, payloadWrapper, responseWrapper, service); } - Either result; if (responseWrapper.isEmpty()) { - result = Either.left(vfModuleArtifact); + return Either.left(vfModuleArtifact); } else { - result = Either.right(responseWrapper.getInnerElement()); + return Either.right(responseWrapper.getInnerElement()); } - return result; } private void fillVfModuleInstHeatEnvPayload(List groupsForCurrVF, Wrapper payloadWrapper) { @@ -2446,9 +2430,8 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { } private List collectGroupsInstanceForCompInstance(ComponentInstance currVF) { - Map deploymentArtifacts = currVF.getDeploymentArtifacts(); if (currVF.getGroupInstances() != null) { - currVF.getGroupInstances().forEach(gi -> gi.alignArtifactsUuid(deploymentArtifacts)); + currVF.getGroupInstances().forEach(gi -> gi.alignArtifactsUuid(currVF.getDeploymentArtifacts())); } return currVF.getGroupInstances(); } @@ -2471,14 +2454,12 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { vfModuleArtifactDefinition.setArtifactChecksum(newCheckSum); Either addArtifactToComponent = artifactToscaOperation .addArtifactToComponent(vfModuleArtifactDefinition, service, NodeTypeEnum.ResourceInstance, true, currVF.getUniqueId()); - Either result; if (addArtifactToComponent.isLeft()) { - result = Either.left(addArtifactToComponent.left().value()); + return Either.left(addArtifactToComponent.left().value()); } else { - result = Either + return Either .right(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(addArtifactToComponent.right().value()))); } - return result; } private ArtifactDefinition fillVfModulePayload(User modifier, ComponentInstance currVF, ArtifactDefinition vfModuleArtifact, diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceImportBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceImportBusinessLogic.java index a15e39a478..3eca461970 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceImportBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceImportBusinessLogic.java @@ -52,6 +52,7 @@ import lombok.Getter; import lombok.Setter; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.json.simple.JSONObject; @@ -1965,7 +1966,7 @@ public class ServiceImportBusinessLogic { .forEach(instanceProperty -> { toscaFunctionService.updateFunctionWithDataFromSelfComponent(instanceProperty.getToscaFunction(), updatedService, instancePropertyMap, instanceAttributeMap); - instanceProperty.setValue(instanceProperty.getToscaFunction().getValue()); + instanceProperty.setValue(StringEscapeUtils.unescapeJava(instanceProperty.getToscaFunction().getValue())); }) ); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java index 67d9755808..eb25b30e89 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java @@ -29,6 +29,7 @@ import java.util.UUID; import java.util.function.Supplier; import java.util.stream.Collectors; import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.janusgraph.core.JanusGraph; @@ -405,7 +406,7 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI final GroupInstanceData groupInstanceData = findResInstanceRes.left().value(); //TODO fix toscaFunctionValidator.validate(propDataDef, null); - propertyValueData.setValue(propDataDef.getToscaFunction().getValue()); + propertyValueData.setValue(StringEscapeUtils.unescapeJava(propDataDef.getToscaFunction().getValue())); } else { final String innerType = innerTypeEither.left().value(); Either isValid = propertyOperation diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java index dbe11a8efd..b2c2fec33f 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java @@ -59,6 +59,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -1740,7 +1741,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe final Map dataTypes) { if (property.isToscaFunction()) { toscaFunctionValidator.validate(property, containerComponent); - property.setValue(property.getToscaFunction().getValue()); + property.setValue(StringEscapeUtils.unescapeJava(property.getToscaFunction().getValue())); return Either.left(property.getValue()); } Either checkInnerType = checkInnerType(property);