/** * Writes all contained {@link SessionInfo} objects into the given visitor. * The info objects are emitted in chronological order by dump timestamp. * * @param visitor * visitor to emit {@link SessionInfo} objects to */ public void accept(final ISessionInfoVisitor visitor) { for (final SessionInfo i : getInfos()) { visitor.visitSessionInfo(i); } }
/** * Merge all reports in reportOverall. * @param reportOverall destination file of merge. * @param reports files to be merged. */ public static void mergeReports(File reportOverall, File... reports) { ExecutionDataVisitor edv = new ExecutionDataVisitor(); loadSourceFiles(edv, reports); try (BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(reportOverall))) { Object visitor = new ExecutionDataWriter(outputStream); for (Map.Entry<String, ExecutionDataStore> entry : edv.getSessions().entrySet()) { SessionInfo sessionInfo = new SessionInfo(entry.getKey(), 0, 0); ((ISessionInfoVisitor) visitor).visitSessionInfo(sessionInfo); entry.getValue().accept((IExecutionDataVisitor) visitor); } } catch (IOException e) { throw new AnalysisException(String.format("Unable to write overall coverage report %s", reportOverall.getAbsolutePath()), e); } }
private void readSessionInfo() throws IOException { if (sessionInfoVisitor == null) { throw new IOException("No session info visitor."); } final String id = in.readUTF(); final long start = in.readLong(); final long dump = in.readLong(); sessionInfoVisitor.visitSessionInfo(new SessionInfo(id, start, dump)); }
/** * Collects the current execution data and writes it to the given * {@link IExecutionDataVisitor} object. * * @param executionDataVisitor * handler to write coverage data to * @param sessionInfoVisitor * handler to write session information to * @param reset * if <code>true</code> the current coverage information is also * cleared */ public final void collect(final IExecutionDataVisitor executionDataVisitor, final ISessionInfoVisitor sessionInfoVisitor, final boolean reset) { synchronized (store) { final SessionInfo info = new SessionInfo(sessionId, startTimeStamp, System.currentTimeMillis()); sessionInfoVisitor.visitSessionInfo(info); store.accept(executionDataVisitor); if (reset) { reset(); } } }