JavaScript Development Tools
Release 3.2

org.eclipse.wst.jsdt.core
Interface ITypeHierarchy


public interface ITypeHierarchy

A type hierarchy provides navigations between a type and its resolved supertypes and subtypes for a specific type or for all types within a region. Supertypes may extend outside of the type hierarchy's region in which it was created such that the root of the hierarchy is always included.

A type hierarchy is static and can become stale. Although consistent when created, it does not automatically track changes in the model. As changes in the model potentially invalidate the hierarchy, change notifications are sent to registered ITypeHierarchyChangedListeners. Listeners should use the exists method to determine if the hierarchy has become completely invalid (for example, when the type or project the hierarchy was created on has been removed). To refresh a hierarchy, use the refresh method.

The type hierarchy may contain cycles due to malformed supertype declarations. Most type hierarchy queries are oblivious to cycles; the getAll* methods are implemented such that they are unaffected by cycles.

This interface is not intended to be implemented by clients.

Provisional API: This class/interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.


Method Summary
 void addTypeHierarchyChangedListener(ITypeHierarchyChangedListener listener)
          Adds the given listener for changes to this type hierarchy.
 boolean contains(IType type)
          Returns whether the given type is part of this hierarchy.
 boolean exists()
          Returns whether the type and project this hierarchy was created on exist.
 IType[] getAllClasses()
          Returns all classes in this type hierarchy's graph, in no particular order.
 IType[] getAllSubtypes(IType type)
          Returns all resolved subtypes (direct and indirect) of the given type, in no particular order, limited to the types in this type hierarchy's graph.
 IType[] getAllSuperclasses(IType type)
          Returns all resolved superclasses of the given class, in bottom-up order.
 int getCachedFlags(IType type)
          Return the flags associated with the given type (would be equivalent to IMember.getFlags()), or -1 if this information wasn't cached on the hierarchy during its computation.
 IType[] getRootClasses()
          Returns all classes in the graph which have no resolved superclass, in no particular order.
 IType[] getSubclasses(IType type)
          Returns the direct resolved subclasses of the given class, in no particular order, limited to the classes in this type hierarchy's graph.
 IType getSuperclass(IType type)
          Returns the resolved superclass of the given class, or null if the given class has no superclass or the superclass could not be resolved.
 IType getType()
          Returns the type this hierarchy was computed for.
 void refresh(IProgressMonitor monitor)
          Re-computes the type hierarchy reporting progress.
 void removeTypeHierarchyChangedListener(ITypeHierarchyChangedListener listener)
          Removes the given listener from this type hierarchy.
 void store(OutputStream outputStream, IProgressMonitor monitor)
          Stores the type hierarchy in an output stream.
 

Method Detail

addTypeHierarchyChangedListener

void addTypeHierarchyChangedListener(ITypeHierarchyChangedListener listener)
Adds the given listener for changes to this type hierarchy. Listeners are notified when this type hierarchy changes and needs to be refreshed. Has no effect if an identical listener is already registered.

Parameters:
listener - the listener

contains

boolean contains(IType type)
Returns whether the given type is part of this hierarchy.

Parameters:
type - the given type
Returns:
true if the given type is part of this hierarchy, false otherwise

exists

boolean exists()
Returns whether the type and project this hierarchy was created on exist.

Returns:
true if the type and project this hierarchy was created on exist, false otherwise

getAllClasses

IType[] getAllClasses()
Returns all classes in this type hierarchy's graph, in no particular order. Any classes in the creation region which were not resolved to have any subtypes or supertypes are not included in the result.

Returns:
all classes in this type hierarchy's graph

getAllSubtypes

IType[] getAllSubtypes(IType type)
Returns all resolved subtypes (direct and indirect) of the given type, in no particular order, limited to the types in this type hierarchy's graph. An empty array is returned if there are no resolved subtypes for the given type.

Parameters:
type - the given type
Returns:
all resolved subtypes (direct and indirect) of the given type

getAllSuperclasses

IType[] getAllSuperclasses(IType type)
Returns all resolved superclasses of the given class, in bottom-up order. An empty array is returned if there are no resolved superclasses for the given class.

NOTE: once a type hierarchy has been created, it is more efficient to query the hierarchy for superclasses than to query a class recursively up the superclass chain. Querying an element performs a dynamic resolution, whereas the hierarchy returns a pre-computed result.

Parameters:
type - the given type
Returns:
all resolved superclasses of the given class, in bottom-up order, an empty array if none.

getCachedFlags

int getCachedFlags(IType type)
Return the flags associated with the given type (would be equivalent to IMember.getFlags()), or -1 if this information wasn't cached on the hierarchy during its computation.

Parameters:
type - the given type
Returns:
the modifier flags for this member
See Also:
Flags

getRootClasses

IType[] getRootClasses()
Returns all classes in the graph which have no resolved superclass, in no particular order.

Returns:
all classes in the graph which have no resolved superclass

getSubclasses

IType[] getSubclasses(IType type)
Returns the direct resolved subclasses of the given class, in no particular order, limited to the classes in this type hierarchy's graph. Returns an empty collection if no classes were resolved to be subclasses of the given class.

Parameters:
type - the given type
Returns:
the direct resolved subclasses of the given class limited to the classes in this type hierarchy's graph, an empty collection if none.

getSuperclass

IType getSuperclass(IType type)
Returns the resolved superclass of the given class, or null if the given class has no superclass or the superclass could not be resolved.

Parameters:
type - the given type
Returns:
the resolved superclass of the given class, or null if the given class has no superclass or the superclass could not be resolved.

getType

IType getType()
Returns the type this hierarchy was computed for. Returns null if this hierarchy was computed for a region.

Returns:
the type this hierarchy was computed for

refresh

void refresh(IProgressMonitor monitor)
             throws JavaScriptModelException
Re-computes the type hierarchy reporting progress.

Parameters:
monitor - the given progress monitor
Throws:
JavaScriptModelException - if unable to refresh the hierarchy

removeTypeHierarchyChangedListener

void removeTypeHierarchyChangedListener(ITypeHierarchyChangedListener listener)
Removes the given listener from this type hierarchy. Has no affect if an identical listener is not registered.

Parameters:
listener - the listener

store

void store(OutputStream outputStream,
           IProgressMonitor monitor)
           throws JavaScriptModelException
Stores the type hierarchy in an output stream. This stored hierarchy can be load by IType#loadTypeHierachy(IJavaScriptProject, InputStream, IProgressMonitor). Listeners of this hierarchy are not stored. Only hierarchies created by the following methods can be store:

Parameters:
outputStream - output stream where the hierarchy will be stored
monitor - the given progress monitor
Throws:
JavaScriptModelException - if unable to store the hierarchy in the ouput stream
Since:
2.1
See Also:
IType.loadTypeHierachy(java.io.InputStream, IProgressMonitor)

JavaScript Development Tools
Release 3.2

Copyright (c) IBM Corp. and others 2000, 2010. All Rights Reserved.