blob: e75330f06ec34d3d3a179c3df22edd006e43d60c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2010 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.api.tools.internal.provisional.builder;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder;
/**
* A context of types reported from the API analysis builder
*
* @since 1.0.1
*/
public interface IBuildContext {
/**
* Returns the collection of structurally changed types that have been
* reported by the {@link ApiAnalysisBuilder}. If no types have been
* reported as changed an empty array is returned, never <code>null</code>.
*
* @return the collection of API visible types that have been changed or an
* empty array
*/
public String[] getStructurallyChangedTypes();
/**
* Returns a collection of types that have had an API description change. If
* no types have had an API description change, an empty array is returned,
* never <code>null</code>.
*
* @return the collection of API visible types that have had a description
* change or an empty array
*/
public String[] getDescriptionChangedTypes();
/**
* Returns the collection of types that have been removed (where an
* {@link IResourceDelta#REMOVED} delta was found) If no types have been
* reported as removed an empty array is returned, never <code>null</code>.
*
* @return the collection of removed types or an empty array, never
* <code>null</code>
*/
public String[] getRemovedTypes();
/**
* Returns the complete collection of types dependent the description
* changed types reported from the
* {@link org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder}. If
* no types have been reported as dependent an empty array is returned,
* never <code>null</code>.
*
* @return the complete collection of types dependent on description changes
* or an empty array
*/
public String[] getDescriptionDependentTypes();
/**
* Cleans up the build context and frees any held memory
*/
public void dispose();
/**
* Returns if the build context has any structurally changed types.
*
* Has better performance impact than getting the collection of changed type
* names to ask for the size.
*
* @return true if there are changed type names recorded, false otherwise
*/
public boolean hasStructuralChanges();
/**
* Returns if the build context has any recorded API description changes.
*
* @return whether any types have API description changes
*/
public boolean hasDescriptionChanges();
/**
* Returns whether this build context has any type dependent on API
* description changes.
*
* @return <code>true</code> if there are type dependent on API description
* changes, otherwise <code>false</code>
*/
public boolean hasDescriptionDependents();
/**
* Returns if the build context has any recorded removed types.
*
* Has better performance impact than getting the collection of removed type
* names to ask for the size.
*
* @return true if there are removed type names recorded, false otherwise
*/
public boolean hasRemovedTypes();
/**
* Returns if this build context has any recorded types that require
* incremental building.
*
* @return true if there are types to build incrementally, false otherwise
*/
public boolean hasTypes();
/**
* Returns if this build context contains the given type name in its
* collection of types with API description changes.
*
* @param typename
* @return true if this context contains the given type name, false
* otherwise
*/
public boolean containsDescriptionChange(String typename);
/**
* Returns if this build context contains the given type name in its
* collection of types dependent on API description changes.
*
* @param typename
* @return true if this context contains the given type name, false
* otherwise
*/
public boolean containsDescriptionDependent(String typename);
/**
* Returns if this build context contains the given type name in its changed
* types collection.
*
* @param typename
* @return true if this context contains the given type name, false
* otherwise
*/
public boolean containsStructuralChange(String typename);
/**
* Returns if this build context contains the given type name in its removed
* types collection
*
* @param typename
* @return true if this context contains the given type, false otherwise
*/
public boolean containsRemovedType(String typename);
}