org.eclipse.jdt.internal.codeassist
Class CompletionEngine

java.lang.Object
  extended by org.eclipse.jdt.internal.codeassist.impl.Engine
      extended by org.eclipse.jdt.internal.codeassist.CompletionEngine
All Implemented Interfaces:
ISearchRequestor, RelevanceConstants, ITypeRequestor, TypeConstants, TerminalTokens, SuffixConstants

public final class CompletionEngine
extends Engine
implements ISearchRequestor, TypeConstants, TerminalTokens, RelevanceConstants, SuffixConstants

This class is the entry point for source completions. It contains two public APIs used to call CodeAssist on a given source with a given environment, assisting position and storage (and possibly options).


Nested Class Summary
 class CompletionEngine.CompletionProblemFactory
           
 
Field Summary
static boolean DEBUG
           
static boolean NO_TYPE_COMPLETION_ON_EMPTY_TOKEN
           
static boolean PERF
           
 HashtableOfObject typeCache
           
 
Fields inherited from class org.eclipse.jdt.internal.codeassist.impl.Engine
compilerOptions, currentPackageName, discouragedReferenceIsError, forbiddenReferenceIsError, importCacheCount, importCachesInitialized, importsCache, lookupEnvironment, nameEnvironment, onDemandImportCacheCount, onDemandImportsCache, options
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, BOOLEAN, BYTE, CHAR, CharArray_JAVA_IO_OBJECTINPUTSTREAM, CharArray_JAVA_IO_OBJECTOUTPUTSTREAM, CharArray_JAVA_IO_OBJECTSTREAMFIELD, CharArray_JAVA_LANG_ANNOTATION_ANNOTATION, CharArray_JAVA_LANG_ENUM, CharArray_JAVA_LANG_OBJECT, CLINIT, CLONE, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, DOUBLE, FLOAT, GETCLASS, INIT, IO, JAVA, JAVA_IO, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_SERIALIZABLE, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_BOOLEAN, JAVA_LANG_BYTE, JAVA_LANG_CHARACTER, JAVA_LANG_CLASS, JAVA_LANG_CLASSNOTFOUNDEXCEPTION, JAVA_LANG_CLONEABLE, JAVA_LANG_DEPRECATED, JAVA_LANG_DOUBLE, JAVA_LANG_ENUM, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_SUPPRESSWARNINGS, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, JAVA_UTIL_ITERATOR, JML_ANNOTATION, JML_ANNOTATION_CODE_BIGINT_MATH, JML_ANNOTATION_CODE_JAVA_MATH, JML_ANNOTATION_CODE_SAFE_MATH, JML_ANNOTATION_GHOST, JML_ANNOTATION_HELPER, JML_ANNOTATION_INSTANCE, JML_ANNOTATION_MODEL, JML_ANNOTATION_NON_NULL, JML_ANNOTATION_NON_NULL_BY_DEFAULT, JML_ANNOTATION_NULLABLE, JML_ANNOTATION_NULLABLE_BY_DEFAULT, JML_ANNOTATION_PEER, JML_ANNOTATION_PKG, JML_ANNOTATION_PURE, JML_ANNOTATION_READONLY, JML_ANNOTATION_REP, JML_ANNOTATION_SPEC_BIGINT_MATH, JML_ANNOTATION_SPEC_JAVA_MATH, JML_ANNOTATION_SPEC_PROTECTED, JML_ANNOTATION_SPEC_PUBLIC, JML_ANNOTATION_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_CODE_BIGINT_MATH, JML_ANNOTATION_TYPE_CODE_JAVA_MATH, JML_ANNOTATION_TYPE_CODE_SAFE_MATH, JML_ANNOTATION_TYPE_GHOST, JML_ANNOTATION_TYPE_HELPER, JML_ANNOTATION_TYPE_INSTANCE, JML_ANNOTATION_TYPE_MODEL, JML_ANNOTATION_TYPE_NON_NULL_BY_DEFAULT, JML_ANNOTATION_TYPE_NONNULL, JML_ANNOTATION_TYPE_NULLABLE, JML_ANNOTATION_TYPE_NULLABLE_BY_DEFAULT, JML_ANNOTATION_TYPE_PEER, JML_ANNOTATION_TYPE_PURE, JML_ANNOTATION_TYPE_READONLY, JML_ANNOTATION_TYPE_REP, JML_ANNOTATION_TYPE_SPEC_BIGINT_MATH, JML_ANNOTATION_TYPE_SPEC_JAVA_MATH, JML_ANNOTATION_TYPE_SPEC_PROTECTED, JML_ANNOTATION_TYPE_SPEC_PUBLIC, JML_ANNOTATION_TYPE_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_UNINITIALIZED, JML_ANNOTATION_UNINITIALIZED, JML_ORG, JML_RUNTIME, JML_RUNTIME_ANNOTATION, JML4, JMLSPECS, LANG, LENGTH, LONG, MAIN, MISMATCH, NULL, OBJECT, OK, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_SWITCH_ENUM_TABLE, TYPE, UNCHECKED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALUEOF, VALUES, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.parser.TerminalTokens
TokenNameabstract, TokenNamealso, TokenNameAND, TokenNameAND_AND, TokenNameAND_EQUAL, TokenNameassert, TokenNameAssignableOrSynonym, TokenNameAssignableRedundantlyOrSynonym, TokenNameassume, TokenNameassume_redundantly, TokenNameAT, TokenNameaxiom, TokenNameBehaviorOrSynonym, TokenNameboolean, TokenNamebreak, TokenNamebyte, TokenNamecase, TokenNamecatch, TokenNamechar, TokenNameCharacterLiteral, TokenNameclass, TokenNamecode_bigint_math, TokenNamecode_java_math, TokenNamecode_safe_math, TokenNameCOLON, TokenNameCOMMA, TokenNameCOMMENT_BLOCK, TokenNameCOMMENT_JAVADOC, TokenNameCOMMENT_LINE, TokenNameconst, TokenNameconstraint, TokenNameconstraint_redundantly, TokenNamecontinue, TokenNamedecreases, TokenNamedecreases_redundantly, TokenNamedefault, TokenNamediverges, TokenNamediverges_redundantly, TokenNameDIVIDE, TokenNameDIVIDE_EQUAL, TokenNamedo, TokenNameDOT, TokenNameDOTDOT, TokenNamedouble, TokenNameDoubleLiteral, TokenNameELLIPSIS, TokenNameelse, TokenNameEnsuresOrSynonym, TokenNameEnsuresRedundantlyOrSynonym, TokenNameenum, TokenNameEOF, TokenNameEQUAL, TokenNameEQUAL_EQUAL, TokenNameEQUIV, TokenNameERROR, TokenNameextends, TokenNamefalse, TokenNamefinal, TokenNamefinally, TokenNamefloat, TokenNameFloatingPointLiteral, TokenNamefor, TokenNameforall, TokenNameghost, TokenNamegoto, TokenNameGREATER, TokenNameGREATER_EQUAL, TokenNamehelper, TokenNameIdentifier, TokenNameif, TokenNameimplements, TokenNameIMPLIES, TokenNameimplies_that, TokenNameimport, TokenNamein, TokenNamein_redundantly, TokenNameInformalDescription, TokenNameinitially, TokenNameinstance, TokenNameinstanceof, TokenNameint, TokenNameIntegerLiteral, TokenNameinterface, TokenNameinvariant, TokenNameinvariant_redundantly, TokenNamejml_assert, TokenNamejml_assert_redundantly, TokenNameLBRACE, TokenNameLBRACE_OR, TokenNameLBRACKET, TokenNameLEFT_SHIFT, TokenNameLEFT_SHIFT_EQUAL, TokenNameLESS, TokenNameLESS_EQUAL, TokenNamelong, TokenNameLongLiteral, TokenNameloop_invariant, TokenNameloop_invariant_redundantly, TokenNameLPAREN, TokenNamemaps, TokenNamemaps_redundantly, TokenNameMINUS, TokenNameMINUS_EQUAL, TokenNameMINUS_MINUS, TokenNamemodel, TokenNamemono_non_null, TokenNameMULTIPLY, TokenNameMULTIPLY_EQUAL, TokenNamenative, TokenNamenew, TokenNamenon_null, TokenNamenon_null_by_default, TokenNameNOT, TokenNameNOT_EQUAL, TokenNameNOT_EQUIV, TokenNamenowarn, TokenNamenull, TokenNamenullable, TokenNamenullable_by_default, TokenNameold, TokenNameOR, TokenNameOR_EQUAL, TokenNameOR_OR, TokenNameOR_RBRACE, TokenNamepackage, TokenNamepeer, TokenNamePLUS, TokenNamePLUS_EQUAL, TokenNamePLUS_PLUS, TokenNameprivate, TokenNameprotected, TokenNamepublic, TokenNamepure, TokenNameQUESTION, TokenNameRBRACE, TokenNameRBRACKET, TokenNamereadonly, TokenNameREMAINDER, TokenNameREMAINDER_EQUAL, TokenNamerep, TokenNamerepresents, TokenNameREPRESENTS, TokenNamerepresents_redundantly, TokenNameRequiresOrSynonym, TokenNameRequiresRedundantlyOrSynonym, TokenNamereturn, TokenNameREV_IMPLIES, TokenNameRIGHT_SHIFT, TokenNameRIGHT_SHIFT_EQUAL, TokenNameRPAREN, TokenNameSEMICOLON, TokenNameset, TokenNameshort, TokenNamesignals_only, TokenNamesignals_only_redundantly, TokenNameSignalsOrSynonym, TokenNameSignalsRedundantlyOrSynonym, TokenNameslash_elemtype, TokenNameslash_everything, TokenNameslash_exists, TokenNameslash_forall, TokenNameslash_fresh, TokenNameslash_into, TokenNameslash_max, TokenNameslash_min, TokenNameslash_nonnullelements, TokenNameslash_not_assigned, TokenNameslash_not_modified, TokenNameslash_not_specified, TokenNameslash_nothing, TokenNameslash_num_of, TokenNameslash_old, TokenNameslash_peer, TokenNameslash_pre, TokenNameslash_product, TokenNameslash_readonly, TokenNameslash_rep, TokenNameslash_result, TokenNameslash_same, TokenNameslash_sum, TokenNameslash_type, TokenNameslash_typeof, TokenNamespec_bigint_math, TokenNamespec_java_math, TokenNamespec_protected, TokenNamespec_public, TokenNamespec_safe_math, TokenNamestatic, TokenNamestrictfp, TokenNameStringLiteral, TokenNameSUBTYPE, TokenNamesuper, TokenNameswitch, TokenNamesynchronized, TokenNamethis, TokenNamethrow, TokenNamethrows, TokenNametransient, TokenNametrue, TokenNametry, TokenNameTWIDDLE, TokenNameuninitialized, TokenNameUNSIGNED_RIGHT_SHIFT, TokenNameUNSIGNED_RIGHT_SHIFT_EQUAL, TokenNamevoid, TokenNamevolatile, TokenNamewhile, TokenNameWHITESPACE, TokenNameXOR, TokenNameXOR_EQUAL
 
