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.JellyLanguage;
import org.kohsuke.stapler.DataBoundConstructor;
import javax.annotation.Nonnull;
public class JellyTemplateConfig extends Config {
@Override
public ConfigProvider getDescriptor() {
return Jenkins.getActiveInstance().getDescriptorByType(JellyTemplateConfigProvider.class);
}
@DataBoundConstructor
public JellyTemplateConfig(String id, String name, String comment, String content) {
super(id, name, comment, content);
ScriptApproval.get().configuring(content, JellyLanguage.get(), ApprovalContext.create().withCurrentUser());
}
public Object readResolve() {
ScriptApproval.get().configuring(content, JellyLanguage.get(), ApprovalContext.create());
return this;
}
@Extension(optional=true)
public static final class JellyTemplateConfigProvider extends AbstractConfigProviderImpl {
public JellyTemplateConfigProvider() {
load();
}
@Override
public ContentType getContentType() {
return ContentType.DefinedType.XML;
}
@Override
public String getDisplayName() {
return Messages.JellyTemplateConfigProvider_DisplayName();
}
@NonNull
@Override
public Config newConfig(@Nonnull String id) {
return new JellyTemplateConfig(id, "Jelly Email Template", "", "");
}
@Override
protected String getXmlFileName() {
return "email-ext-jelly-config-files.xml";
}
}
}