Package hudson.plugins.selenium.configuration.global.matcher

Source Code of hudson.plugins.selenium.configuration.global.matcher.NodeLabelMatcher

package hudson.plugins.selenium.configuration.global.matcher;

import hudson.Extension;
import hudson.model.AutoCompletionCandidates;
import hudson.model.Hudson;
import hudson.model.Label;
import hudson.model.Node;
import hudson.model.labels.LabelAtom;
import hudson.util.FormValidation;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;

import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.export.Exported;

import antlr.ANTLRException;

@Extension
public class NodeLabelMatcher extends SeleniumConfigurationMatcher {

    /**
   *
   */
    private static final long serialVersionUID = -7254869163456438031L;

    private String labelExpr;

    public NodeLabelMatcher() {

    }

    @DataBoundConstructor
    public NodeLabelMatcher(String label) {
        this.labelExpr = label;
    }

    public boolean match(Node node) {
        if (node == null)
            return false;
        try {
            return Label.parseExpression(labelExpr).matches(node);
        } catch (ANTLRException e) {
        }
        return false;
    }

    @Exported
    public String getLabel() {
        return labelExpr;
    }

    @Extension
    public static class DescriptorImpl extends MatcherDescriptor {

        @Override
        public String getDisplayName() {
            return "Match nodes from a label expression";
        }

        public FormValidation doCheckLabel(@QueryParameter String value) throws IOException, ServletException {
            return FormValidation.validateRequired(value);
        }

        /**
         * Returns a list of auto completion candidates.
         *
         * @param value
         *            to search for
         * @return candidates
         */
        public AutoCompletionCandidates doAutoCompleteLabel() {
            AutoCompletionCandidates candidates = new AutoCompletionCandidates();
            List<Node> masterNodeList = Hudson.getInstance().getNodes();
            for (Node node : masterNodeList) {
                try {
                    for (LabelAtom atom : Label.parseExpression(node.getLabelString()).listAtoms()) {
                        candidates.add(atom.getName());
                    }
                } catch (ANTLRException e) {
                    // invalid expression, skipped
                }
            }
            return candidates;
        }

    }

    public String getSummary() {
        return getDescriptor().getDisplayName() + " (Expression = '" + labelExpr + "' )";
    }

}
TOP

Related Classes of hudson.plugins.selenium.configuration.global.matcher.NodeLabelMatcher

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.