/********************************************************************** * Copyright (c) 2005-2009 ant4eclipse project team. * * 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: * Nils Hartmann, Daniel Kasmeroglu, Gerd Wuetherich **********************************************************************/ package org.ant4eclipse.lib.platform.tools; import org.ant4eclipse.lib.platform.model.resource.EclipseProject; import java.util.List; /** * <p> * Resolves all projects that are directly referenced by the specified project. * </p> */ public interface ReferencedProjectsResolverService { /** * <p> * Returns a list of all currently supported reference types. F.e. {"platform","jdt"}. * </p> * * @return A list of all currently supported reference types. Not <code>null</code>. */ String[] getReferenceTypes(); /** * <p> * Returns a list of resolved projects that are directly referenced by a given project. Only the resolvers for the * specified reference types will be used. * </p> * * @param project * The project which referenced projects will be looked up. Not <code>null</code>. * @param referenceTypes * e.g. {"platform", "jdt"}. If this list doesn't contain at least one entry, the returnvalue will be empty. * @param additionalElements * These elements are generally provided by subelements of a task. Each implementor of this interface is * responsible to verify that he's capable to handle these additional elements. Elements that cannot be * handled have to be ignored (meaning that no message is necessary in these cases). * * @return A list of all directly referenced projects. Not <code>null</code>. */ List<EclipseProject> resolveReferencedProjects(EclipseProject project, String[] referenceTypes, List<Object> additionalElements); /** * <p> * Returns a list of resolved projects that are directly referenced by a given project. This resolving process is * aware of all reference types. * </p> * * @param project * The project which referenced projects will be looked up. Not <code>null</code>. * @param additionalElements * These elements are generally provided by subelements of a task. Each implementor of this interface is * responsible to verify that he's capable to handle these additional elements. Elements that cannot be * handled have to be ignored (meaning that no message is necessary in these cases). * * @return A list of all directly referenced projects. Not <code>null</code>. */ List<EclipseProject> resolveReferencedProjects(EclipseProject project, List<Object> additionalElements); }