Example usage for org.eclipse.jdt.internal.core IJavaElementRequestor acceptPackageFragment

List of usage examples for org.eclipse.jdt.internal.core IJavaElementRequestor acceptPackageFragment

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core IJavaElementRequestor acceptPackageFragment.

Prototype

public void acceptPackageFragment(IPackageFragment packageFragment);

Source Link

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.NameLookup.java

License:Open Source License

/**
 * Notifies the given requestor of all package fragments with the
 * given name. Checks the requestor at regular intervals to see if the
 * requestor has canceled. The domain of
 * the search is bounded by the <code>IJavaProject</code>
 * this <code>NameLookup</code> was obtained from.
 *
 * @param partialMatch//from ww  w. ja v  a 2 s. c  o  m
 *         partial name matches qualify when <code>true</code>;
 *         only exact name matches qualify when <code>false</code>
 */
public void seekPackageFragments(String name, boolean partialMatch, IJavaElementRequestor requestor) {
    /*      if (VERBOSE) {
    Util.verbose(" SEEKING PACKAGE FRAGMENTS");  //$NON-NLS-1$
             Util.verbose(" -> name: " + name);  //$NON-NLS-1$
             Util.verbose(" -> partial match:" + partialMatch);  //$NON-NLS-1$
          }
    */
    if (partialMatch) {
        String[] splittedName = Util.splitOn('.', name, 0, name.length());
        Object[][] keys = this.packageFragments.keyTable;
        for (int i = 0, length = keys.length; i < length; i++) {
            if (requestor.isCanceled())
                return;
            String[] pkgName = (String[]) keys[i];
            if (pkgName != null && Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch)) {
                Object value = this.packageFragments.valueTable[i];
                if (value instanceof PackageFragmentRoot) {
                    PackageFragmentRoot root = (PackageFragmentRoot) value;
                    requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
                } else {
                    IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value;
                    for (int j = 0, length2 = roots.length; j < length2; j++) {
                        if (requestor.isCanceled())
                            return;
                        PackageFragmentRoot root = (PackageFragmentRoot) roots[j];
                        requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
                    }
                }
            }
        }
    } else {
        String[] splittedName = Util.splitOn('.', name, 0, name.length());
        int pkgIndex = this.packageFragments.getIndex(splittedName);
        if (pkgIndex != -1) {
            Object value = this.packageFragments.valueTable[pkgIndex];
            // reuse existing String[]
            String[] pkgName = (String[]) this.packageFragments.keyTable[pkgIndex];
            if (value instanceof PackageFragmentRoot) {
                requestor.acceptPackageFragment(((PackageFragmentRoot) value).getPackageFragment(pkgName));
            } else {
                IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value;
                if (roots != null) {
                    for (int i = 0, length = roots.length; i < length; i++) {
                        if (requestor.isCanceled())
                            return;
                        PackageFragmentRoot root = (PackageFragmentRoot) roots[i];
                        requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
                    }
                }
            }
        }
    }
}