Fields inherited from interface org.eclipse.jdt.internal.codeassist.RelevanceConstants
R_ABSTRACT_METHOD, R_ANNOTATION, R_CAMEL_CASE, R_CASE, R_CLASS, R_DEFAULT, R_ENUM, R_ENUM_CONSTANT, R_EXACT_EXPECTED_TYPE, R_EXACT_NAME, R_EXCEPTION, R_EXPECTED_TYPE, R_INLINE_TAG, R_INTERESTING, R_INTERFACE, R_METHOD_OVERIDE, R_NAME_FIRST_PREFIX, R_NAME_FIRST_SUFFIX, R_NAME_LESS_NEW_CHARACTERS, R_NAME_PREFIX, R_NAME_SUFFIX, R_NO_PROBLEMS, R_NON_INHERITED, R_NON_RESTRICTED, R_NON_STATIC, R_QUALIFIED, R_RESOLVED, R_TARGET, R_TRUE_OR_FALSE, R_UNQUALIFIED, R_VALUE_TAG
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.util.SuffixConstants
EXTENSION_class, EXTENSION_CLASS, EXTENSION_java, EXTENSION_JAVA, SUFFIX_class, SUFFIX_CLASS, SUFFIX_java, SUFFIX_JAVA, SUFFIX_STRING_class, SUFFIX_STRING_CLASS, SUFFIX_STRING_java, SUFFIX_STRING_JAVA
 
