blob: 55f6c029cb891b54b1d93bc63f06bbd343348e01 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Red Hat 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:
* Red Hat - Initial API and implementation
*******************************************************************************/
package org.eclipse.jst.common.internal.modulecore.util;
import org.eclipse.core.resources.IProject;
import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
/**
* This is internal. Please don't use it unless you're prepared
* for it to change drastically at any random time.
*
* This interface represents a utility to help discover the heirarchy
* of java-related components, and assist in manifest management.
*/
public interface IJavaComponentDiscerner {
/**
* Return a list of parent projects, projects which already *do* have
* a project reference to this child project
* @param child
* @return
*/
public IProject[] findParentProjects(IProject child);
/**
* All returned manifest entries should have a runtime path and archiveName
* which, when combined, will be suitable for export to a child's
* manifest file. If a reference is in a folder that does not
* require it to be present in the manifest.mf classpath, it
* should *NOT* be returned here.
*
* All references should have a getRuntimePath() + getArchiveName() that
* resolves to the value that should be in the manifest.mf classpath section.
*
* Any reference *already* in the manifest should *not* be returned here
*
* @param parentProject
* @param childProject
* @return
*/
public IVirtualReference[] findPossibleManifestEntries(IProject parentProject, IProject childProject);
/**
* All returned manifest entries should have a runtime path and archiveName
* which, when combined, will be suitable for export to a child's
* manifest file. If a reference is in a folder that does not
* require it to be present in the manifest.mf classpath, it
* should *NOT* be returned here.
*
* All references should have a getRuntimePath() + getArchiveName() that
* resolves to the value that should be in the manifest.mf classpath section.
*
* Any reference equivilant to the ones in currentEntries should not be returned
*
* @param parentProject
* @param childProject
* @return
*/
public IVirtualReference[] findPossibleManifestEntries(IProject parentProject, IProject childProject, IVirtualReference[] currentEntries);
/**
* All returned manifest entries should have a runtime path and archiveName
* which, when combined, will be suitable for export to a child's
* manifest file. If a reference is in a folder that does not
* require it to be present in the manifest.mf classpath, it
* should *NOT* be returned here.
*
* All references should have a getRuntimePath() + getArchiveName() that
* resolves to the value that should be in the manifest.mf classpath section.
*
* Any reference *not* in the manifest should *not* be returned here
*
* @param parentProject
* @param childProject
* @return
*/
public IVirtualReference[] findCurrentManifestEntries(IProject parentProject, IProject childProject);
}