Package org.eclipse.jdt.core

# Class CompletionRequestor

java.lang.Object
org.eclipse.jdt.core.CompletionRequestor

Direct Known Subclasses:
  `CompletionProposalCollector`

public abstract class CompletionRequestor extends Object
Abstract base class for a completion requestor which is passed completion proposals as they are generated in response to a code assist request.

This class is intended to be subclassed by clients.

The code assist engine normally invokes methods on completion requestor in the following sequence:

     requestor.beginReporting();
     requestor.acceptContext(context);
     requestor.accept(proposal_1);
     requestor.accept(proposal_2);
     ...
     requestor.endReporting();

If, however, the engine is unable to offer completion proposals for whatever reason, `completionFailure` is called with a problem object describing why completions were unavailable. In this case, the sequence of calls is:

     requestor.beginReporting();
     requestor.acceptContext(context);
     requestor.completionFailure(problem);
     requestor.endReporting();

In either case, the bracketing `beginReporting` `endReporting` calls are always made as well as `acceptContext` call.

The class was introduced in 3.0 as a more evolvable replacement for the `ICompletionRequestor` interface.

Since:
  3.0
See Also:
  - `ICodeAssist`

## Constructor Summary

Constructors
Constructor
Description
`CompletionRequestor()`
Creates a new completion requestor.
`CompletionRequestor(boolean ignoreAll)`
Creates a new completion requestor.

## Method Summary

Modifier and Type
Method
Description
`abstract void`
`accept(CompletionProposal proposal)`
Proposes a completion.
`void`
`acceptContext(CompletionContext context)`
Propose the context in which the completion occurs.
`void`
`beginReporting()`
Pro forma notification sent before reporting a batch of completion proposals.
`void`
`completionFailure(IProblem problem)`
Notification of failure to produce any completions.
`void`
`endReporting()`
Pro forma notification sent after reporting a batch of completion proposals.
`String[]`
`getFavoriteReferences()`
Returns the favorite references which are used to compute some completion proposals.
`boolean`
`isAllowingRequiredProposals(int proposalKind, int requiredProposalKind)`
Returns whether a proposal of a given kind with a required proposal of the given kind is allowed.
`boolean`
`isExtendedContextRequired()`
Returns whether this requestor requires an extended context.
`boolean`
`isIgnored(char[] fullTypeName)`
Returns whether the given type proposal is ignored.
`boolean`
`isIgnored(int completionProposalKind)`
Returns whether the given kind of completion proposal is ignored.
`boolean`
`isTestCodeExcluded()`
If this returns true, exclude test sources and dependencies.
`void`
`setAllowsRequiredProposals(int proposalKind, int requiredProposalKind, boolean allow)`
Sets whether a proposal of a given kind with a required proposal of the given kind is allowed.
`void`
`setFavoriteReferences(String[] favoriteImports)`
Set the favorite references which will be used to compute some completion proposals.
`void`
`setIgnored(int completionProposalKind, boolean ignore)`
Sets whether the given kind of completion proposal is ignored.
`void`
`setRequireExtendedContext(boolean require)`
Sets whether this requestor requires an extended context.

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

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

## Constructor Details

### CompletionRequestor

public CompletionRequestor()
Creates a new completion requestor. The requestor is interested in all kinds of completion proposals; none will be ignored. Calls to this constructor are identical to calls to `CompletionRequestor(false)`

### CompletionRequestor

public CompletionRequestor(boolean ignoreAll)
Creates a new completion requestor. If `ignoreAll` is `true` the requestor is not interested in all kinds of completion proposals; all will be ignored. For each kind of completion proposals that is of interest, `setIgnored(kind, false)` must be called. If `ignoreAll` is `false` the requestor is interested in all kinds of completion proposals; none will be ignored.

Parameters:
  `ignoreAll` - `true` to ignore all kinds of completion proposals, and `false` to propose all kinds
Since:
  3.4

## Method Details

### isIgnored

public boolean isIgnored(int completionProposalKind)
Returns whether the given kind of completion proposal is ignored.

Parameters:
  `completionProposalKind` - one of the kind constants declared on `CompletionProposal`
Returns:
  `true` if the given kind of completion proposal is ignored by this requestor, and `false` if it is of interest
See Also:
  - `setIgnored(int, boolean)`
  - `CompletionProposal.getKind()`

### setIgnored

public void setIgnored(int completionProposalKind, boolean ignore)
Sets whether the given kind of completion proposal is ignored.

Parameters:
  `completionProposalKind` - one of the kind constants declared on `CompletionProposal`
  `ignore` - `true` if the given kind of completion proposal is ignored by this requestor, and `false` if it is of interest
See Also:
  - `isIgnored(int)`
  - `CompletionProposal.getKind()`

### isIgnored

public boolean isIgnored(char[] fullTypeName)
Returns whether the given type proposal is ignored.

