/******************************************************************************* * (c) Copyright 2016 Hewlett-Packard Development Company, L.P. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Apache License v2.0 which accompany this distribution. * * The Apache License is available at * http://www.apache.org/licenses/LICENSE-2.0 * *******************************************************************************/ package io.cloudslang.lang.systemtests; import ch.lambdaj.group.Group; import com.google.common.collect.Lists; import io.cloudslang.lang.runtime.RuntimeConstants; import io.cloudslang.lang.runtime.env.ReturnValues; import io.cloudslang.lang.runtime.events.LanguageEventData; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import static ch.lambdaj.Lambda.by; import static ch.lambdaj.Lambda.group; import static ch.lambdaj.Lambda.on; /** * Date: 4/8/2015 * * @author Bonczidai Levente */ public class BranchAggregatorListener extends AbstractAggregatorListener { public Map<String, List<StepData>> aggregate() { Map<String, List<StepData>> branchesDataByPath = new HashMap<>(); Group<LanguageEventData> groups = group(getEvents(), by(on(LanguageEventData.class).getPath())); for (Group<LanguageEventData> subGroup : groups.subgroups()) { List<StepData> branchesData = buildBranchesData(subGroup.findAll()); branchesDataByPath.put(branchesData.get(0).getPath(), branchesData); } return branchesDataByPath; } private List<StepData> buildBranchesData(List<LanguageEventData> data) { List<StepData> branches = Lists.newArrayList(); for (LanguageEventData branchData : data) { String path = branchData.getPath(); String stepName = branchData.getStepName(); ReturnValues returnValues = (ReturnValues) branchData.get(RuntimeConstants.BRANCH_RETURN_VALUES_KEY); branches.add( new StepData( path, stepName, new HashMap<String, Serializable>(), LanguageEventData.maskSensitiveValues(returnValues.getOutputs()), null, returnValues.getResult() ) ); } return branches; } }