/** * @return * Inner list represents a set of build parameters used together for one invocation of a project, * and outer list represents multiple invocations of the same project. */ private List<List<AbstractBuildParameters>> getDynamicBuildParameters(AbstractBuild<?,?> build, BuildListener listener) throws DontTriggerException, IOException, InterruptedException { if (configFactories == null || configFactories.isEmpty()) { return ImmutableList.<List<AbstractBuildParameters>>of(ImmutableList.<AbstractBuildParameters>of()); } else { // this code is building the combinations of all AbstractBuildParameters reported from all factories List<List<AbstractBuildParameters>> dynamicBuildParameters = Lists.newArrayList(); dynamicBuildParameters.add(Collections.<AbstractBuildParameters>emptyList()); for (AbstractBuildParameterFactory configFactory : configFactories) { List<List<AbstractBuildParameters>> newDynParameters = Lists.newArrayList(); for (AbstractBuildParameters config : configFactory.getParameters(build, listener)) { for (List<AbstractBuildParameters> dynamicBuildParameter : dynamicBuildParameters) { newDynParameters.add( ImmutableList.<AbstractBuildParameters>builder() .addAll(dynamicBuildParameter) .add(config) .build()); } } dynamicBuildParameters = newDynParameters; } return dynamicBuildParameters; } }
for (AbstractBuildParameterFactory configFactory : configFactories) { List<List<AbstractBuildParameters>> newDynParameters = Lists.newArrayList(); List<AbstractBuildParameters> factoryParameters = configFactory.getParameters(build, listener);