From f4398a841ce8c4c185ab75abdf5e5a1c2d8ff784 Mon Sep 17 00:00:00 2001 From: talig Date: Mon, 23 Oct 2017 09:23:14 +0300 Subject: Fix onboarding undo checkout impl Fix reset in zusammen collaboration plugin, Throw explicit exception in case of zusammen db illegal state. Change-Id: Ic9463517b72c7a89a2de78b86da5679ac57371a6 Issue-ID: SDC-490 Signed-off-by: talig --- .../collaboration/ElementCollaborationStore.java | 42 ++++++++++++++-------- 1 file changed, 28 insertions(+), 14 deletions(-) (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/ElementCollaborationStore.java') diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/ElementCollaborationStore.java b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/ElementCollaborationStore.java index 76b0a900c1..ac103c0fbf 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/ElementCollaborationStore.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/ElementCollaborationStore.java @@ -11,17 +11,20 @@ import org.openecomp.core.zusammen.plugin.dao.ElementRepository; import org.openecomp.core.zusammen.plugin.dao.ElementRepositoryFactory; import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity; +import java.util.ArrayList; import java.util.Collection; -import java.util.HashSet; -import java.util.Objects; import java.util.Optional; -import java.util.stream.Collectors; +import static org.openecomp.core.zusammen.plugin.ZusammenPluginUtil.getCollaborationElement; import static org.openecomp.core.zusammen.plugin.ZusammenPluginUtil.getSpaceName; public class ElementCollaborationStore { + private static final String SUB_ELEMENT_NOT_EXIST_ERROR_MSG = + "List sub elements error: item %s, version %s - " + + "element %s, which appears as sub element of element %s, does not exist"; + public Collection listElements(SessionContext context, ElementContext elementContext, Id elementId) { @@ -33,14 +36,26 @@ public class ElementCollaborationStore { } ElementRepository elementRepository = getElementRepository(context); - return elementRepository.get(context, elementEntityContext, new ElementEntity(elementId)) - .map(ElementEntity::getSubElementIds).orElse(new HashSet<>()).stream() - .map(subElementId -> elementRepository - .get(context, elementEntityContext, new ElementEntity(subElementId)).get()) - .filter(Objects::nonNull) - .map(subElement -> ZusammenPluginUtil - .getCollaborationElement(elementEntityContext, subElement)) - .collect(Collectors.toList()); + String elementIdValue = elementId.getValue(); + String versionIdValue = elementContext.getChangeRef() == null + ? elementContext.getVersionId().getValue() + : elementContext.getChangeRef(); + Collection subElements = new ArrayList<>(); + + Optional element = + elementRepository.get(context, elementEntityContext, new ElementEntity(elementId)); + if (element.isPresent() && element.get().getSubElementIds() != null) { + for (Id subElementId : element.get().getSubElementIds()) { + ElementEntity subElement = + elementRepository.get(context, elementEntityContext, new ElementEntity(subElementId)) + .orElseThrow( + () -> new IllegalStateException(String.format(SUB_ELEMENT_NOT_EXIST_ERROR_MSG, + elementContext.getItemId().getValue(), versionIdValue, + subElementId.getValue(), elementIdValue))); + subElements.add(getCollaborationElement(elementEntityContext, subElement)); + } + } + return subElements; } public CollaborationElement getElement(SessionContext context, ElementContext elementContext, @@ -49,8 +64,7 @@ public class ElementCollaborationStore { new ElementEntityContext(ZusammenPluginUtil.getPrivateSpaceName(context), elementContext); return getElementRepository(context) .get(context, elementEntityContext, new ElementEntity(elementId)) - .map(elementEntity -> ZusammenPluginUtil - .getCollaborationElement(elementEntityContext, elementEntity)) + .map(elementEntity -> getCollaborationElement(elementEntityContext, elementEntity)) .orElse(null); } @@ -78,7 +92,7 @@ public class ElementCollaborationStore { ZusammenPluginUtil.getElementEntity(element)); } - public boolean checkHealth(SessionContext sessionContext){ + public boolean checkHealth(SessionContext sessionContext) { return getElementRepository(sessionContext).checkHealth(sessionContext); } -- cgit 1.2.3-korg