// Path: src/main/java/hudson/plugins/promoted_builds/PromotionCondition.java
// public abstract class PromotionCondition implements ExtensionPoint, Describable<PromotionCondition> {
//     /**
//      * Checks if the promotion criteria is met.
//      *
//      * @param build
//      *      The build for which the promotion is considered.
//      * @return
//      *      non-null if the promotion condition is met. This object is then recorded so that
//      *      we know how a build was promoted.
//      *      Null if otherwise, meaning it shouldn't be promoted.
//      * @deprecated
//      */
//     @CheckForNull
//     public PromotionBadge isMet(AbstractBuild<?,?> build) {
//         return null;
//     }
// 
//     /**
//      * Checks if the promotion criteria is met.
//      *
//      * @param promotionProcess
//      *      The promotion process being evaluated for qualification
//      * @param build
//      *      The build for which the promotion is considered.
//      * @return
//      *      non-null if the promotion condition is met. This object is then recorded so that
//      *      we know how a build was promoted.
//      *      Null if otherwise, meaning it shouldn't be promoted.
//      */
//     public PromotionBadge isMet(PromotionProcess promotionProcess, AbstractBuild<?,?> build) {
//         // just call the deprecated version to support legacy conditions
//         return isMet(build);
//     }
// 
//     public PromotionConditionDescriptor getDescriptor() {
//         return (PromotionConditionDescriptor)Jenkins.get().getDescriptor(getClass());
//     }
// 
//     /**
//      * Returns all the registered {@link PromotionConditionDescriptor}s.
//      */
//     public static DescriptorExtensionList<PromotionCondition,PromotionConditionDescriptor> all() {
//         return Jenkins.get().<PromotionCondition,PromotionConditionDescriptor>getDescriptorList(PromotionCondition.class);
//     }
// 
//     /**
//      * Returns a subset of {@link PromotionConditionDescriptor}s that applys to the given project.
//      */
//     public static List<PromotionConditionDescriptor> getApplicableTriggers(AbstractProject<?,?> p) {
//         List<PromotionConditionDescriptor> r = new ArrayList<PromotionConditionDescriptor>();
//         for (PromotionConditionDescriptor t : all()) {
//             if(t.isApplicable(p))
//                 r.add(t);
//         }
//         return r;
//     }
// }


import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import groovy.util.Node;
import hudson.plugins.promoted_builds.PromotionCondition;
package hudson.plugins.promoted_builds.integrations.jobdsl;




/**
 * Special holder for the PromotionProcess generated by the Job DSL Plugin
 * 
 * @author Dennis Schulte
 */
@XStreamAlias("hudson.plugins.promoted_builds.PromotionProcess")
public final class JobDslPromotionProcess {

    private String name;
    /**
     * The icon that represents this promotion process. This is the name of
     * the GIF icon that can be found in ${rootURL}/plugin/promoted-builds/icons/16x16/
     * and ${rootURL}/plugin/promoted-builds/icons/32x32/, e.g. <code>"star-gold"</code>.
     */
    private String icon;

    /**
     * The label that promotion process can be run on.
     */
    private String assignedLabel;

    /**
     * {@link PromotionCondition}s. All have to be met for a build to be promoted.
     */
// Path: src/main/java/hudson/plugins/promoted_builds/PromotionCondition.java
// public abstract class PromotionCondition implements ExtensionPoint, Describable<PromotionCondition> {
//     /**
//      * Checks if the promotion criteria is met.
//      *
//      * @param build
//      *      The build for which the promotion is considered.
//      * @return
//      *      non-null if the promotion condition is met. This object is then recorded so that
//      *      we know how a build was promoted.
//      *      Null if otherwise, meaning it shouldn't be promoted.
//      * @deprecated
//      */
//     @CheckForNull
//     public PromotionBadge isMet(AbstractBuild<?,?> build) {
//         return null;
//     }
// 
//     /**
//      * Checks if the promotion criteria is met.
//      *
//      * @param promotionProcess
//      *      The promotion process being evaluated for qualification
//      * @param build
//      *      The build for which the promotion is considered.
//      * @return
//      *      non-null if the promotion condition is met. This object is then recorded so that
//      *      we know how a build was promoted.
//      *      Null if otherwise, meaning it shouldn't be promoted.
//      */
//     public PromotionBadge isMet(PromotionProcess promotionProcess, AbstractBuild<?,?> build) {
//         // just call the deprecated version to support legacy conditions
//         return isMet(build);
//     }
// 
//     public PromotionConditionDescriptor getDescriptor() {
//         return (PromotionConditionDescriptor)Jenkins.get().getDescriptor(getClass());
//     }
// 
//     /**
//      * Returns all the registered {@link PromotionConditionDescriptor}s.
//      */
//     public static DescriptorExtensionList<PromotionCondition,PromotionConditionDescriptor> all() {
//         return Jenkins.get().<PromotionCondition,PromotionConditionDescriptor>getDescriptorList(PromotionCondition.class);
//     }
// 
//     /**
//      * Returns a subset of {@link PromotionConditionDescriptor}s that applys to the given project.
//      */
//     public static List<PromotionConditionDescriptor> getApplicableTriggers(AbstractProject<?,?> p) {
//         List<PromotionConditionDescriptor> r = new ArrayList<PromotionConditionDescriptor>();
//         for (PromotionConditionDescriptor t : all()) {
//             if(t.isApplicable(p))
//                 r.add(t);
//         }
//         return r;
//     }
// }


// Path: src/main/java/hudson/plugins/promoted_builds/integrations/jobdsl/JobDslPromotionProcess.java
import java.util.ArrayList;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import groovy.util.Node;
import hudson.plugins.promoted_builds.PromotionCondition;

package hudson.plugins.promoted_builds.integrations.jobdsl;




/**
 * Special holder for the PromotionProcess generated by the Job DSL Plugin
 * 
 * @author Dennis Schulte
 */
@XStreamAlias("hudson.plugins.promoted_builds.PromotionProcess")
public final class JobDslPromotionProcess {

    private String name;
    /**
     * The icon that represents this promotion process. This is the name of
     * the GIF icon that can be found in ${rootURL}/plugin/promoted-builds/icons/16x16/
     * and ${rootURL}/plugin/promoted-builds/icons/32x32/, e.g. <code>"star-gold"</code>.
     */
    private String icon;

    /**
     * The label that promotion process can be run on.
     */
    private String assignedLabel;

    /**
     * {@link PromotionCondition}s. All have to be met for a build to be promoted.
     */
    private List<PromotionCondition> conditions = new ArrayList<PromotionCondition>();