Package org.eclipse.jdt.core.dom

# Class ASTRequestor

java.lang.Object
org.eclipse.jdt.core.dom.ASTRequestor

public abstract class ASTRequestor extends Object
An AST requestor handles ASTs for compilation units passed to `ASTParser.createASTs`.

`ASTRequestor.acceptAST` is called for each of the compilation units passed to `ASTParser.createASTs`. After all the compilation units have been processed, `ASTRequestor.acceptBindings` is called for each of the binding keys passed to `ASTParser.createASTs`.

This class is intended to be subclassed by clients. AST requestors are serially reusable, but neither reentrant nor thread-safe.

Since:
  3.1
See Also:
  - `ASTParser.createASTs(ICompilationUnit[], String[], ASTRequestor, org.eclipse.core.runtime.IProgressMonitor)`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`ASTRequestor()`
Creates a new instance.

## Method Summary

Modifier and Type
Method
Description
`void`
`acceptAST(ICompilationUnit source, CompilationUnit ast)`
Accepts an AST corresponding to the compilation unit.
`void`
`acceptBinding(String bindingKey, IBinding binding)`
Accepts a binding corresponding to the binding key.
`final IBinding[]`
`createBindings(String[] bindingKeys)`
Resolves bindings for the given binding keys.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### ASTRequestor

protected ASTRequestor()
Creates a new instance.

## Method Details

### acceptAST

public void acceptAST(ICompilationUnit source, CompilationUnit ast)
Accepts an AST corresponding to the compilation unit. That is, `ast` is an AST for `source`.

The default implementation of this method does nothing. Clients should override to process the resulting AST.

Parameters:
  `source` - the compilation unit the ast is coming from
  `ast` - the requested abtract syntax tree

### acceptBinding

public void acceptBinding(String bindingKey, IBinding binding)
Accepts a binding corresponding to the binding key. That is, `binding` is the binding for `bindingKey`; `binding` is `null` if the key cannot be resolved.

The default implementation of this method does nothing. Clients should override to process the resulting binding.

Parameters:
  `bindingKey` - the key of the requested binding
  `binding` - the requested binding, or `null` if none

### createBindings

public final IBinding[] createBindings(String[] bindingKeys)
Resolves bindings for the given binding keys. The given binding keys must have been obtained earlier using `IBinding.getKey()`.

If a binding key cannot be resolved, `null` is put in the resulting array. Bindings can only be resolved in the dynamic scope of a `ASTParser.createASTs`, and only if `ASTParser.resolveBindings(true)` was specified.

Caveat: During an `acceptAST` callback, there are implementation limitations concerning the look up of binding keys representing local elements. In some cases, the binding is unavailable, and `null` will be returned. This is only an issue during an `acceptAST` callback, and only when the binding key represents a local element (e.g., local variable, local class, method declared in anonymous class). There is no such limitation outside of `acceptAST` callbacks, or for top-level types and their members even within `acceptAST` callbacks.

Parameters:
  `bindingKeys` - the binding keys to look up
Returns:
  a list of bindings paralleling the `bindingKeys` parameter, with `null` entries for keys that could not be resolved