/*******************************************************************************
 * Copyright (c) 2016 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.core.resources;

import java.util.List;
import org.eclipse.core.runtime.CoreException;

/**
 * Implementations of this interface are capable of determining a set
 * of projects which a given project depends upon. Unless otherwise stated,
 * all arguments and return values are non-null.
 *
 * @since 3.12
 */
public interface IDynamicReferenceProvider {
	/**
	 * Returns the set of projects which the given project depends upon. If the return
	 * value of a previous call to this method ever changes, it will fire an event to
	 * the listeners. This method my be invoked from any thread and may be invoked
	 * in parallel by multiple threads.
	 *
	 * @param buildConfiguration the build configuration being queried.
	 * @return the set of projects which the given projects depends upon.
	 */
	public List<IProject> getDependentProjects(IBuildConfiguration buildConfiguration) throws CoreException;
}
