Package com.etsy.jenkins

Source Code of com.etsy.jenkins.ParametersActionPropagator

package com.etsy.jenkins;

import hudson.model.AbstractProject;
import hudson.model.FileParameterValue;
import hudson.model.JobProperty;
import hudson.model.ParameterDefinition;
import hudson.model.ParameterValue;
import hudson.model.ParametersAction;
import hudson.model.ParametersDefinitionProperty;

import com.google.common.collect.Lists;

import java.io.File;
import java.util.List;

public class ParametersActionPropagator {

  public ParametersAction[] getPropagatedActions(
      MasterBuild masterBuild,
      AbstractProject subProject) {
    List<ParametersAction> parametersActionList =
        masterBuild.getActions(ParametersAction.class);
    List<ParametersAction> propagatedParametersActionList =
        Lists.<ParametersAction>newArrayList();
    for (ParametersAction action : parametersActionList) {
      ParametersAction propagated =
          getPropagatedAction(masterBuild, subProject, action);
      propagatedParametersActionList.add(propagated);
    }

    return propagatedParametersActionList.toArray(
        new ParametersAction[propagatedParametersActionList.size()]);
  }

  public ParametersAction getPropagatedAction(
      MasterBuild masterBuild,
      AbstractProject subProject,
      ParametersAction action) {
    ParametersDefinitionProperty pdp = (ParametersDefinitionProperty)
        subProject.getProperty(ParametersDefinitionProperty.class);
    if (pdp == null) {
        return null; // This project does not have parameters
    }

    List<ParameterValue> values = Lists.<ParameterValue>newArrayList();
    for (ParameterValue value : action.getParameters()) {
      String name = value.getName();
      ParameterDefinition pd = pdp.getParameterDefinition(name);
      if (pd == null) {
        continue; // This project does not have this parameter
      }

      // File parameters are special
      if (value instanceof FileParameterValue) {
        final String location = pd.getName();
        File file = new File(
            masterBuild.getRootDir(),
            "fileParameters/" + location);
        String originalFileName =
            ((FileParameterValue) value).getOriginalFileName();
        value = new PropagatedFileParameterValue(
            location, file, originalFileName);
      }
      values.add(value);
    }

    return new ParametersAction(values);
  }
}
TOP

Related Classes of com.etsy.jenkins.ParametersActionPropagator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.