Constructor Summary
CompletionEngine(SearchableEnvironment nameEnvironment, CompletionRequestor requestor, java.util.Map settings, IJavaProject javaProject, WorkingCopyOwner owner)
          The CompletionEngine is responsible for computing source completions.
 
Method Summary
 void acceptPackage(char[] packageName)
          One result of the search consists of a new package.
 void acceptType(char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, int modifiers, AccessRestriction accessRestriction)
          One result of the search consists of a new type.
 void acceptUnresolvedName(char[] name)
           
 void complete(ICompilationUnit sourceUnit, int completionPosition, int pos, ITypeRoot root)
          Ask the engine to compute a completion at the specified position of the given compilation unit.
 void complete(IType type, char[] snippet, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic)
           
static char[] createMethodSignature(char[][] parameterPackageNames, char[][] parameterTypeNames, char[] returnTypeSignature)
           
static char[] createMethodSignature(char[][] parameterPackageNames, char[][] parameterTypeNames, char[] returnPackagename, char[] returnTypeName)
           
static char[] createNonGenericTypeSignature(char[] qualifiedPackageName, char[] qualifiedTypeName)
           
static char[] createTypeSignature(char[] qualifiedPackageName, char[] qualifiedTypeName)
           
 AssistParser getParser()
           
 
