package hudson.plugins.emailext; import edu.umd.cs.findbugs.annotations.NonNull; import hudson.Extension; import jenkins.model.Jenkins; import org.jenkinsci.lib.configprovider.AbstractConfigProviderImpl; import org.jenkinsci.lib.configprovider.ConfigProvider; import org.jenkinsci.lib.configprovider.model.Config; import org.jenkinsci.lib.configprovider.model.ContentType; import org.jenkinsci.plugins.scriptsecurity.scripts.ApprovalContext; import org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval; import org.jenkinsci.plugins.scriptsecurity.scripts.languages.GroovyLanguage; import org.kohsuke.stapler.DataBoundConstructor; import javax.annotation.Nonnull; public class GroovyTemplateConfig extends Config { @Override public ConfigProvider getDescriptor() { return Jenkins.getActiveInstance().getDescriptorByType(GroovyTemplateConfigProvider.class); } @DataBoundConstructor public GroovyTemplateConfig(String id, String name, String comment, String content) { super(id, name, comment, content); ScriptApproval.get().configuring(content, GroovyLanguage.get(), ApprovalContext.create().withCurrentUser()); } public Object readResolve() { ScriptApproval.get().configuring(content, GroovyLanguage.get(), ApprovalContext.create()); return this; } @Extension(optional=true) public static final class GroovyTemplateConfigProvider extends AbstractConfigProviderImpl { public GroovyTemplateConfigProvider() { load(); } @Override public ContentType getContentType() { return ContentType.DefinedType.GROOVY; } @Override public String getDisplayName() { return Messages.GroovyTemplateConfigProvider_DisplayName(); } @NonNull @Override public Config newConfig(@Nonnull String id) { return new GroovyTemplateConfig(id, "Groovy Email Template", "", ""); } @Override protected String getXmlFileName() { return "email-ext-groovy-config-files.xml"; } } }