Example usage for org.eclipse.jdt.internal.core.search.matching MatchLocatorParser createParser

List of usage examples for org.eclipse.jdt.internal.core.search.matching MatchLocatorParser createParser

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core.search.matching MatchLocatorParser createParser.

Prototype

public static MatchLocatorParser createParser(ProblemReporter problemReporter, MatchLocator locator) 

Source Link

Usage

From source file:org.eclipse.jdt.internal.core.search.matching.MatchLocator.java

License:Open Source License

/**
 * Create a new parser for the given project, as well as a lookup environment.
 *//*from w w  w  .java2 s  . co  m*/
public void initialize(JavaProject project, int possibleMatchSize) throws JavaModelException {
    // clean up name environment only if there are several possible match as it is reused
    // when only one possible match (bug 58581)
    if (this.nameEnvironment != null && possibleMatchSize != 1)
        this.nameEnvironment.cleanup();

    SearchableEnvironment searchableEnvironment = project.newSearchableNameEnvironment(this.workingCopies);

    // if only one possible match, a file name environment costs too much,
    // so use the existing searchable  environment which will populate the java model
    // only for this possible match and its required types.
    this.nameEnvironment = possibleMatchSize == 1 ? (INameEnvironment) searchableEnvironment
            : (INameEnvironment) new JavaSearchNameEnvironment(project, this.workingCopies);

    // create lookup environment
    Map map = project.getOptions(true);
    map.put(CompilerOptions.OPTION_TaskTags, org.eclipse.jdt.internal.compiler.util.Util.EMPTY_STRING);
    this.options = new CompilerOptions(map);
    ProblemReporter problemReporter = new ProblemReporter(DefaultErrorHandlingPolicies.proceedWithAllProblems(),
            this.options, new DefaultProblemFactory());
    this.lookupEnvironment = new LookupEnvironment(this, this.options, problemReporter, this.nameEnvironment);

    this.parser = MatchLocatorParser.createParser(problemReporter, this);

    // basic parser needs also to be reset as project options may have changed
    // see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=163072
    this.basicParser = null;

    // remember project's name lookup
    this.nameLookup = searchableEnvironment.nameLookup;

    // initialize queue of units
    this.numberOfMatches = 0;
    this.matchesToProcess = new PossibleMatch[possibleMatchSize];
}