/******************************************************************************* * Copyright (c) 2006, 2016 Mountainminds GmbH & Co. KG and Contributors * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marc R. Hoffmann - initial API and implementation * ******************************************************************************/ package com.mountainminds.eclemma.internal.core; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.jacoco.core.data.ExecutionDataWriter; import com.mountainminds.eclemma.core.EclEmmaStatus; import com.mountainminds.eclemma.core.IExecutionDataSource; import com.mountainminds.eclemma.core.URLExecutionDataSource; /** * Internal utility to create and cleanup execution data files manage files in * the plugin's state location. */ public final class ExecutionDataFiles { private static final String FOLDER = ".execdata/"; //$NON-NLS-1$ private final File folder; public ExecutionDataFiles(IPath stateLocation) { folder = stateLocation.append(FOLDER).toFile(); folder.mkdirs(); } /** * Delete any existing execution data file. */ public void deleteTemporaryFiles() { final File[] files = folder.listFiles(); for (final File file : files) { file.delete(); } } /** * Creates a new execution data file containing the content of the given * source. * * @param source * source to dump into the file * @return created file */ public IExecutionDataSource newFile(IExecutionDataSource source) throws CoreException { try { final File file = File.createTempFile("session", ".exec", folder); //$NON-NLS-1$ //$NON-NLS-2$ final OutputStream out = new BufferedOutputStream(new FileOutputStream( file)); final ExecutionDataWriter writer = new ExecutionDataWriter(out); source.accept(writer, writer); out.close(); return new URLExecutionDataSource(file.toURL()); } catch (IOException e) { throw new CoreException(EclEmmaStatus.EXEC_FILE_CREATE_ERROR.getStatus(e)); } } }