private static Logger logger = LoggerFactory.getLogger(FlowManipulatorListenerRunner.class);
- protected List<FlowManipulator> flowManipulators;
+ protected List<PreFlowManipulator> flowManipulators;
+
+ protected List<PostFlowManipulator> postflowManipulators;
@PostConstruct
protected void init() {
flowManipulators = new ArrayList<>(
- Optional.ofNullable(context.getBeansOfType(FlowManipulator.class)).orElse(new HashMap<>()).values());
+ Optional.ofNullable(context.getBeansOfType(PreFlowManipulator.class)).orElse(new HashMap<>()).values());
+
+ postflowManipulators = new ArrayList<>(Optional.ofNullable(context.getBeansOfType(PostFlowManipulator.class))
+ .orElse(new HashMap<>()).values());
}
do {
sequenceBeforeFlowManipulator = execution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
ExecuteBuildingBlock currentBB = flowsToExecute.get(execution.getCurrentSequence());
- List<FlowManipulator> filtered = filterListeners(flowManipulators,
+ List<PreFlowManipulator> filtered = filterListeners(flowManipulators,
+ (item -> item.shouldRunFor(currentBB.getBuildingBlock().getBpmnFlowName(),
+ execution.getCurrentSequence() == 0, execution)));
+
+ logger.info("Running pre flow manipulators:\n{}",
+ filtered.stream().map(item -> item.getClass().getName()).collect(Collectors.joining("\n")));
+ filtered.forEach(item -> item.run(flowsToExecute, currentBB, execution));
+ } while (isBuildingBlockSkipped(sequenceBeforeFlowManipulator, execution));
+ }
+
+ public void postModifyFlows(List<ExecuteBuildingBlock> flowsToExecute, BuildingBlockExecution execution) {
+ int sequenceBeforeFlowManipulator;
+ do {
+ sequenceBeforeFlowManipulator = execution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
+ ExecuteBuildingBlock currentBB = flowsToExecute.get(execution.getCurrentSequence() - 1);
+ List<PostFlowManipulator> filtered = filterListeners(postflowManipulators,
(item -> item.shouldRunFor(currentBB.getBuildingBlock().getBpmnFlowName(),
execution.getCurrentSequence() == 0, execution)));
- logger.info("Running flow manipulators:\n{}",
+ logger.info("Running post flow manipulators:\n{}",
filtered.stream().map(item -> item.getClass().getName()).collect(Collectors.joining("\n")));
filtered.forEach(item -> item.run(flowsToExecute, currentBB, execution));
} while (isBuildingBlockSkipped(sequenceBeforeFlowManipulator, execution));
--- /dev/null
+package org.onap.so.bpmn.common.listener.flowmanipulator;
+
+public interface PostFlowManipulator extends FlowManipulator {
+
+}
--- /dev/null
+package org.onap.so.bpmn.common.listener.flowmanipulator;
+
+public interface PreFlowManipulator extends FlowManipulator {
+
+}
if ("ActivateVfModuleBB".equalsIgnoreCase(bbFlowName) && aLaCarte && "Success".equalsIgnoreCase(handlingCode)) {
postProcessingExecuteBBActivateVfModule(execution, ebb, flowsToExecute);
}
+
+ flowManipulatorListenerRunner.postModifyFlows(flowsToExecute, new DelegateExecutionImpl(execution));
}
protected void postProcessingExecuteBBActivateVfModule(DelegateExecution execution, ExecuteBuildingBlock ebb,
import java.util.List;
import org.onap.so.bpmn.common.BuildingBlockExecution;
-import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulator;
+import org.onap.so.bpmn.common.listener.flowmanipulator.PreFlowManipulator;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.springframework.stereotype.Component;
@Component
-public class HomingListener implements FlowManipulator {
+public class HomingListener implements PreFlowManipulator {
@Override
import org.onap.so.bpmn.common.BBConstants;
import org.onap.so.bpmn.common.BuildingBlockExecution;
import org.onap.so.bpmn.common.listener.db.PostCompletionRequestsDbListener;
-import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulator;
+import org.onap.so.bpmn.common.listener.flowmanipulator.PreFlowManipulator;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
import org.onap.so.db.catalog.beans.VnfResourceCustomization;
import org.springframework.stereotype.Component;
@Component
-public class MultiStageSkipListener implements FlowManipulator, PostCompletionRequestsDbListener {
+public class MultiStageSkipListener implements PreFlowManipulator, PostCompletionRequestsDbListener {
@Autowired
protected BBInputSetupUtils bbInputSetupUtils;
import org.apache.logging.log4j.util.Strings;
import org.onap.so.bpmn.common.BBConstants;
import org.onap.so.bpmn.common.BuildingBlockExecution;
-import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulator;
+import org.onap.so.bpmn.common.listener.flowmanipulator.PreFlowManipulator;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.db.catalog.beans.PnfResourceCustomization;
import org.onap.so.db.catalog.beans.VfModuleCustomization;
import org.springframework.util.CollectionUtils;
@Component
-public class SkipCDSBuildingBlockListener implements FlowManipulator {
+public class SkipCDSBuildingBlockListener implements PreFlowManipulator {
@Autowired
private CatalogDbClient catalogDbClient;
import java.util.List;
import org.onap.so.bpmn.common.BBConstants;
import org.onap.so.bpmn.common.BuildingBlockExecution;
-import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulator;
+import org.onap.so.bpmn.common.listener.flowmanipulator.PreFlowManipulator;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.db.catalog.beans.VnfResourceCustomization;
import org.onap.so.db.catalog.client.CatalogDbClient;
import org.springframework.stereotype.Component;
@Component
-public class SkipConfigVnfListener implements FlowManipulator {
+public class SkipConfigVnfListener implements PreFlowManipulator {
private final CatalogDbClient catalogDbClient;