Methods inherited from class org.eclipse.jdt.internal.codeassist.impl.Engine
accept, accept, accept, getSignature, getSignature, getTypeSignature, initializeImportCaches
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

typeCache

public HashtableOfObject typeCache

DEBUG

public static boolean DEBUG

PERF

public static boolean PERF

NO_TYPE_COMPLETION_ON_EMPTY_TOKEN

public static final boolean NO_TYPE_COMPLETION_ON_EMPTY_TOKEN
See Also:
Constant Field Values
Constructor Detail

CompletionEngine

public CompletionEngine(SearchableEnvironment nameEnvironment,
                        CompletionRequestor requestor,
                        java.util.Map settings,
                        IJavaProject javaProject,
                        WorkingCopyOwner owner)
The CompletionEngine is responsible for computing source completions. It requires a searchable name environment, which supports some specific search APIs, and a requestor to feed back the results to a UI.

Parameters:
nameEnvironment - org.eclipse.jdt.internal.codeassist.ISearchableNameEnvironment used to resolve type/package references and search for types/packages based on partial names.
requestor - org.eclipse.jdt.internal.codeassist.ICompletionRequestor since the engine might produce answers of various forms, the engine is associated with a requestor able to accept all possible completions.
settings - java.util.Map set of options used to configure the code assist engine.
Method Detail

acceptType

public void acceptType(char[] packageName,
                       char[] simpleTypeName,
                       char[][] enclosingTypeNames,
                       int modifiers,
                       AccessRestriction accessRestriction)
One result of the search consists of a new type. NOTE - All package and type names are presented in their readable form: Package names are in the form "a.b.c". Nested type names are in the qualified form "A.I". The default package is represented by an empty array.

Specified by:
acceptType in interface ISearchRequestor

acceptUnresolvedName

public void acceptUnresolvedName(char[] name)

acceptPackage

public void acceptPackage(char[] packageName)
One result of the search consists of a new package. NOTE - All package names are presented in their readable form: Package names are in the form "a.b.c". The default package is represented by an empty array.

Specified by:
acceptPackage in interface ISearchRequestor

complete

public void complete(IType type,
                     char[] snippet,
                     int position,
                     char[][] localVariableTypeNames,
                     char[][] localVariableNames,
                     int[] localVariableModifiers,
                     boolean isStatic)

complete

public void complete(ICompilationUnit sourceUnit,
                     int completionPosition,
                     int pos,
                     ITypeRoot root)
Ask the engine to compute a completion at the specified position of the given compilation unit. No return completion results are answered through a requestor.

Parameters:
sourceUnit - org.eclipse.jdt.internal.compiler.env.ICompilationUnit the source of the current compilation unit.
completionPosition - int a position in the source where the completion is taking place. This position is relative to the source provided.

getParser

public AssistParser getParser()
Specified by:
getParser in class Engine

createNonGenericTypeSignature

public static char[] createNonGenericTypeSignature(char[] qualifiedPackageName,
                                                   char[] qualifiedTypeName)

createTypeSignature

public static char[] createTypeSignature(char[] qualifiedPackageName,
                                         char[] qualifiedTypeName)

createMethodSignature

public static char[] createMethodSignature(char[][] parameterPackageNames,
                                           char[][] parameterTypeNames,
                                           char[] returnPackagename,
                                           char[] returnTypeName)

createMethodSignature

public static char[] createMethodSignature(char[][] parameterPackageNames,
                                           char[][] parameterTypeNames,
                                           char[] returnTypeSignature)