diff options
author | talig <talig@amdocs.com> | 2019-11-20 15:13:47 +0200 |
---|---|---|
committer | talig <talig@amdocs.com> | 2019-11-20 15:14:44 +0200 |
commit | c54aacb32df8fcb27375d1b131f76afc0a34d0c7 (patch) | |
tree | 8f2f0d927051a65a391744af845fdd760fbd523a /workflow-designer-be/src/main/java | |
parent | 820f4ec65a28ed822d4205b05ac6fbbd910a46cc (diff) |
Use versioning, zusammen and session libs from sdc-common-be
zusammen-lib in sdc-common-be uses cassandra 3.6.0 withoutJMXReporting
(cassandra 3.4.0 with spring boot 2.1.0 caused:
java.lang.NoClassDefFoundError: com/codahale/metrics/JmxReporter)
Change-Id: I248442d519b2ad5f4869e9384e447e9004d24586
Issue-ID: SDC-2541
Signed-off-by: talig <talig@amdocs.com>
Diffstat (limited to 'workflow-designer-be/src/main/java')
21 files changed, 331 insertions, 453 deletions
diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/SpringBootWebApplication.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/SpringBootWebApplication.java index 0feafd2a..87de212e 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/SpringBootWebApplication.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/SpringBootWebApplication.java @@ -21,8 +21,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory; import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; @SpringBootApplication +@ComponentScan( {"org.onap.sdc.common", "org.onap.sdc.workflow"}) public class SpringBootWebApplication { public static void main(String[] args) { diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ActivitySpecController.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ActivitySpecController.java index dca6c695..ac72d46e 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ActivitySpecController.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ActivitySpecController.java @@ -23,7 +23,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; -import java.util.Objects; import java.util.stream.Collectors; import javax.validation.Valid; import org.onap.sdc.workflow.api.mappers.ActivitySpecDtoMapper; @@ -35,7 +34,6 @@ import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecRequest; import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecResponse; import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity; import org.onap.sdc.workflow.services.ActivitySpecManager; -import org.openecomp.sdc.versioning.dao.types.Version; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; @@ -83,8 +81,7 @@ public class ActivitySpecController { public ResponseEntity<ActivitySpecCreateResponse> create(@Valid @RequestBody ActivitySpecRequest request) { ActivitySpecEntity activitySpec = activitySpecManager.createActivitySpec(activitySpecDtoMapper.fromActivitySpecRequest(request)); - return new ResponseEntity<>(new ActivitySpecCreateResponse(activitySpec.getId(), - Objects.nonNull(activitySpec.getVersion()) ? activitySpec.getVersion().getId() : null), + return new ResponseEntity<>(new ActivitySpecCreateResponse(activitySpec.getId(),activitySpec.getVersionId()), HttpStatus.CREATED); } @@ -95,7 +92,7 @@ public class ActivitySpecController { @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId") String versionId) { return activitySpecDtoMapper.toActivitySpecDataResponse( - activitySpecManager.get(new ActivitySpecEntity(activitySpecId, new Version(versionId)))); + activitySpecManager.get(new ActivitySpecEntity(activitySpecId, versionId))); } @PutMapping("/{id}/versions/{versionId}") @@ -107,7 +104,7 @@ public class ActivitySpecController { String versionId) { ActivitySpecEntity activitySpec = activitySpecDtoMapper.fromActivitySpecRequest(request); activitySpec.setId(activitySpecId); - activitySpec.setVersion(new Version(versionId)); + activitySpec.setVersionId(versionId); activitySpecManager.update(activitySpec); } @@ -122,6 +119,6 @@ public class ActivitySpecController { @ApiParam(value = "Version Id", defaultValue = VERSION_ID_DEFAULT_VALUE) @PathVariable("versionId") String versionId) { activitySpecManager - .actOnAction(new ActivitySpecEntity(activitySpecId, new Version(versionId)), request.getAction()); + .actOnAction(new ActivitySpecEntity(activitySpecId, versionId), request.getAction()); } } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ExceptionsHandler.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ExceptionsHandler.java index 083206c8..70633d41 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ExceptionsHandler.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/ExceptionsHandler.java @@ -35,7 +35,6 @@ import org.onap.sdc.workflow.services.exceptions.VersionStateModificationExcepti import org.onap.sdc.workflow.services.exceptions.VersionStateModificationMissingArtifactException; import org.onap.sdc.workflow.services.exceptions.VersionStatusModificationException; import org.onap.sdc.workflow.services.exceptions.WorkflowModificationException; -import org.onap.sdc.workflow.services.exceptions.WorkflowStatusModificationException; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.springframework.context.support.DefaultMessageSourceResolvable; @@ -96,7 +95,7 @@ public class ExceptionsHandler extends ResponseEntityExceptionHandler { VersionStateModificationException.class, VersionStateModificationMissingArtifactException.class, VersionStatusModificationException.class, - UniqueValueViolationException.class, WorkflowStatusModificationException.class, + UniqueValueViolationException.class, WorkflowModificationException.class}) public final ResponseEntity<ErrorResponse> handleUnprocessableEntityException(Exception exception) { LOG.debug(LOG_MSG, UNPROCESSABLE_ENTITY, exception); diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ActivitySpecRepositoryImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ActivitySpecRepositoryImpl.java index 726e831c..b304f900 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ActivitySpecRepositoryImpl.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ActivitySpecRepositoryImpl.java @@ -16,12 +16,10 @@ package org.onap.sdc.workflow.persistence.impl; -import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement; -import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext; +import static org.onap.sdc.common.zusammen.services.ZusammenElementUtil.buildStructuralElement; import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; -import com.amdocs.zusammen.datatypes.SessionContext; import com.amdocs.zusammen.datatypes.item.Action; import com.amdocs.zusammen.datatypes.item.ElementContext; import com.amdocs.zusammen.datatypes.item.Info; @@ -29,13 +27,14 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.Objects; import java.util.Optional; +import org.onap.sdc.common.versioning.persistence.zusammen.ZusammenSessionContextCreator; +import org.onap.sdc.common.zusammen.services.ZusammenAdaptor; import org.onap.sdc.workflow.persistence.ActivitySpecRepository; import org.onap.sdc.workflow.persistence.impl.types.ActivitySpecData; import org.onap.sdc.workflow.persistence.impl.types.ActivitySpecElementType; import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity; import org.onap.sdc.workflow.services.ActivitySpecConstant; import org.onap.sdc.workflow.services.utilities.JsonUtil; -import org.openecomp.core.zusammen.api.ZusammenAdaptor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -43,40 +42,39 @@ import org.springframework.stereotype.Repository; public class ActivitySpecRepositoryImpl implements ActivitySpecRepository { private final ZusammenAdaptor zusammenAdaptor; + private final ZusammenSessionContextCreator contextCreator; @Autowired - public ActivitySpecRepositoryImpl(ZusammenAdaptor zusammenAdaptor) { + public ActivitySpecRepositoryImpl(ZusammenAdaptor zusammenAdaptor, ZusammenSessionContextCreator contextCreator) { this.zusammenAdaptor = zusammenAdaptor; + this.contextCreator = contextCreator; } @Override public void create(ActivitySpecEntity activitySpec) { - SessionContext context = createSessionContext(); ZusammenElement generalElement = mapActivityDetailsToZusammenElement(activitySpec, Action.CREATE); - ElementContext elementContext = new ElementContext(activitySpec.getId(), activitySpec.getVersion().getId()); + ElementContext elementContext = new ElementContext(activitySpec.getId(), activitySpec.getVersionId()); zusammenAdaptor - .saveElement(context, elementContext, generalElement, "Create Activity Spec General Info Element"); + .saveElement(contextCreator.create(), elementContext, generalElement, "Create Activity Spec General Info Element"); } @Override public ActivitySpecEntity get(ActivitySpecEntity entity) { - SessionContext context = createSessionContext(); - - ElementContext elementContext = new ElementContext(entity.getId(), entity.getVersion().getId()); + ElementContext elementContext = new ElementContext(entity.getId(), entity.getVersionId()); Optional<Element> element = - zusammenAdaptor.getElementByName(context, elementContext, null, ActivitySpecElementType.ACTIVITYSPEC.name()); + zusammenAdaptor.getElementByName(contextCreator.create(), elementContext, null, ActivitySpecElementType.ACTIVITYSPEC.name()); return element.map(this::mapZusammenElementToActivityDetails).orElse(null); } @Override public void update(ActivitySpecEntity entity) { - SessionContext context = createSessionContext(); + ZusammenElement generalElement = mapActivityDetailsToZusammenElement(entity, Action.UPDATE); - ElementContext elementContext = new ElementContext(entity.getId(), entity.getVersion().getId()); + ElementContext elementContext = new ElementContext(entity.getId(), entity.getVersionId()); zusammenAdaptor - .saveElement(context, elementContext, generalElement, "Update Activity Spec General Info Element"); + .saveElement(contextCreator.create(), elementContext, generalElement, "Update Activity Spec General Info Element"); } private ZusammenElement mapActivityDetailsToZusammenElement(ActivitySpecEntity entity, Action action) { diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryImpl.java index 06e2a638..4ad54614 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryImpl.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ArtifactRepositoryImpl.java @@ -16,13 +16,11 @@ package org.onap.sdc.workflow.persistence.impl; -import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement; -import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext; +import static org.onap.sdc.common.zusammen.services.ZusammenElementUtil.buildStructuralElement; import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; -import com.amdocs.zusammen.datatypes.SessionContext; import com.amdocs.zusammen.datatypes.item.Action; import com.amdocs.zusammen.datatypes.item.ElementContext; import java.io.ByteArrayInputStream; @@ -31,10 +29,11 @@ import java.io.InputStream; import java.util.Arrays; import java.util.Optional; import org.apache.commons.io.IOUtils; +import org.onap.sdc.common.versioning.persistence.zusammen.ZusammenSessionContextCreator; +import org.onap.sdc.common.zusammen.services.ZusammenAdaptor; import org.onap.sdc.workflow.persistence.ArtifactRepository; -import org.onap.sdc.workflow.persistence.types.ArtifactEntity; import org.onap.sdc.workflow.persistence.impl.types.WorkflowElementType; -import org.openecomp.core.zusammen.api.ZusammenAdaptor; +import org.onap.sdc.workflow.persistence.types.ArtifactEntity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -45,10 +44,12 @@ public class ArtifactRepositoryImpl implements ArtifactRepository { private static final String EMPTY_DATA = "{}"; private final ZusammenAdaptor zusammenAdaptor; + private final ZusammenSessionContextCreator contextCreator; @Autowired - public ArtifactRepositoryImpl(ZusammenAdaptor zusammenAdaptor) { + public ArtifactRepositoryImpl(ZusammenAdaptor zusammenAdaptor, ZusammenSessionContextCreator contextCreator) { this.zusammenAdaptor = zusammenAdaptor; + this.contextCreator = contextCreator; } @Override @@ -58,20 +59,20 @@ public class ArtifactRepositoryImpl implements ArtifactRepository { artifactElement.setData(artifactEntity.getArtifactData()); artifactElement.getInfo().addProperty(FILE_NAME_PROPERTY, artifactEntity.getFileName()); - SessionContext context = createSessionContext(); + ElementContext elementContext = new ElementContext(workflowId, versionId); zusammenAdaptor - .saveElement(context, elementContext, artifactElement, "Update WorkflowVersion Artifact Element"); + .saveElement(contextCreator.create(), elementContext, artifactElement, "Update WorkflowVersion Artifact Element"); } @Override public Optional<ArtifactEntity> get(String workflowId, String versionId) { - SessionContext context = createSessionContext(); + ElementContext elementContext = new ElementContext(workflowId, versionId); Optional<Element> elementOptional = - zusammenAdaptor.getElementByName(context, elementContext, null, WorkflowElementType.ARTIFACT.name()); + zusammenAdaptor.getElementByName(contextCreator.create(), elementContext, null, WorkflowElementType.ARTIFACT.name()); if (!elementOptional.isPresent() || hasEmptyData(elementOptional.get().getData())) { return Optional.empty(); @@ -87,10 +88,10 @@ public class ArtifactRepositoryImpl implements ArtifactRepository { @Override public boolean isExist(String workflowId, String versionId) { - SessionContext context = createSessionContext(); + ElementContext elementContext = new ElementContext(workflowId, versionId); - Optional<ElementInfo> optionalElementInfo = zusammenAdaptor.getElementInfoByName(context, elementContext, null, + Optional<ElementInfo> optionalElementInfo = zusammenAdaptor.getElementInfoByName(contextCreator.create(), elementContext, null, WorkflowElementType.ARTIFACT.name()); return optionalElementInfo.isPresent() && optionalElementInfo.get().getInfo().getProperties() .containsKey(FILE_NAME_PROPERTY); @@ -98,27 +99,27 @@ public class ArtifactRepositoryImpl implements ArtifactRepository { @Override public void createStructure(String workflowId, String versionId) { - SessionContext context = createSessionContext(); + ElementContext elementContext = new ElementContext(workflowId, versionId); ZusammenElement artifactElement = buildStructuralElement(WorkflowElementType.ARTIFACT.name(), Action.CREATE); artifactElement.setData(new ByteArrayInputStream(EMPTY_DATA.getBytes())); zusammenAdaptor - .saveElement(context, elementContext, artifactElement, "Create WorkflowVersion Artifact Element"); + .saveElement(contextCreator.create(), elementContext, artifactElement, "Create WorkflowVersion Artifact Element"); } @Override public void delete(String workflowId, String versionId) { - SessionContext context = createSessionContext(); + ElementContext elementContext = new ElementContext(workflowId, versionId); ZusammenElement artifactElement = buildStructuralElement(WorkflowElementType.ARTIFACT.name(), Action.UPDATE); artifactElement.setData(new ByteArrayInputStream(EMPTY_DATA.getBytes())); artifactElement.getInfo().getProperties().remove(FILE_NAME_PROPERTY); - zusammenAdaptor.saveElement(context, elementContext, artifactElement, "Delete WorkflowVersion Artifact Data"); + zusammenAdaptor.saveElement(contextCreator.create(), elementContext, artifactElement, "Delete WorkflowVersion Artifact Data"); } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryImpl.java index 00dadead..eeef2477 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryImpl.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/impl/ParameterRepositoryImpl.java @@ -16,29 +16,28 @@ package org.onap.sdc.workflow.persistence.impl; -import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement; -import static org.openecomp.core.zusammen.api.ZusammenUtil.buildStructuralElement; -import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext; +import static org.onap.sdc.common.zusammen.services.ZusammenElementUtil.ELEMENT_TYPE_PROPERTY; +import static org.onap.sdc.common.zusammen.services.ZusammenElementUtil.buildElement; +import static org.onap.sdc.common.zusammen.services.ZusammenElementUtil.buildStructuralElement; import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement; import com.amdocs.zusammen.datatypes.Id; -import com.amdocs.zusammen.datatypes.SessionContext; import com.amdocs.zusammen.datatypes.item.Action; import com.amdocs.zusammen.datatypes.item.ElementContext; import com.amdocs.zusammen.datatypes.item.Info; import java.util.Collection; import java.util.Optional; import java.util.stream.Collectors; +import org.onap.sdc.common.versioning.persistence.zusammen.ZusammenSessionContextCreator; +import org.onap.sdc.common.zusammen.services.ZusammenAdaptor; import org.onap.sdc.workflow.persistence.ParameterRepository; import org.onap.sdc.workflow.persistence.impl.types.ParameterPropertyName; import org.onap.sdc.workflow.persistence.impl.types.WorkflowElementType; import org.onap.sdc.workflow.persistence.types.ParameterEntity; import org.onap.sdc.workflow.persistence.types.ParameterRole; import org.onap.sdc.workflow.persistence.types.ParameterType; -import org.openecomp.core.zusammen.api.ZusammenAdaptor; -import org.openecomp.types.ElementPropertyName; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -46,90 +45,80 @@ import org.springframework.stereotype.Repository; public class ParameterRepositoryImpl implements ParameterRepository { private final ZusammenAdaptor zusammenAdaptor; + private final ZusammenSessionContextCreator contextCreator; @Autowired - public ParameterRepositoryImpl(ZusammenAdaptor zusammenAdaptor) { + public ParameterRepositoryImpl(ZusammenAdaptor zusammenAdaptor, ZusammenSessionContextCreator contextCreator) { this.zusammenAdaptor = zusammenAdaptor; + this.contextCreator = contextCreator; } @Override public void createStructure(String id, String versionId) { - - SessionContext context = createSessionContext(); ElementContext elementContext = new ElementContext(id, versionId); ZusammenElement inputsElement = buildStructuralElement(WorkflowElementType.INPUTS.name(), Action.CREATE); ZusammenElement outputsElement = buildStructuralElement(WorkflowElementType.OUTPUTS.name(), Action.CREATE); - zusammenAdaptor.saveElement(context, elementContext, inputsElement, "Create WorkflowVersion INPUTS Element"); - zusammenAdaptor.saveElement(context, elementContext, outputsElement, "Create WorkflowVersion OUTPUTS Element"); + zusammenAdaptor.saveElement(contextCreator.create(), elementContext, inputsElement, "Create WorkflowVersion INPUTS Element"); + zusammenAdaptor.saveElement(contextCreator.create(), elementContext, outputsElement, "Create WorkflowVersion OUTPUTS Element"); } @Override public Collection<ParameterEntity> list(String id, String versionId, ParameterRole role) { - - SessionContext context = createSessionContext(); ElementContext elementContext = new ElementContext(id, versionId); - return zusammenAdaptor.listElementsByName(context, elementContext, null, getParentElementType(role)).stream() - .map(this::mapElementInfoToParameter).collect(Collectors.toList()); - + return zusammenAdaptor.listElementsByName(contextCreator.create(), elementContext, null, getParentElementType(role)).stream() + .map(this::mapElementInfoToParameter).collect(Collectors.toList()); } @Override public void deleteAll(String id, String versionId, ParameterRole role) { - - SessionContext context = createSessionContext(); ElementContext elementContext = new ElementContext(id, versionId); Optional<ElementInfo> optionalParentElement = - zusammenAdaptor.getElementInfoByName(context, elementContext, null, getParentElementType(role)); + zusammenAdaptor.getElementInfoByName(contextCreator.create(), elementContext, null, getParentElementType(role)); if (!optionalParentElement.isPresent()) { - throw new IllegalStateException(String.format("Missing data for workflow id %s version id %s",id,versionId)); + throw new IllegalStateException( + String.format("Missing data for workflow id %s version id %s", id, versionId)); } ZusammenElement parentElement = buildElement(optionalParentElement.get().getId(), Action.IGNORE); parentElement.setSubElements(optionalParentElement.get().getSubElements().stream() - .map(parameter -> buildElement(parameter.getId(), - Action.DELETE)).collect(Collectors.toList())); + .map(parameter -> buildElement(parameter.getId(), Action.DELETE)) + .collect(Collectors.toList())); - zusammenAdaptor.saveElement(context, elementContext, parentElement, "Delete all " + role); + zusammenAdaptor.saveElement(contextCreator.create(), elementContext, parentElement, "Delete all " + role); } @Override public ParameterEntity get(String id, String versionId, String parameterId) { - - SessionContext context = createSessionContext(); ElementContext elementContext = new ElementContext(id, versionId); - Optional<ElementInfo> element = zusammenAdaptor.getElementInfo(context, elementContext, new Id(parameterId)); + Optional<ElementInfo> element = zusammenAdaptor.getElementInfo(contextCreator.create(), elementContext, new Id(parameterId)); return element.map(this::mapElementInfoToParameter).orElse(null); } @Override public void delete(String id, String versionId, String parameterId) { - SessionContext context = createSessionContext(); ElementContext elementContext = new ElementContext(id, versionId); ZusammenElement parameterElement = buildElement(new Id(parameterId), Action.DELETE); - zusammenAdaptor.saveElement(context, elementContext, parameterElement, + zusammenAdaptor.saveElement(contextCreator.create(), elementContext, parameterElement, String.format("Delete Parameter with id %s", parameterId)); - } @Override public ParameterEntity create(String id, String versionId, ParameterRole role, ParameterEntity parameter) { - ZusammenElement parameterElement = parameterToZusammenElement(parameter, role, Action.CREATE); ZusammenElement parentElement = buildStructuralElement(getParentElementType(role), Action.IGNORE); parentElement.addSubElement(parameterElement); - SessionContext context = createSessionContext(); ElementContext elementContext = new ElementContext(id, versionId); - Element savedElement = zusammenAdaptor.saveElement(context, elementContext, parentElement, + Element savedElement = zusammenAdaptor.saveElement(contextCreator.create(), elementContext, parentElement, "Create WorkflowVersion Parameter Element"); parameter.setId(savedElement.getSubElements().iterator().next().getElementId().getValue()); @@ -138,22 +127,19 @@ public class ParameterRepositoryImpl implements ParameterRepository { @Override public void update(String id, String versionId, ParameterRole role, ParameterEntity parameter) { - - SessionContext context = createSessionContext(); ElementContext elementContext = new ElementContext(id, versionId); ZusammenElement parameterElement = parameterToZusammenElement(parameter, role, Action.UPDATE); - zusammenAdaptor.saveElement(context, elementContext, parameterElement, "Update WorkflowVersion Parameter"); + zusammenAdaptor.saveElement(contextCreator.create(), elementContext, parameterElement, "Update WorkflowVersion Parameter"); } private ZusammenElement parameterToZusammenElement(ParameterEntity parameter, ParameterRole role, Action action) { - ZusammenElement parameterElement = buildElement(parameter.getId() == null ? null : new Id(parameter.getId()), action); Info info = new Info(); info.setName(parameter.getName()); - info.addProperty(ElementPropertyName.elementType.name(), WorkflowElementType.valueOf(role.name())); + info.addProperty(ELEMENT_TYPE_PROPERTY, WorkflowElementType.valueOf(role.name())); info.addProperty(ParameterPropertyName.TYPE.name(), parameter.getType()); info.addProperty(ParameterPropertyName.MANDATORY.name(), parameter.isMandatory()); parameterElement.setInfo(info); diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ActivitySpecEntity.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ActivitySpecEntity.java index cf2db9a1..cf3be394 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ActivitySpecEntity.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/persistence/types/ActivitySpecEntity.java @@ -18,14 +18,13 @@ package org.onap.sdc.workflow.persistence.types; import java.util.List; import lombok.NoArgsConstructor; -import org.openecomp.sdc.versioning.dao.types.Version; @lombok.Data @NoArgsConstructor public class ActivitySpecEntity { private String id; - private Version version; + private String versionId; private String name; private String description; @@ -38,8 +37,8 @@ public class ActivitySpecEntity { //Not to be maintained in activityspec element private String status; - public ActivitySpecEntity(String id, Version version) { + public ActivitySpecEntity(String id, String versionId) { this.id = id; - this.version = version; + this.versionId = versionId; } } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/WorkflowZusammenConfigProvider.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/WorkflowZusammenConfigProvider.java new file mode 100644 index 00000000..dbd2d6de --- /dev/null +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/WorkflowZusammenConfigProvider.java @@ -0,0 +1,48 @@ +/* + * Copyright © 2018 European Support Limited + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.sdc.workflow.server.config; + +import lombok.Getter; +import org.onap.sdc.common.zusammen.config.ZusammenConfigProvider; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Configuration +@Getter +public class WorkflowZusammenConfigProvider implements ZusammenConfigProvider { + + @Value("${spring.data.cassandra.keyspace-name}") + private String tenant; + @Value("${spring.data.cassandra.contact-points}") + private String cassandraAddresses; + @Value("${spring.data.cassandra.port}") + private String cassandraPort; + + @Value("${spring.data.cassandra.username}") + private String cassandraUser; + @Value("${spring.data.cassandra.password}") + private String cassandraPassword; + @Value("${zusammen.cassandra.isAuthenticate}") + private String cassandraAuth; + @Value("${spring.data.cassandra.ssl}") + + private String cassandraSSL; + @Value("${zusammen.cassandra.trustStorePath}") + private String cassandraTrustStorePath; + @Value("${zusammen.cassandra.trustStorePassword}") + private String cassandraTrustStorePassword; +}
\ No newline at end of file diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/ZusammenConfig.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/ZusammenConfig.java deleted file mode 100644 index 700b1b9f..00000000 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/config/ZusammenConfig.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onap.sdc.workflow.server.config; - -import com.datastax.driver.core.RemoteEndpointAwareJdkSSLOptions; -import com.datastax.driver.core.SSLOptions; -import java.io.FileInputStream; -import java.security.KeyStore; -import java.security.SecureRandom; -import javax.annotation.PostConstruct; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import org.springframework.beans.factory.BeanCreationException; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.cassandra.ClusterBuilderCustomizer; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class ZusammenConfig { - - @Value("${spring.data.cassandra.keyspace-name}") - private String tenant; - @Value("${spring.data.cassandra.contact-points}") - private String cassandraAddress; - @Value("${spring.data.cassandra.username}") - private String cassandraUser; - @Value("${spring.data.cassandra.password}") - private String cassandraPassword; - @Value("${zusammen.cassandra.isAuthenticate}") - private String cassandraAuth; - @Value("${spring.data.cassandra.ssl}") - private String cassandraSSL; - @Value("${zusammen.cassandra.trustStorePath}") - private String cassandraTrustStorePath; - @Value("${zusammen.cassandra.trustStorePassword}") - private String cassandraTrustStorePassword; - - private static final String[] CIPHER_SUITES = {"TLS_RSA_WITH_AES_128_CBC_SHA"}; - private static final String KEYSTORE_TYPE = "JKS"; - private static final String SECURE_SOCKET_PROTOCOL = "SSL"; - - @PostConstruct - public void init() { - System.setProperty("cassandra.nodes", cassandraAddress); - System.setProperty("cassandra.user", cassandraUser); - System.setProperty("cassandra.password", cassandraPassword); - System.setProperty("cassandra.authenticate", Boolean.toString(Boolean.valueOf(cassandraAuth))); - System.setProperty("cassandra.ssl", Boolean.toString(Boolean.valueOf(cassandraSSL))); - System.setProperty("cassandra.truststore", cassandraTrustStorePath); - System.setProperty("cassandra.truststore.password", cassandraTrustStorePassword); - } - - public String getTenant() { - return tenant; - } - - @Bean - @ConditionalOnProperty("spring.data.cassandra.ssl") - ClusterBuilderCustomizer clusterBuilderCustomizer() { - SSLOptions sslOptions = RemoteEndpointAwareJdkSSLOptions - .builder() - .withSSLContext(getSslContext()) - .withCipherSuites(CIPHER_SUITES).build(); - return builder -> builder.withSSL(sslOptions); - } - - private SSLContext getSslContext() { - try (FileInputStream tsf = new FileInputStream(cassandraTrustStorePath)) { - SSLContext ctx = SSLContext.getInstance(SECURE_SOCKET_PROTOCOL); - KeyStore ts = KeyStore.getInstance(KEYSTORE_TYPE); - ts.load(tsf, cassandraTrustStorePassword.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - tmf.init(ts); - ctx.init(null, tmf.getTrustManagers(), new SecureRandom()); - return ctx; - } catch (Exception ex) { - throw new BeanCreationException(ex.getMessage(), ex); - } - } -}
\ No newline at end of file diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/filters/SessionContextFilter.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/filters/SessionContextFilter.java index e9742fcd..57cda856 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/filters/SessionContextFilter.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/server/filters/SessionContextFilter.java @@ -24,20 +24,21 @@ import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; -import org.onap.sdc.workflow.server.config.ZusammenConfig; -import org.openecomp.sdc.common.session.SessionContextProvider; -import org.openecomp.sdc.common.session.SessionContextProviderFactory; +import org.onap.sdc.common.session.SessionContextProvider; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class SessionContextFilter implements Filter { - private ZusammenConfig zusammenConfig; + private final SessionContextProvider sessionContextProvider; + @Value("${spring.data.cassandra.keyspace-name}") + private String tenant; @Autowired - public SessionContextFilter(ZusammenConfig zusammenConfig) { - this.zusammenConfig = zusammenConfig; + public SessionContextFilter(SessionContextProvider sessionContextProvider) { + this.sessionContextProvider = sessionContextProvider; } @Override @@ -48,16 +49,14 @@ public class SessionContextFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - SessionContextProvider contextProvider = SessionContextProviderFactory.getInstance().createInterface(); - try { if (servletRequest instanceof HttpServletRequest) { - contextProvider.create(getUser(servletRequest), getTenant()); + sessionContextProvider.create(getUser(servletRequest), tenant); } filterChain.doFilter(servletRequest, servletResponse); } finally { - contextProvider.close(); + sessionContextProvider.close(); } } @@ -69,10 +68,6 @@ public class SessionContextFilter implements Filter { private String getUser(ServletRequest servletRequest) { return "GLOBAL_USER"; // TODO: 7/11/2018 get user from header when collaboration will be supported - //((HttpServletRequest) servletRequest).getHeader(USER_ID_HEADER_PARAM); - } - - private String getTenant() { - return zusammenConfig.getTenant(); + //((HttpServletRequest) servletRequest).getHeader(USER_ID_HEADER_PARAM); } } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStatusModificationException.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStatusModificationException.java index 4eb8af42..917a8384 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStatusModificationException.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/VersionStatusModificationException.java @@ -16,7 +16,7 @@ package org.onap.sdc.workflow.services.exceptions; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; +import org.onap.sdc.common.versioning.services.types.VersionStatus; public class VersionStatusModificationException extends RuntimeException { diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/WorkflowStatusModificationException.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/WorkflowStatusModificationException.java deleted file mode 100644 index 380b1405..00000000 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/exceptions/WorkflowStatusModificationException.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onap.sdc.workflow.services.exceptions; - -import org.openecomp.sdc.common.errors.CoreException; - -public class WorkflowStatusModificationException extends RuntimeException { - - public WorkflowStatusModificationException(CoreException ex) { - super(ex.getMessage()); - } -} diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/ActivitySpecManagerImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/ActivitySpecManagerImpl.java index 640affe8..e1849b9f 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/ActivitySpecManagerImpl.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/ActivitySpecManagerImpl.java @@ -16,12 +16,12 @@ package org.onap.sdc.workflow.services.impl; +import static org.onap.sdc.common.versioning.services.types.VersionStatus.Certified; +import static org.onap.sdc.common.versioning.services.types.VersionStatus.Deleted; +import static org.onap.sdc.common.versioning.services.types.VersionStatus.Deprecated; +import static org.onap.sdc.common.versioning.services.types.VersionStatus.Draft; import static org.onap.sdc.workflow.services.ActivitySpecConstant.ACTIVITY_SPEC_NOT_FOUND; import static org.onap.sdc.workflow.services.ActivitySpecConstant.VERSION_ID_DEFAULT_VALUE; -import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Certified; -import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Deleted; -import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Deprecated; -import static org.openecomp.sdc.versioning.dao.types.VersionStatus.Draft; import java.util.Collection; import java.util.Collections; @@ -32,6 +32,12 @@ import java.util.Map; import java.util.Objects; import java.util.function.Predicate; import java.util.stream.Collectors; +import org.onap.sdc.common.versioning.services.ItemManager; +import org.onap.sdc.common.versioning.services.VersioningManager; +import org.onap.sdc.common.versioning.services.types.Item; +import org.onap.sdc.common.versioning.services.types.Version; +import org.onap.sdc.common.versioning.services.types.VersionCreationMethod; +import org.onap.sdc.common.versioning.services.types.VersionStatus; import org.onap.sdc.workflow.api.types.activityspec.ActivitySpecAction; import org.onap.sdc.workflow.persistence.ActivitySpecRepository; import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity; @@ -40,15 +46,8 @@ import org.onap.sdc.workflow.services.UniqueValueService; import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException; import org.onap.sdc.workflow.services.exceptions.VersionStatusModificationException; import org.onap.sdc.workflow.services.impl.mappers.ActivitySpecMapper; -import org.openecomp.sdc.common.errors.SdcRuntimeException; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; -import org.openecomp.sdc.versioning.ItemManager; -import org.openecomp.sdc.versioning.VersioningManager; -import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; -import org.openecomp.sdc.versioning.types.Item; -import org.openecomp.sdc.versioning.types.VersionCreationMethod; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -91,13 +90,15 @@ public class ActivitySpecManagerImpl implements ActivitySpecManager { uniqueValueService.validateUniqueValue(ACTIVITY_SPEC_NAME, activitySpec.getName()); - Item item = activitySpecMapper.activitySpecToItem(activitySpec); - item = itemManager.create(item); + Item item = new Item(); + activitySpecMapper.toItem(activitySpec, item); + Item createdItem = itemManager.create(item); - Version version = getActivitySpecVersion(activitySpec); - versioningManager.create(item.getId(), version, VersionCreationMethod.major); + Version createdVersion = + versioningManager.create(createdItem.getId(), null, new Version(), VersionCreationMethod.major); - enrichActivitySpec(item, version, activitySpec); + activitySpec.setId(createdItem.getId()); + activitySpec.setVersionId(createdVersion.getId()); activitySpecDao.create(activitySpec); uniqueValueService.createUniqueValue(ACTIVITY_SPEC_NAME, activitySpec.getName()); @@ -106,18 +107,18 @@ public class ActivitySpecManagerImpl implements ActivitySpecManager { @Override public ActivitySpecEntity get(ActivitySpecEntity activitySpec) { - activitySpec.setVersion(calculateLatestVersion(activitySpec)); + activitySpec.setVersionId(calculateLatestVersion(activitySpec)); ActivitySpecEntity retrieved; try { + retrieved = activitySpecDao.get(activitySpec); - } catch (SdcRuntimeException runtimeException) { - LOGGER.debug( - "Failed to retrieve activity spec for activitySpecId: " + activitySpec.getId() + " and version: " - + activitySpec.getVersion().getId(), runtimeException); + } catch (RuntimeException e) { + LOGGER.error("Failed to retrieve activity spec for activitySpecId: {} and version: {}", + activitySpec.getId(), activitySpec.getVersionId(), e); throw new EntityNotFoundException(ACTIVITY_SPEC_NOT_FOUND); } if (retrieved != null) { - final Version retrievedVersion = versioningManager.get(activitySpec.getId(), activitySpec.getVersion()); + final Version retrievedVersion = versioningManager.get(activitySpec.getId(), activitySpec.getVersionId()); retrieved.setStatus(Objects.nonNull(retrievedVersion) ? retrievedVersion.getStatus().name() : null); } return retrieved; @@ -125,74 +126,66 @@ public class ActivitySpecManagerImpl implements ActivitySpecManager { @Override public void update(ActivitySpecEntity activitySpec) { - Item retrievedItem = itemManager.get(activitySpec.getId()); - if (retrievedItem == null) { + Item item = itemManager.get(activitySpec.getId()); + if (item == null) { LOGGER.error("Activity Spec with id {} was not found", activitySpec.getId()); throw new EntityNotFoundException(ACTIVITY_SPEC_NOT_FOUND); } - uniqueValueService.updateUniqueValue(ACTIVITY_SPEC_NAME, retrievedItem.getName(), activitySpec.getName()); + uniqueValueService.updateUniqueValue(ACTIVITY_SPEC_NAME, item.getName(), activitySpec.getName()); - Item item = activitySpecMapper.activitySpecToItem(activitySpec); - item.setId(activitySpec.getId()); - item.setStatus(retrievedItem.getStatus()); - item.setVersionStatusCounters(retrievedItem.getVersionStatusCounters()); - itemManager.update(item); + activitySpecMapper.toItem(activitySpec, item); + itemManager.update(activitySpec.getId(), item); - activitySpec.setVersion(calculateLatestVersion(activitySpec)); + activitySpec.setVersionId(calculateLatestVersion(activitySpec)); activitySpecDao.update(activitySpec); } @Override public void actOnAction(ActivitySpecEntity activitySpec, ActivitySpecAction action) { - Version version = calculateLatestVersion(activitySpec); - if (action == ActivitySpecAction.CERTIFY) { - version.setStatus(Certified); - } - if (action == ActivitySpecAction.DEPRECATE) { - version.setStatus(Deprecated); - } - if (action == ActivitySpecAction.DELETE) { - version.setStatus(Deleted); - } - - updateVersionStatus(activitySpec.getId(), action, version); - if (action == ActivitySpecAction.DELETE) { - final String activitySpecName = get(new ActivitySpecEntity(activitySpec.getId(), version)).getName(); - uniqueValueService.deleteUniqueValue(ACTIVITY_SPEC_NAME, activitySpecName); - } - } + VersionStatus newStatus = getVersionStatusByAction(action); - private void updateVersionStatus(String activitySpecId, ActivitySpecAction action, Version version) { - VersionStatus prevVersionStatus = null; + String versionId = calculateLatestVersion(activitySpec); Version retrievedVersion; try { - retrievedVersion = versioningManager.get(activitySpecId, version); - } catch (SdcRuntimeException exception) { - LOGGER.debug( - "Failed to get version for activitySpecId: " + activitySpecId + " and version: " + version.getId(), - exception); + retrievedVersion = versioningManager.get(activitySpec.getId(), versionId); + } catch (RuntimeException e) { + LOGGER.error("failed to get activity {}, version {}", activitySpec.getId(), versionId, e); + throw new EntityNotFoundException(ACTIVITY_SPEC_NOT_FOUND); + } + if (retrievedVersion == null) { throw new EntityNotFoundException(ACTIVITY_SPEC_NOT_FOUND); + } + VersionStatus retrievedStatus = retrievedVersion.getStatus(); + VersionStatus expectedPrevStatus = EXPECTED_PREV_STATUS.get(newStatus); + if (expectedPrevStatus != null && retrievedStatus != expectedPrevStatus) { + LOGGER.debug("Failed to {} since activity spec is in status {}", action.name(), retrievedStatus); + throw new VersionStatusModificationException(activitySpec.getId(), versionId, retrievedStatus, + newStatus); } - VersionStatus status = version.getStatus(); - VersionStatus expectedPrevStatus = EXPECTED_PREV_STATUS.get(status); - if (expectedPrevStatus != null) { + versioningManager.updateStatus(activitySpec.getId(), retrievedVersion.getId(), newStatus, + "actionOnActivitySpec :" + action.name()); - VersionStatus retrievedStatus = Objects.nonNull(retrievedVersion) ? retrievedVersion.getStatus() : null; - if (retrievedStatus != expectedPrevStatus) { - LOGGER.debug("Failed to " + version.getStatus() + " since activity spec is in " + retrievedStatus); - throw new VersionStatusModificationException(activitySpecId, version.getId(), retrievedStatus, status); - } - prevVersionStatus = expectedPrevStatus; + if (action == ActivitySpecAction.DELETE) { + final String activitySpecName = get(new ActivitySpecEntity(activitySpec.getId(), versionId)).getName(); + uniqueValueService.deleteUniqueValue(ACTIVITY_SPEC_NAME, activitySpecName); } + } - if (Objects.nonNull(retrievedVersion)) { - retrievedVersion.setStatus(status); - versioningManager.updateVersion(activitySpecId, retrievedVersion); - itemManager.updateVersionStatus(activitySpecId, status, prevVersionStatus); - versioningManager.publish(activitySpecId, retrievedVersion, "actionOnActivitySpec :" + action.name()); + private VersionStatus getVersionStatusByAction(ActivitySpecAction action) { + switch (action) { + case DELETE: + return Deleted; + case DEPRECATE: + return Deprecated; + case CERTIFY: + return Certified; + default: + throw new UnsupportedOperationException( + String.format("Activity Spec action %s is not supported", action.name())); } + } @Override @@ -220,29 +213,19 @@ public class ActivitySpecManagerImpl implements ActivitySpecManager { .map(activitySpecMapper::itemToActivitySpec).collect(Collectors.toList()); } - private Version calculateLatestVersion(ActivitySpecEntity activitySpec) { - if (VERSION_ID_DEFAULT_VALUE.equalsIgnoreCase(activitySpec.getVersion().getId())) { - List<Version> list; + private String calculateLatestVersion(ActivitySpecEntity activitySpec) { + if (VERSION_ID_DEFAULT_VALUE.equalsIgnoreCase(activitySpec.getVersionId())) { + List<Version> versions; try { - list = versioningManager.list(activitySpec.getId()); - } catch (SdcRuntimeException runtimeException) { - LOGGER.debug("Failed to list versions for activitySpecId " + activitySpec.getId(), runtimeException); + versions = versioningManager.list(activitySpec.getId()); + } catch (RuntimeException e) { + LOGGER.error("Failed to list versions for activitySpecId {}", activitySpec.getId(), e); throw new EntityNotFoundException(ACTIVITY_SPEC_NOT_FOUND); } - if (Objects.nonNull(list) && !list.isEmpty()) { - return list.get(0); + if (Objects.nonNull(versions) && !versions.isEmpty()) { + return versions.get(0).getId(); } } - return activitySpec.getVersion(); - } - - private Version getActivitySpecVersion(ActivitySpecEntity activitySpecEntity) { - return activitySpecEntity.getVersion() == null ? new Version() : activitySpecEntity.getVersion(); - - } - - private void enrichActivitySpec(Item item, Version version, ActivitySpecEntity activitySpecEntity) { - activitySpecEntity.setId(item.getId()); - activitySpecEntity.setVersion(version); + return activitySpec.getVersionId(); } } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/CollaborationConfiguration.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/CollaborationConfiguration.java deleted file mode 100644 index c0612436..00000000 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/CollaborationConfiguration.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright © 2018 European Support Limited - * - * 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onap.sdc.workflow.services.impl; - -import org.openecomp.core.zusammen.api.ZusammenAdaptor; -import org.openecomp.core.zusammen.api.ZusammenAdaptorFactory; -import org.openecomp.sdc.versioning.ItemManager; -import org.openecomp.sdc.versioning.ItemManagerFactory; -import org.openecomp.sdc.versioning.VersioningManager; -import org.openecomp.sdc.versioning.VersioningManagerFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class CollaborationConfiguration { - - @Bean - public ItemManager itemManager() { - return ItemManagerFactory.getInstance().createInterface(); - } - - @Bean - public VersioningManager versioningManager() { - return VersioningManagerFactory.getInstance().createInterface(); - } - - @Bean - public ZusammenAdaptor zusammenAdaptor() { - return ZusammenAdaptorFactory.getInstance().createInterface(); - } -} diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java index 3d9cda51..fc135621 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java @@ -27,28 +27,27 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; +import org.onap.sdc.common.versioning.services.ItemManager; +import org.onap.sdc.common.versioning.services.types.Item; +import org.onap.sdc.common.versioning.services.types.ItemStatus; +import org.onap.sdc.common.versioning.services.types.VersionStatus; import org.onap.sdc.workflow.services.UniqueValueService; import org.onap.sdc.workflow.services.WorkflowManager; import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException; import org.onap.sdc.workflow.services.exceptions.WorkflowModificationException; -import org.onap.sdc.workflow.services.exceptions.WorkflowStatusModificationException; +import org.onap.sdc.workflow.services.impl.mappers.ArchivingStatusMapper; import org.onap.sdc.workflow.services.impl.mappers.VersionStateMapper; import org.onap.sdc.workflow.services.impl.mappers.WorkflowMapper; +import org.onap.sdc.workflow.services.types.ArchivingStatus; import org.onap.sdc.workflow.services.types.Page; import org.onap.sdc.workflow.services.types.PagingRequest; import org.onap.sdc.workflow.services.types.RequestSpec; import org.onap.sdc.workflow.services.types.Sort; import org.onap.sdc.workflow.services.types.SortingRequest; import org.onap.sdc.workflow.services.types.Workflow; -import org.onap.sdc.workflow.services.types.ArchivingStatus; import org.onap.sdc.workflow.services.types.WorkflowVersionState; -import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; -import org.openecomp.sdc.versioning.ItemManager; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; -import org.openecomp.sdc.versioning.types.Item; -import org.openecomp.sdc.versioning.types.ItemStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -69,15 +68,17 @@ public class WorkflowManagerImpl implements WorkflowManager { private final ItemManager itemManager; private final UniqueValueService uniqueValueService; private final WorkflowMapper workflowMapper; + private final ArchivingStatusMapper archivingStatusMapper; private final VersionStateMapper versionStateMapper; @Autowired public WorkflowManagerImpl(ItemManager itemManager, @Qualifier("uniqueValueService") UniqueValueService uniqueValueService, WorkflowMapper workflowMapper, - VersionStateMapper versionStateMapper) { + ArchivingStatusMapper archivingStatusMapper, VersionStateMapper versionStateMapper) { this.itemManager = itemManager; this.uniqueValueService = uniqueValueService; this.workflowMapper = workflowMapper; + this.archivingStatusMapper = archivingStatusMapper; this.versionStateMapper = versionStateMapper; } @@ -89,11 +90,10 @@ public class WorkflowManagerImpl implements WorkflowManager { Collection<Item> workflowItems = itemManager.list(createFilter(statusFilter, searchNameFilter, versionStatesFilter)); - List<Workflow> workflowsSlice = workflowItems.stream().map(workflowMapper::itemToWorkflow) - .sorted(getWorkflowComparator(requestSpec.getSorting())) - .skip(requestSpec.getPaging().getOffset()) - .limit(requestSpec.getPaging().getLimit()) - .collect(Collectors.toList()); + List<Workflow> workflowsSlice = workflowItems.stream().map(workflowMapper::fromItem) + .sorted(getWorkflowComparator(requestSpec.getSorting())) + .skip(requestSpec.getPaging().getOffset()) + .limit(requestSpec.getPaging().getLimit()).collect(Collectors.toList()); return new Page<>(workflowsSlice, requestSpec.getPaging(), workflowItems.size()); } @@ -104,56 +104,41 @@ public class WorkflowManagerImpl implements WorkflowManager { if (retrievedItem == null) { throw new EntityNotFoundException(String.format(WORKFLOW_NOT_FOUND_ERROR_MSG, workflow.getId())); } - return this.workflowMapper.itemToWorkflow(retrievedItem); + return this.workflowMapper.fromItem(retrievedItem); } @Override public Workflow create(Workflow workflow) { - Item item = workflowMapper.workflowToItem(workflow); - item.setStatus(ItemStatus.ACTIVE); + Item item = new Item(); + workflowMapper.toItem(workflow, item); uniqueValueService.validateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, workflow.getName()); Item createdItem = itemManager.create(item); uniqueValueService.createUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, workflow.getName()); - return workflowMapper.itemToWorkflow(createdItem); + return workflowMapper.fromItem(createdItem); } @Override public void update(Workflow workflow) { - Item retrievedItem = itemManager.get(workflow.getId()); - if (retrievedItem == null) { + Item item = itemManager.get(workflow.getId()); + if (item == null) { throw new EntityNotFoundException(String.format(WORKFLOW_NOT_FOUND_ERROR_MSG, workflow.getId())); } - if (ItemStatus.ARCHIVED.equals(retrievedItem.getStatus())) { + if (ItemStatus.ARCHIVED.equals(item.getStatus())) { throw new WorkflowModificationException(workflow.getId()); } - uniqueValueService.updateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, retrievedItem.getName(), workflow.getName()); + uniqueValueService.updateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, item.getName(), workflow.getName()); - Item item = workflowMapper.workflowToItem(workflow); - item.setId(workflow.getId()); - item.setStatus(retrievedItem.getStatus()); - item.setVersionStatusCounters(retrievedItem.getVersionStatusCounters()); - itemManager.update(item); + workflowMapper.toItem(workflow, item); + itemManager.update(workflow.getId(), item); } @Override public void updateStatus(String workflowId, ArchivingStatus status) { - Item item = itemManager.get(workflowId); - if (item == null) { - throw new EntityNotFoundException(String.format(WORKFLOW_NOT_FOUND_ERROR_MSG, workflowId)); - } - try { - if (ArchivingStatus.ARCHIVED.equals(status)) { - itemManager.archive(item); - } else if (ArchivingStatus.ACTIVE.equals(status)) { - itemManager.restore(item); - } - } catch (CoreException ex) { - throw new WorkflowStatusModificationException(ex); - } + itemManager.updateStatus(workflowId, archivingStatusMapper.toItemStatus(status)); } private static RequestSpec getRequestSpec(RequestSpec requestSpec) { @@ -184,8 +169,8 @@ public class WorkflowManagerImpl implements WorkflowManager { private static Comparator<Workflow> getWorkflowComparator(SortingRequest sorting) { Boolean byNameAscending = sorting.getSorts().stream() - .filter(sort -> WORKSPACES_SORT_PROPERTY.equalsIgnoreCase(sort.getProperty())) - .findFirst().map(Sort::isAscendingOrder).orElse(true); + .filter(sort -> WORKSPACES_SORT_PROPERTY.equalsIgnoreCase(sort.getProperty())) + .findFirst().map(Sort::isAscendingOrder).orElse(true); Comparator<Workflow> byName = Comparator.comparing(Workflow::getName); return byNameAscending ? byName : byName.reversed(); @@ -209,12 +194,12 @@ public class WorkflowManagerImpl implements WorkflowManager { private static Predicate<Item> addSearchNameFilter(Predicate<Item> filter, String searchNameFilter) { return filter.and(item -> searchNameFilter == null || item.getName().toLowerCase() - .contains(searchNameFilter.toLowerCase())); + .contains(searchNameFilter.toLowerCase())); } private static Predicate<Item> addVersionStatusFilter(Predicate<Item> filter, Set<VersionStatus> versionStatuses) { return filter.and(item -> versionStatuses == null || item.getVersionStatusCounters().keySet().stream() - .anyMatch(versionStatuses::contains)); + .anyMatch(versionStatuses::contains)); } private static Predicate<Item> addItemStatusFilter(Predicate<Item> filter, String itemStatusFilter) { diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java index 33210778..f95e6a1f 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowVersionManagerImpl.java @@ -29,7 +29,13 @@ import java.util.Optional; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; - +import org.onap.sdc.common.versioning.services.ItemManager; +import org.onap.sdc.common.versioning.services.VersioningManager; +import org.onap.sdc.common.versioning.services.types.Item; +import org.onap.sdc.common.versioning.services.types.ItemStatus; +import org.onap.sdc.common.versioning.services.types.Version; +import org.onap.sdc.common.versioning.services.types.VersionCreationMethod; +import org.onap.sdc.common.versioning.services.types.VersionStatus; import org.onap.sdc.workflow.persistence.ArtifactRepository; import org.onap.sdc.workflow.persistence.ParameterRepository; import org.onap.sdc.workflow.persistence.types.ArtifactEntity; @@ -49,13 +55,6 @@ import org.onap.sdc.workflow.services.types.WorkflowVersion; import org.onap.sdc.workflow.services.types.WorkflowVersionState; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; -import org.openecomp.sdc.versioning.ItemManager; -import org.openecomp.sdc.versioning.VersioningManager; -import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; -import org.openecomp.sdc.versioning.types.Item; -import org.openecomp.sdc.versioning.types.ItemStatus; -import org.openecomp.sdc.versioning.types.VersionCreationMethod; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -95,7 +94,7 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { return versioningManager.list(workflowId).stream() .filter(version -> versionStatusFilter == null || versionStatusFilter.contains( version.getStatus())) - .map(versionMapper::versionToWorkflowVersion) + .map(versionMapper::fromVersion) .sorted(Comparator.comparing(WorkflowVersion::getName).reversed()) .peek(workflowVersion -> loadAndAddParameters(workflowId, workflowVersion)) .collect(Collectors.toList()); @@ -103,7 +102,7 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { @Override public WorkflowVersion get(String workflowId, String versionId) { - WorkflowVersion workflowVersion = versionMapper.versionToWorkflowVersion(getVersion(workflowId, versionId)); + WorkflowVersion workflowVersion = versionMapper.fromVersion(getVersion(workflowId, versionId)); loadAndAddParameters(workflowId, workflowVersion); workflowVersion.setHasArtifact(artifactRepository.isExist(workflowId,versionId)); return workflowVersion; @@ -125,14 +124,13 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { Version version = new Version(); version.setDescription(workflowVersion.getDescription()); - version.setBaseId(baseVersionId); - Version createdVersion = versioningManager.create(workflowId, version, VersionCreationMethod.major); + Version createdVersion = versioningManager.create(workflowId, baseVersionId, version, VersionCreationMethod.major); - if (versions.isEmpty()) { // only for first version + if (versions.isEmpty()) { // only for first versionId artifactRepository.createStructure(workflowId, createdVersion.getId()); parameterRepository.createStructure(workflowId, createdVersion.getId()); updateParameters(workflowId, createdVersion.getId(), workflowVersion.getInputs(), workflowVersion.getOutputs()); - versioningManager.publish(workflowId, createdVersion, "Add initial data"); + versioningManager.publish(workflowId, createdVersion.getId(), "Add initial data"); } return get(workflowId, createdVersion.getId()); @@ -141,22 +139,20 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { @Override public void update(String workflowId, WorkflowVersion workflowVersion) { validateWorkflowStatus(workflowId); - Version retrievedVersion = getVersion(workflowId, workflowVersion.getId()); - if (CERTIFIED.equals(versionStateMapper.versionStatusToWorkflowVersionState(retrievedVersion.getStatus()))) { + Version version = getVersion(workflowId, workflowVersion.getId()); + if (CERTIFIED.equals(versionStateMapper.versionStatusToWorkflowVersionState(version.getStatus()))) { throw new VersionModificationException(workflowId, workflowVersion.getId()); } - Version version = versionMapper.workflowVersionToVersion(workflowVersion); - version.setName(retrievedVersion.getName()); - version.setStatus(retrievedVersion.getStatus()); + versionMapper.toVersion(workflowVersion, version); updateParameters(workflowId, version.getId(), workflowVersion.getInputs(), workflowVersion.getOutputs()); - versioningManager.updateVersion(workflowId, version); + versioningManager.update(workflowId, version.getId(), version); - Version updatedVersion = versioningManager.get(workflowId, version); - if(updatedVersion.getState().isDirty()) { - versioningManager.publish(workflowId, version, "Update version"); + Version updatedVersion = versioningManager.get(workflowId, version.getId()); + if (updatedVersion.getState().isDirty()) { + versioningManager.publish(workflowId, version.getId(), "Update version"); } } @@ -175,7 +171,7 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { newState); } try { - versioningManager.submit(workflowId, new Version(versionId), + versioningManager.updateStatus(workflowId, versionId, VersionStatus.Certified, String.format("Update version state to %s", newState.name())); } catch (Exception submitException) { throw new VersionStateModificationException(workflowId, versionId, currentState, newState, @@ -198,9 +194,9 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { ArtifactEntity artifactEntity = new ArtifactEntity(StringUtils.cleanPath(artifact.getOriginalFilename()), artifactData); artifactRepository.update(workflowId, versionId, artifactEntity); - Version updatedVersion = versioningManager.get(workflowId, new Version(versionId)); + Version updatedVersion = versioningManager.get(workflowId, versionId); if(updatedVersion.getState().isDirty()) { - versioningManager.publish(workflowId, updatedVersion, "Update artifact"); + versioningManager.publish(workflowId, updatedVersion.getId(), "Update artifact"); } } catch (IOException e) { @@ -234,7 +230,7 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { } if(retrievedVersion.isHasArtifact()) { artifactRepository.delete(workflowId, versionId); - versioningManager.publish(workflowId, new Version(versionId), "Delete Artifact"); + versioningManager.publish(workflowId, versionId, "Delete Artifact"); } } @@ -249,7 +245,7 @@ public class WorkflowVersionManagerImpl implements WorkflowVersionManager { private Version getVersion(String workflowId, String versionId) { try { - Version version = versioningManager.get(workflowId, new Version(versionId)); + Version version = versioningManager.get(workflowId, versionId); if (version == null) { throw new EntityNotFoundException(String.format(VERSION_NOT_EXIST_MSG, versionId, workflowId)); } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/ActivitySpecMapper.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/ActivitySpecMapper.java index d9e5a109..09e96c3e 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/ActivitySpecMapper.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/ActivitySpecMapper.java @@ -24,25 +24,26 @@ import java.util.Map; import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.Mappings; +import org.mapstruct.MappingTarget; +import org.onap.sdc.common.versioning.services.types.Item; +import org.onap.sdc.common.versioning.services.types.VersionStatus; import org.onap.sdc.workflow.persistence.types.ActivitySpecEntity; import org.onap.sdc.workflow.services.ActivitySpecConstant; import org.onap.sdc.workflow.services.impl.ItemType; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; -import org.openecomp.sdc.versioning.types.Item; @Mapper(componentModel = "spring", imports = {ItemType.class, ActivitySpecConstant.class}) public interface ActivitySpecMapper { - @Mappings({@Mapping(source = "versionStatusCounters", target = "status"), - @Mapping(source = "properties", target = "categoryList")}) + @Mapping(source = "versionStatusCounters", target = "status") + @Mapping(source = "properties", target = "categoryList") ActivitySpecEntity itemToActivitySpec(Item item); @InheritInverseConfiguration - @Mappings({@Mapping(expression = "java(ItemType.ACTIVITYSPEC.name())", target = "type"), - @Mapping(target = "versionStatusCounters", ignore = true), @Mapping(target = "status", ignore = true), - @Mapping(source = "categoryList", target = "properties")}) - Item activitySpecToItem(ActivitySpecEntity activitySpec); + @Mapping(expression = "java(ItemType.ACTIVITYSPEC.name())", target = "type") + @Mapping(target = "versionStatusCounters", ignore = true) + @Mapping(target = "status", ignore = true) + @Mapping(source = "categoryList", target = "properties") + void toItem(ActivitySpecEntity activitySpec, @MappingTarget Item retrievedItem); default String versionStatusCountersToStatus(Map<VersionStatus, Integer> versionStatusCounters) { return versionStatusCounters.keySet().stream().findFirst().map(Enum::name).orElse(null); diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/ArchivingStatusMapper.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/ArchivingStatusMapper.java new file mode 100644 index 00000000..702815f6 --- /dev/null +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/ArchivingStatusMapper.java @@ -0,0 +1,36 @@ +/* + * Copyright © 2018 European Support Limited + * + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.sdc.workflow.services.impl.mappers; + +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.ValueMapping; +import org.onap.sdc.common.versioning.services.types.ItemStatus; +import org.onap.sdc.workflow.services.types.ArchivingStatus; + +@Mapper(componentModel = "spring") +public interface ArchivingStatusMapper { + + @ValueMapping(source = "ACTIVE", target = "ACTIVE") + @ValueMapping(source = "ARCHIVED", target = "ARCHIVED") + @ValueMapping(source = "<ANY_REMAINING>", target = "ACTIVE") + ArchivingStatus fromItemStatus(ItemStatus status); + + @InheritInverseConfiguration + ItemStatus toItemStatus(ArchivingStatus status); + +} diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java index 6dffb369..145c79fe 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionMapper.java @@ -19,17 +19,27 @@ package org.onap.sdc.workflow.services.impl.mappers; import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.onap.sdc.common.versioning.services.convertors.VersionConvertor; +import org.onap.sdc.common.versioning.services.types.Version; +import org.onap.sdc.workflow.services.impl.ItemType; import org.onap.sdc.workflow.services.types.WorkflowVersion; -import org.openecomp.sdc.versioning.dao.types.Version; @Mapper(componentModel = "spring", uses = VersionStateMapper.class) -public interface VersionMapper { +public interface VersionMapper extends VersionConvertor<WorkflowVersion> { + @Override + default String getItemType(){ + return ItemType.WORKFLOW.name(); + } + @Override @Mapping(source = "status", target = "state") - WorkflowVersion versionToWorkflowVersion(Version version); + WorkflowVersion fromVersion(Version version); + @Override @InheritInverseConfiguration - Version workflowVersionToVersion(WorkflowVersion workflowVersion); + @Mapping(target = "status", ignore = true) + void toVersion(WorkflowVersion workflowVersion, @MappingTarget Version retrievedVersion); } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java index 82f5814b..05772f4f 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/VersionStateMapper.java @@ -22,16 +22,15 @@ import java.util.stream.Collectors; import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mapper; import org.mapstruct.ValueMapping; -import org.mapstruct.ValueMappings; +import org.onap.sdc.common.versioning.services.types.VersionStatus; import org.onap.sdc.workflow.services.types.WorkflowVersionState; -import org.openecomp.sdc.versioning.dao.types.VersionStatus; @Mapper(componentModel = "spring") public interface VersionStateMapper { - @ValueMappings({@ValueMapping(source = "Certified", target = "CERTIFIED"), - @ValueMapping(source = "Draft", target = "DRAFT"), - @ValueMapping(source = "<ANY_REMAINING>", target = "DRAFT")}) + @ValueMapping(source = "Certified", target = "CERTIFIED") + @ValueMapping(source = "Draft", target = "DRAFT") + @ValueMapping(source = "<ANY_REMAINING>", target = "DRAFT") WorkflowVersionState versionStatusToWorkflowVersionState(VersionStatus status); @InheritInverseConfiguration @@ -40,7 +39,7 @@ public interface VersionStateMapper { default Set<WorkflowVersionState> versionStatusCountersToWorkflowVersionStates( Map<VersionStatus, Integer> versionStatusCounters) { return versionStatusCounters.keySet().stream().map(this::versionStatusToWorkflowVersionState) - .collect(Collectors.toSet()); + .collect(Collectors.toSet()); } diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapper.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapper.java index b7426670..214d2ac6 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapper.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/mappers/WorkflowMapper.java @@ -19,21 +19,31 @@ package org.onap.sdc.workflow.services.impl.mappers; import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.Mappings; -import org.onap.sdc.workflow.services.types.Workflow; +import org.mapstruct.MappingTarget; +import org.onap.sdc.common.versioning.services.convertors.ItemConvertor; +import org.onap.sdc.common.versioning.services.types.Item; import org.onap.sdc.workflow.services.impl.ItemType; -import org.openecomp.sdc.versioning.types.Item; +import org.onap.sdc.workflow.services.types.Workflow; + +@Mapper(componentModel = "spring", imports = ItemType.class, + uses = {VersionStateMapper.class, ArchivingStatusMapper.class}) +public interface WorkflowMapper extends ItemConvertor<Workflow> { -@Mapper(componentModel = "spring", imports = ItemType.class, uses = VersionStateMapper.class) -public interface WorkflowMapper { + @Override + default String getItemType() { + return ItemType.WORKFLOW.name(); + } - @Mappings({@Mapping(source = "versionStatusCounters", target = "versionStates"), - @Mapping(source = "status", target = "archiving")}) - Workflow itemToWorkflow(Item item); + @Override + @Mapping(source = "versionStatusCounters", target = "versionStates") + @Mapping(source = "status", target = "archiving") + Workflow fromItem(Item item); + @Override @InheritInverseConfiguration - @Mappings({@Mapping(expression = "java(ItemType.WORKFLOW.name())", target = "type"), - @Mapping(target = "versionStatusCounters", ignore = true)}) - Item workflowToItem(Workflow workflow); + @Mapping(target = "status", ignore = true) + @Mapping(target = "versionStatusCounters", ignore = true) + @Mapping(expression = "java(ItemType.WORKFLOW.name())", target = "type") + void toItem(Workflow workflow, @MappingTarget Item item); } |