package hudson.plugins.promoted_builds.conditions;
import hudson.Extension;
import hudson.PluginManager;
import hudson.PluginWrapper;
import hudson.model.AbstractProject;
import hudson.plugins.promoted_builds.PromotionConditionDescriptor;
import jenkins.model.Jenkins;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Declared outside GroovyCondition as it depends on the optional 'script-security' dependency
*/
@Extension(optional = true)
public final class GroovyConditionDescriptor extends PromotionConditionDescriptor {
private static final Logger LOGGER = Logger.getLogger(GroovyConditionDescriptor.class.getName());
public GroovyConditionDescriptor() {
super(GroovyCondition.class);
}
@Override
public boolean isApplicable(final AbstractProject<?, ?> item) {
// TODO switch to Jenkins.getActiveInstance() once bumped to 1.590
final Jenkins jenkins = Jenkins.getInstance();
if (jenkins == null) {
// Jenkins not started or shut down
return false;
}
final PluginManager pluginManager = jenkins.getPluginManager();
if (pluginManager == null) {
LOGGER.log(Level.WARNING, "No PluginManager");
return false;
}
final PluginWrapper plugin = pluginManager.getPlugin("script-security");
return plugin != null && plugin.isActive();
}
@Override
public String getDisplayName() {
return Messages.GroovyCondition_DisplayName();
}
}