package hudson.plugins.coverage;
import hudson.Extension;
import java.util.Set;
import hudson.maven.MavenModule;
import hudson.maven.MavenModuleSet;
import hudson.model.AbstractProject;
import hudson.model.Descriptor;
import hudson.plugins.helpers.AbstractPublisherImpl;
import hudson.plugins.helpers.Ghostwriter;
import hudson.tasks.Publisher;
import org.kohsuke.stapler.DataBoundConstructor;
/**
* Generic code coverage {@link hudson.tasks.Publisher}.
*
* @author Stephen Connolly
* @since 1.0
*/
public class CoveragePublisher extends AbstractPublisherImpl {
private CoverageHealthTarget[] targets;
@DataBoundConstructor
public CoveragePublisher(CoverageHealthTarget... targets) {
this.targets = targets == null ? new CoverageHealthTarget[0] : targets;
}
public CoverageHealthTarget[] getTargets() {
return targets;
}
protected Ghostwriter newGhostwriter() {
throw new UnsupportedOperationException("Not implemented yet");
}
/**
* Descriptor for {@link CoveragePublisher}.
*/
@Extension
public static final class DescriptorImpl extends Descriptor<Publisher> {
/**
* Constructs a new DescriptorImpl.
*/
public DescriptorImpl() {
super(CoveragePublisher.class);
}
/**
* {@inheritDoc}
*/
public String getDisplayName() {
return "Record code coverage";
}
public boolean isApplicable(Class<? extends AbstractProject> aClass) {
return !MavenModuleSet.class.isAssignableFrom(aClass)
&& !MavenModule.class.isAssignableFrom(aClass);
}
public Set<CoverageHealthMetrics> getMetrics() {
return CoverageHealthMetrics.values();
}
}
}