Search in sources :

Example 1 with RejectedAccessException

use of org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException in project promoted-builds-plugin by jenkinsci.

the class GroovyCondition method isMet.

@Override
public PromotionBadge isMet(final PromotionProcess promotionProcess, final AbstractBuild<?, ?> build) {
    // TODO switch to Jenkins.getActiveInstance() once bumped to 1.590
    final Jenkins jenkins = Jenkins.getInstance();
    if (jenkins == null) {
        // Jenkins not started or shut down
        LOGGER.log(Level.WARNING, "Missing Jenkins instance");
        return null;
    }
    final PluginManager pluginManager = jenkins.getPluginManager();
    if (pluginManager == null) {
        LOGGER.log(Level.WARNING, "Unable to retrieve PluginManager");
        return null;
    }
    final ClassLoader classLoader = pluginManager.uberClassLoader;
    final Binding binding = new Binding();
    binding.setVariable("promotionProcess", promotionProcess);
    binding.setVariable("build", build);
    binding.setVariable("jenkins", jenkins);
    Object result = null;
    try {
        result = script.evaluate(classLoader, binding);
    } catch (final RejectedAccessException e) {
        LOGGER.log(Level.WARNING, "Sandbox exception", e);
        return null;
    } catch (final UnapprovedUsageException e) {
        LOGGER.log(Level.WARNING, "Unapproved script", e);
        return null;
    } catch (final UnapprovedClasspathException e) {
        LOGGER.log(Level.WARNING, "Unapproved classpath", e);
        return null;
    } catch (final Exception e) {
        LOGGER.log(Level.WARNING, "Evaluation error", e);
        return null;
    }
    final String displayLabel = metQualificationLabel == null ? Messages.GroovyCondition_MetQualificationLabel() : metQualificationLabel;
    if (Boolean.TRUE.equals(result)) {
        return new Badge(displayLabel, Collections.<String, String>emptyMap());
    } else if (result instanceof Map && !((Map) result).isEmpty()) {
        final Map<String, String> variables = new HashMap<String, String>(((Map) result).size());
        for (final Map.Entry entry : ((Map<Object, Object>) result).entrySet()) {
            final Object key = entry.getKey();
            final Object value = entry.getValue();
            if (key == null) {
                continue;
            }
            variables.put(key.toString(), value == null ? "" : value.toString());
        }
        return new Badge(displayLabel, variables);
    }
    return null;
}
Also used : Binding(groovy.lang.Binding) RejectedAccessException(org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException) UnapprovedUsageException(org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException) UnapprovedClasspathException(org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedClasspathException) PromotionBadge(hudson.plugins.promoted_builds.PromotionBadge) UnapprovedClasspathException(org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedClasspathException) UnapprovedUsageException(org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException) RejectedAccessException(org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException) Jenkins(jenkins.model.Jenkins) PluginManager(hudson.PluginManager) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

Binding (groovy.lang.Binding)1 PluginManager (hudson.PluginManager)1 PromotionBadge (hudson.plugins.promoted_builds.PromotionBadge)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Jenkins (jenkins.model.Jenkins)1 RejectedAccessException (org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException)1 UnapprovedClasspathException (org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedClasspathException)1 UnapprovedUsageException (org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException)1