/******************************************************************************* * Copyright (c) 2009, 2019 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 org.jacoco.core.internal.analysis; import java.util.Collection; import org.jacoco.core.analysis.CoverageNodeImpl; import org.jacoco.core.analysis.IClassCoverage; import org.jacoco.core.analysis.IPackageCoverage; import org.jacoco.core.analysis.ISourceFileCoverage; /** * Implementation of {@link IPackageCoverage}. */ public class PackageCoverageImpl extends CoverageNodeImpl implements IPackageCoverage { private final Collection classes; private final Collection sourceFiles; /** * Creates package node instance for a package with the given name. * * @param name * vm name of the package * @param classes * collection of all classes in this package * @param sourceFiles * collection of all source files in this package */ public PackageCoverageImpl(final String name, final Collection classes, final Collection sourceFiles) { super(ElementType.PACKAGE, name); this.classes = classes; this.sourceFiles = sourceFiles; increment(sourceFiles); for (final IClassCoverage c : classes) { // We need to add only classes without a source file reference. // Classes associated with a source file are already included in the // SourceFileCoverage objects. if (c.getSourceFileName() == null) { increment(c); } } } // === IPackageCoverage implementation === public Collection getClasses() { return classes; } public Collection getSourceFiles() { return sourceFiles; } }