Parameters:
  `fullTypeName` - the proposed type name of CompletionProposal
Returns:
  `true` if the given type name is ignored by this requestor, and `false` if it is of interest
Since:
  3.30

### isAllowingRequiredProposals

public boolean isAllowingRequiredProposals(int proposalKind, int requiredProposalKind)
Returns whether a proposal of a given kind with a required proposal of the given kind is allowed.

Parameters:
  `proposalKind` - one of the kind constants declared
  `requiredProposalKind` - one of the kind constants declared on `CompletionProposal`
Returns:
  `true` if a proposal of a given kind with a required proposal of the given kind is allowed by this requestor, and `false` if it isn't of interest.

  By default, all kinds of required proposals aren't allowed.

Since:
  3.3
See Also:
  - `setAllowsRequiredProposals(int, int, boolean)`
  - `CompletionProposal.getKind()`
  - `CompletionProposal.getRequiredProposals()`

### setAllowsRequiredProposals

public void setAllowsRequiredProposals(int proposalKind, int requiredProposalKind, boolean allow)
Sets whether a proposal of a given kind with a required proposal of the given kind is allowed. A required proposal of a given kind is proposed even if `isIgnored(int)` return `true` for that kind. Currently only a subset of kinds support required proposals. To see what combinations are supported you must look at `CompletionProposal.getRequiredProposals()` documentation.

Parameters:
  `proposalKind` - one of the kind constants declared
  `requiredProposalKind` - one of the kind constants declared on `CompletionProposal`
  `allow` - `true` if a proposal of a given kind with a required proposal of the given kind is allowed by this requestor, and `false` if it isn't of interest
Since:
  3.3
See Also:
  - `isAllowingRequiredProposals(int, int)`
  - `CompletionProposal.getKind()`
  - `CompletionProposal.getRequiredProposals()`

### getFavoriteReferences

public String[] getFavoriteReferences()
Returns the favorite references which are used to compute some completion proposals.

A favorite reference is a qualified reference as it can be seen in an import statement.
e.g. `{"java.util.Arrays"}`
It can be an on demand reference.
e.g. `{"java.util.Arrays.*"}` It can be a reference to a static method or field (as in a static import)
e.g. `{"java.util.Arrays.equals"}`

Currently only on demand type references (`"java.util.Arrays.*"`), references to a static method or a static field are used to compute completion proposals. Other kind of reference could be used in the future.

Returns:
  favorite imports
Since:
  3.3

### setFavoriteReferences

public void setFavoriteReferences(String[] favoriteImports)
Set the favorite references which will be used to compute some completion proposals. A favorite reference is a qualified reference as it can be seen in an import statement.

Parameters:
  `favoriteImports` -
Since:
  3.3
See Also:
  - `getFavoriteReferences()`

### beginReporting

public void beginReporting()
Pro forma notification sent before reporting a batch of completion proposals.

The default implementation of this method does nothing. Clients may override.

### endReporting

public void endReporting()
Pro forma notification sent after reporting a batch of completion proposals.

The default implementation of this method does nothing. Clients may override.

### completionFailure

public void completionFailure(IProblem problem)
Notification of failure to produce any completions. The problem object explains what prevented completing.

The default implementation of this method does nothing. Clients may override to receive this kind of notice.

Parameters:
  `problem` - the problem object

### accept

public abstract void accept(CompletionProposal proposal)
Proposes a completion. Has no effect if the kind of proposal is being ignored by this requestor. Callers should consider checking `isIgnored(int)` before avoid creating proposal objects that would only be ignored.

Similarly, implementers should check `isIgnored(proposal.getKind())` and ignore proposals that have been declared as uninteresting. The proposal object passed is only valid for the duration of completion operation.

Parameters:
  `proposal` - the completion proposal
Throws:
  `IllegalArgumentException` - if the proposal is null

### acceptContext

public void acceptContext(CompletionContext context)
Propose the context in which the completion occurs.

This method is called one and only one time before any call to `accept(CompletionProposal)`. The default implementation of this method does nothing. Clients may override.

Parameters:
  `context` - the completion context
Since:
  3.1

### isExtendedContextRequired

public boolean isExtendedContextRequired()
Returns whether this requestor requires an extended context. By default this method return `false`.

Returns:
  `true` if this requestor requires an extended context.
Since:
  3.4
See Also:
  - `CompletionContext.isExtended()`

### setRequireExtendedContext

public void setRequireExtendedContext(boolean require)
Sets whether this requestor requires an extended context.

Parameters:
  `require` - `true` if this requestor requires an extended context.
Since:
  3.4
See Also:
  - `CompletionContext.isExtended()`

### isTestCodeExcluded

public boolean isTestCodeExcluded()
If this returns true, exclude test sources and dependencies.

Returns:
  `true` if this requestor does not want to get any completions from test code.
Since:
  3.14
See Also:
  - `IClasspathAttribute.TEST`