package net.unit8.waitt.feature.coverage; import net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler; import net.sourceforge.cobertura.coveragedata.ProjectData; import net.sourceforge.cobertura.instrument.CoberturaInstrumenter; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.logging.Logger; /** * @author kawasima */ public class CoberturaInstrumenterWrapper extends CoberturaInstrumenter implements Instrumenter { private static final Logger logger = Logger.getLogger(CoberturaInstrumenterWrapper.class.getName()); private ProjectData projectData; public CoberturaInstrumenterWrapper() { File dataFile = CoverageDataFileHandler.getDefaultDataFile(); if (dataFile.exists()) { setProjectData(CoverageDataFileHandler.loadCoverageData(dataFile)); } if (getProjectData() == null) { setProjectData(new ProjectData()); } } @Override public byte[] instrumentClassByte(InputStream is) throws IOException { try { CoberturaInstrumenter.InstrumentationResult result = super.instrumentClass(is); if (result != null) { logger.fine("Instrumented:" + result.getClassName()); return result.getContent(); } else { return null; } } catch (IllegalArgumentException ex) { return null; } } @Override public void setProjectData(ProjectData projectData) { super.setProjectData(projectData); this.projectData = projectData; } @Override public ProjectData getProjectData() { return projectData; } }