package hudson.plugins.testng; import hudson.Extension; import hudson.maven.MavenModule; import hudson.maven.MavenModuleSet; import hudson.model.AbstractProject; import hudson.model.Action; import hudson.plugins.helpers.AbstractPublisherImpl; import hudson.plugins.helpers.Ghostwriter; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.BuildStepMonitor; import net.sf.json.JSONObject; import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.StaplerRequest; /** * This class defines a @Publisher and @Extension * */ public class Publisher extends AbstractPublisherImpl { private String reportFilenamePattern; @DataBoundConstructor public Publisher(String reportFilenamePattern) { reportFilenamePattern.getClass(); this.reportFilenamePattern = reportFilenamePattern; } public String getReportFilenamePattern() { return reportFilenamePattern; } /** * {@inheritDoc} */ @Override public boolean needsToRunAfterFinalized() { return false; } public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.BUILD; } @Extension public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl(); /** * {@inheritDoc} */ @Override public BuildStepDescriptor<hudson.tasks.Publisher> getDescriptor() { return DESCRIPTOR; } /** * {@inheritDoc} */ @Override public Action getProjectAction(AbstractProject<?, ?> project) { return new ProjectIndividualReport(project); } protected Ghostwriter newGhostwriter() { //return new GhostWriter(reportFilenamePattern, targets); return new GhostWriter(reportFilenamePattern); } public static final class DescriptorImpl extends BuildStepDescriptor<hudson.tasks.Publisher> { /** * Do not instantiate DescriptorImpl. */ private DescriptorImpl() { super(Publisher.class); } /** * {@inheritDoc} */ public String getDisplayName() { return "Publish " + PluginImpl.DISPLAY_NAME; } @Override public hudson.tasks.Publisher newInstance(StaplerRequest req, JSONObject formData) throws FormException { return req.bindJSON(Publisher.class, formData); } public boolean isApplicable(Class<? extends AbstractProject> aClass) { return !MavenModuleSet.class.isAssignableFrom(aClass) && !MavenModule.class.isAssignableFrom(aClass); } } }