Example usage for org.eclipse.jdt.internal.core.util HashSetOfArray HashSetOfArray

List of usage examples for org.eclipse.jdt.internal.core.util HashSetOfArray HashSetOfArray

Introduction

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

Prototype

public HashSetOfArray() 

Source Link

Usage

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

License:Open Source License

ProjectCache getProjectCache(JavaProject project) {
    ProjectCache cache = this.projectCache;
    if (cache == null) {
        IPackageFragmentRoot[] roots;/* w w w.j a v  a2  s.c om*/
        Map reverseMap = new HashMap(3);
        try {
            roots = project.getAllPackageFragmentRoots(reverseMap);
        } catch (JavaModelException e) {
            // project does not exist: cannot happen since this is the info of the project
            roots = new IPackageFragmentRoot[0];
            reverseMap.clear();
        }

        //         HashMap rootInfos = JavaModelManager.getJavaModelManager().deltaState.roots;
        HashMap pkgFragmentsCaches = new HashMap();
        int length = roots.length;
        JavaModelManager manager = project.manager; //JavaModelManager.getJavaModelManager();
        for (int i = 0; i < length; i++) {
            IPackageFragmentRoot root = roots[i];
            DeltaProcessor.RootInfo rootInfo = null;// (DeltaProcessor.RootInfo) rootInfos.get(root.getPath());
            if (rootInfo == null || rootInfo.project.equals(project)) {
                // ensure that an identical root is used (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=217059 )
                roots[i] = root = (IPackageFragmentRoot) manager.getExistingElement(root);
                // compute fragment cache
                HashSetOfArray fragmentsCache = new HashSetOfArray();
                initializePackageNames(root, fragmentsCache);
                pkgFragmentsCaches.put(root, fragmentsCache);
            }
        }

        cache = new ProjectCache(roots, reverseMap, pkgFragmentsCaches);
        this.projectCache = cache;
    }
    return cache;
}

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

License:Open Source License

NameLookup newNameLookup(JavaProject project, ICompilationUnit[] workingCopies) {
    ProjectCache cache = getProjectCache(project);
    HashtableOfArrayToObject allPkgFragmentsCache = cache.allPkgFragmentsCache;
    if (allPkgFragmentsCache == null) {
        //         HashMap rootInfos = project.manager.deltaState.roots;
        IPackageFragmentRoot[] allRoots = cache.allPkgFragmentRootsCache;
        int length = allRoots.length;
        allPkgFragmentsCache = new HashtableOfArrayToObject();
        for (int i = 0; i < length; i++) {
            IPackageFragmentRoot root = allRoots[i];
            DeltaProcessor.RootInfo rootInfo = null;//(DeltaProcessor.RootInfo) rootInfos.get(root.getPath());
            JavaProject rootProject = project;//rootInfo == null ? project : rootInfo.project;
            HashSetOfArray fragmentsCache;
            if (rootProject.equals(project)) {
                // retrieve package fragments cache from this project
                fragmentsCache = (HashSetOfArray) cache.pkgFragmentsCaches.get(root);
            } else {
                // retrieve package fragments  cache from the root's project
                ProjectCache rootProjectCache;
                try {
                    rootProjectCache = rootProject.getProjectCache();
                } catch (JavaModelException e) {
                    // project doesn't exit
                    continue;
                }/*from  w  w  w. j av  a2 s.  c  o  m*/
                fragmentsCache = (HashSetOfArray) rootProjectCache.pkgFragmentsCaches.get(root);
            }
            if (fragmentsCache == null) { // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=183833
                fragmentsCache = new HashSetOfArray();
                initializePackageNames(root, fragmentsCache);
            }
            Object[][] set = fragmentsCache.set;
            for (int j = 0, length2 = set.length; j < length2; j++) {
                String[] pkgName = (String[]) set[j];
                if (pkgName == null)
                    continue;
                Object existing = allPkgFragmentsCache.get(pkgName);
                if (existing == null || existing == NO_ROOTS) {
                    allPkgFragmentsCache.put(pkgName, root);
                    // ensure super packages (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=119161)
                    // are also in the map
                    addSuperPackageNames(pkgName, allPkgFragmentsCache);
                } else {
                    if (existing instanceof PackageFragmentRoot) {
                        allPkgFragmentsCache.put(pkgName,
                                new IPackageFragmentRoot[] { (PackageFragmentRoot) existing, root });
                    } else {
                        IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) existing;
                        int rootLength = roots.length;
                        System.arraycopy(roots, 0, roots = new IPackageFragmentRoot[rootLength + 1], 0,
                                rootLength);
                        roots[rootLength] = root;
                        allPkgFragmentsCache.put(pkgName, roots);
                    }
                }
            }
        }
        cache.allPkgFragmentsCache = allPkgFragmentsCache;
    }
    return new NameLookup(cache.allPkgFragmentRootsCache, cache.allPkgFragmentsCache, workingCopies,
            cache.rootToResolvedEntries, project.getJavaModelManager());
}