Example usage for org.eclipse.jdt.internal.core JavaModelManager getExistingElement

List of usage examples for org.eclipse.jdt.internal.core JavaModelManager getExistingElement

Introduction

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

Prototype

public synchronized IJavaElement getExistingElement(IJavaElement element) 

Source Link

Document

Returns the existing element in the cache that is equal to the given element.

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  . ja  v a  2  s.co m*/
        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;
}