Example usage for org.eclipse.jdt.core IJavaElement JAVA_PROJECT

List of usage examples for org.eclipse.jdt.core IJavaElement JAVA_PROJECT

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaElement JAVA_PROJECT.

Prototype

int JAVA_PROJECT

To view the source code for org.eclipse.jdt.core IJavaElement JAVA_PROJECT.

Click Source Link

Document

Constant representing a Java project.

Usage

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

License:Open Source License

private int elementType(File res, int kind, int parentType, RootInfo rootInfo) {
    Path path = new Path(res.getAbsolutePath());
    switch (parentType) {
    case IJavaElement.JAVA_MODEL:
        // case of a movedTo or movedFrom project (other cases are handled in processResourceDelta(...)
        return IJavaElement.JAVA_PROJECT;

    case NON_JAVA_RESOURCE:
    case IJavaElement.JAVA_PROJECT:
        if (rootInfo == null) {
            rootInfo = enclosingRootInfo(path, kind);
        }/*from  w  w  w  .  ja  v  a  2s .  c om*/
        if (rootInfo != null && rootInfo.isRootOfProject(path)) {
            return IJavaElement.PACKAGE_FRAGMENT_ROOT;
        }
        // not yet in a package fragment root or root of another project
        // or package fragment to be included (see below)
        // $FALL-THROUGH$

    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
    case IJavaElement.PACKAGE_FRAGMENT:
        if (rootInfo == null) {
            IPath rootPath = externalPath(res);
            rootInfo = enclosingRootInfo(rootPath, kind);
        }
        if (rootInfo == null) {
            return NON_JAVA_RESOURCE;
        }
        if (Util.isExcluded(path, rootInfo.inclusionPatterns, rootInfo.exclusionPatterns, false)) {
            return NON_JAVA_RESOURCE;
        }
        if (res.isDirectory()) {
            if (parentType == NON_JAVA_RESOURCE && !Util.isExcluded(new Path(res.getParent()),
                    rootInfo.inclusionPatterns, rootInfo.exclusionPatterns, false)) {
                // parent is a non-Java resource because it doesn't have a valid package name (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=130982)
                return NON_JAVA_RESOURCE;
            }
            String sourceLevel = rootInfo.project == null ? null
                    : rootInfo.project.getOption(JavaCore.COMPILER_SOURCE, true);
            String complianceLevel = rootInfo.project == null ? null
                    : rootInfo.project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
            if (Util.isValidFolderNameForPackage(res.getName(), sourceLevel, complianceLevel)) {
                return IJavaElement.PACKAGE_FRAGMENT;
            }
            return NON_JAVA_RESOURCE;
        }
        String fileName = res.getName();
        String sourceLevel = rootInfo.project == null ? null
                : rootInfo.project.getOption(JavaCore.COMPILER_SOURCE, true);
        String complianceLevel = rootInfo.project == null ? null
                : rootInfo.project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
        if (Util.isValidCompilationUnitName(fileName, sourceLevel, complianceLevel)) {
            return IJavaElement.COMPILATION_UNIT;
        } else if (Util.isValidClassFileName(fileName, sourceLevel, complianceLevel)) {
            return IJavaElement.CLASS_FILE;
        } else {
            IPath rootPath = externalPath(res);
            if ((rootInfo = rootInfo(rootPath, kind)) != null
                    && rootInfo.project.getProject().getFullPath().isPrefixOf(
                            rootPath) /*ensure root is a root of its project (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=185310) */) {
                // case of proj=src=bin and resource is a jar file on the classpath
                return IJavaElement.PACKAGE_FRAGMENT_ROOT;
            } else {
                return NON_JAVA_RESOURCE;
            }
        }

    default:
        return NON_JAVA_RESOURCE;
    }
}

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

License:Open Source License

private boolean isResFilteredFromOutput(RootInfo rootInfo, OutputsInfo info, File res, int elementType) {
    if (info != null) {
        JavaProject javaProject = null;/*  w ww  . ja  v a 2s . c  om*/
        String sourceLevel = null;
        String complianceLevel = null;
        IPath resPath = new Path(res.getAbsolutePath());
        for (int i = 0; i < info.outputCount; i++) {
            if (info.paths[i].isPrefixOf(resPath)) {
                if (info.traverseModes[i] != IGNORE) {
                    // case of bin=src
                    if (info.traverseModes[i] == SOURCE && elementType == IJavaElement.CLASS_FILE) {
                        return true;
                    }
                    // case of .class file under project and no source folder
                    // proj=bin
                    if (elementType == IJavaElement.JAVA_PROJECT && res instanceof File) {
                        //                     if (sourceLevel == null) {
                        //                        // Get java project to use its source and compliance levels
                        //                        javaProject = rootInfo == null ?
                        //                           (JavaProject)createElement(res.getProject(), IJavaElement.JAVA_PROJECT, null) :
                        //                           rootInfo.project;
                        //                        if (javaProject != null) {
                        //                           sourceLevel = javaProject.getOption(JavaCore.COMPILER_SOURCE, true);
                        //                           complianceLevel = javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true);
                        //                        }
                        //                     }
                        if (Util.isValidClassFileName(res.getName(), sourceLevel, complianceLevel)) {
                            return true;
                        }
                    }
                } else {
                    return true;
                }
            }
        }
    }
    return false;
}

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

License:Open Source License

private void traverseDelta(IResourceDelta delta, int elementType, RootInfo rootInfo, OutputsInfo outputsInfo) {

    File res = delta.getFile();//from  w  ww.j av  a2s.  c om

    // set stack of elements
    if (this.currentElement == null && rootInfo != null) {
        this.currentElement = rootInfo.project;
    }

    // process current delta
    boolean processChildren = true;
    if (res instanceof IProject) {
        // reset source element parser cache
        this.sourceElementParserCache = null;

        processChildren = updateCurrentDeltaAndIndex(delta,
                elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT ? IJavaElement.JAVA_PROJECT : // case of prj=src
                        elementType,
                rootInfo);
    } else if (rootInfo != null) {
        processChildren = updateCurrentDeltaAndIndex(delta, elementType, rootInfo);
    } else {
        // not yet inside a package fragment root
        processChildren = true;
    }

    // get the project's output locations and traverse mode
    //      if (outputsInfo == null) outputsInfo = outputsInfo(rootInfo, res);

    // process children if needed
    if (processChildren) {
        IResourceDelta[] children = (IResourceDelta[]) delta.getAffectedChildren();
        boolean oneChildOnClasspath = false;
        int length = children.length;
        IResourceDelta[] orphanChildren = null;
        Openable parent = null;
        boolean isValidParent = true;
        for (int i = 0; i < length; i++) {
            IResourceDelta child = children[i];
            File childRes = child.getFile();

            // check source attachment change
            checkSourceAttachmentChange(child, childRes);

            // find out whether the child is a package fragment root of the current project
            IPath childPath = externalPath(childRes);
            int childKind = child.getKind();
            RootInfo childRootInfo = rootInfo(childPath, childKind);
            RootInfo originalChildRootInfo = childRootInfo;
            if (childRootInfo != null && !childRootInfo.isRootOfProject(childPath)) {
                // package fragment root of another project (dealt with later)
                childRootInfo = null;
            }

            // compute child type
            int childType = elementType(childRes, childKind, elementType,
                    rootInfo == null ? childRootInfo : rootInfo);

            // is childRes in the output folder and is it filtered out ?
            boolean isResFilteredFromOutput = isResFilteredFromOutput(rootInfo, outputsInfo, childRes,
                    childType);

            boolean isNestedRoot = rootInfo != null && childRootInfo != null;
            if (!isResFilteredFromOutput && !isNestedRoot) { // do not treat as non-java rsc if nested root

                traverseDelta(child, childType, rootInfo == null ? childRootInfo : rootInfo, outputsInfo); // traverse delta for child in the same project

                if (childType == NON_JAVA_RESOURCE) {
                    if (rootInfo != null) { // if inside a package fragment root
                        if (!isValidParent)
                            continue;
                        if (parent == null) {
                            // find the parent of the non-java resource to attach to
                            if (this.currentElement == null
                                    || !rootInfo.project.equals(this.currentElement.getJavaProject())) { // note if currentElement is the IJavaModel, getJavaProject() is null
                                // force the currentProject to be used
                                this.currentElement = rootInfo.project;
                            }
                            if (elementType == IJavaElement.JAVA_PROJECT
                                    || (elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT
                                            && res instanceof IProject)) {
                                // NB: attach non-java resource to project (not to its package fragment root)
                                parent = rootInfo.project;
                            } else {
                                parent = createElement(res, elementType, rootInfo);
                            }
                            if (parent == null) {
                                isValidParent = false;
                                continue;
                            }
                        }
                        // add child as non java resource
                        try {
                            nonJavaResourcesChanged(parent, child);
                        } catch (JavaModelException e) {
                            // ignore
                        }
                    } else {
                        // the non-java resource (or its parent folder) will be attached to the java project
                        if (orphanChildren == null)
                            orphanChildren = new IResourceDelta[length];
                        orphanChildren[i] = child;
                    }
                } else {
                    if (rootInfo == null && childRootInfo == null) {
                        // the non-java resource (or its parent folder) will be attached to the java project
                        if (orphanChildren == null)
                            orphanChildren = new IResourceDelta[length];
                        orphanChildren[i] = child;
                    }
                }
            } else {
                oneChildOnClasspath = true; // to avoid reporting child delta as non-java resource delta
            }

            // if child is a nested root
            // or if it is not a package fragment root of the current project
            // but it is a package fragment root of another project, traverse delta too
            if (isNestedRoot || (childRootInfo == null && originalChildRootInfo != null)) {
                traverseDelta(child, IJavaElement.PACKAGE_FRAGMENT_ROOT, originalChildRootInfo, null); // binary output of childRootInfo.project cannot be this root
            }

            // if the child is a package fragment root of one or several other projects
            ArrayList rootList;
            if ((rootList = otherRootsInfo(childPath, childKind)) != null) {
                Iterator iterator = rootList.iterator();
                while (iterator.hasNext()) {
                    originalChildRootInfo = (RootInfo) iterator.next();
                    this.currentElement = null; // ensure that 2 roots refering to the same resource don't share the current element (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=210746 )
                    traverseDelta(child, IJavaElement.PACKAGE_FRAGMENT_ROOT, originalChildRootInfo, null); // binary output of childRootInfo.project cannot be this root
                }
            }
        }
        if (orphanChildren != null && (oneChildOnClasspath // orphan children are siblings of a package fragment root
                || res instanceof IProject)) { // non-java resource directly under a project

            //            // attach orphan children
            //            IProject rscProject = res.getProject();
            //            JavaProject adoptiveProject = (JavaProject)JavaCore.create(rscProject);
            //            if (adoptiveProject != null
            //                  && JavaProject.hasJavaNature(rscProject)) { // delta iff Java project (18698)
            //               for (int i = 0; i < length; i++) {
            //                  if (orphanChildren[i] != null) {
            //                     try {
            //                        nonJavaResourcesChanged(adoptiveProject, orphanChildren[i]);
            //                     } catch (JavaModelException e) {
            //                        // ignore
            //                     }
            //                  }
            //               }
            //            }
        } // else resource delta will be added by parent
    } // else resource delta will be added by parent
}

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

License:Open Source License

public boolean updateCurrentDeltaAndIndex(IResourceDelta delta, int elementType, RootInfo rootInfo) {
    Openable element;//from   w w w  . j  a v a2 s . c  om
    switch (delta.getKind()) {
    case IResourceDelta.ADDED:
        File deltaRes = delta.getFile();
        element = createElement(deltaRes, elementType, rootInfo);
        if (element == null) {
            // resource might be containing shared roots (see bug 19058)
            this.state.updateRoots(new Path(deltaRes.getAbsolutePath()), delta, this);
            return rootInfo != null && rootInfo.inclusionPatterns != null;
        }
        updateIndex(element, delta);
        elementAdded(element, delta, rootInfo);
        //            if (elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT)
        //               this.state.addClasspathValidation(rootInfo.project);
        return elementType == IJavaElement.PACKAGE_FRAGMENT;
    case IResourceDelta.REMOVED:
        deltaRes = delta.getFile();
        element = createElement(deltaRes, elementType, rootInfo);
        if (element == null) {
            // resource might be containing shared roots (see bug 19058)
            this.state.updateRoots(new Path(deltaRes.getAbsolutePath()), delta, this);
            return rootInfo != null && rootInfo.inclusionPatterns != null;
        }
        updateIndex(element, delta);
        elementRemoved(element, delta, rootInfo);
        if (elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT)
            //               this.state.addClasspathValidation(rootInfo.project);

            //            if (deltaRes.getType() == IResource.PROJECT){
            //               // reset the corresponding project built state, since cannot reuse if added back
            //               if (JavaBuilder.DEBUG)
            //                  System.out.println("Clearing last state for removed project : " + deltaRes); //$NON-NLS-1$
            //               this.manager.setLastBuiltState((IProject)deltaRes, null /*no state*/);
            //
            //               // clean up previous session containers (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=89850)
            //               this.manager.previousSessionContainers.remove(element);
            //            }
            return elementType == IJavaElement.PACKAGE_FRAGMENT;
    case IResourceDelta.CHANGED:
        int flags = delta.getFlags();
        if (elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT && (flags & IResourceDelta.LOCAL_CHANGED) != 0) {
            // external folder added or removed
            if (oldRootInfo(rootInfo.rootPath, rootInfo.project) == null) {
                // root just added to the classpath
                break;
            }
            deltaRes = delta.getFile();
            Object target = JavaModel.getExternalTarget(new Path(deltaRes.getAbsolutePath()),
                    true/*check resource existence*/);
            element = createElement(deltaRes, elementType, rootInfo);
            updateIndex(element, delta);
            if (target != null) {
                // external folder added
                elementAdded(element, delta, rootInfo);
            } else {
                // external folder removed
                elementRemoved(element, delta, rootInfo);
            }
            //               this.state.addClasspathValidation(rootInfo.project);
        } else if ((flags & IResourceDelta.CONTENT) != 0 || (flags & IResourceDelta.ENCODING) != 0) {
            // content or encoding has changed
            element = createElement(delta.getFile(), elementType, rootInfo);
            if (element == null)
                return false;
            updateIndex(element, delta);
            contentChanged(element);
        } else if (elementType == IJavaElement.JAVA_PROJECT) {
            //               if ((flags & IResourceDelta.OPEN) != 0) {
            //                  // project has been opened or closed
            //                  IProject res = (IProject)delta.getResource();
            //                  element = createElement(res, elementType, rootInfo);
            //                  if (element == null) {
            //                     // resource might be containing shared roots (see bug 19058)
            //                     this.state.updateRoots(res.getFullPath(), delta, this);
            //                     return false;
            //                  }
            //                  if (res.isOpen()) {
            //                     if (JavaProject.hasJavaNature(res)) {
            //                        addToParentInfo(element);
            //                        currentDelta().opened(element);
            //                        this.state.updateRoots(element.getPath(), delta, this);
            //
            //                        // remember that the project's cache must be reset
            //                        this.projectCachesToReset.add(element);
            //
            //                        this.manager.indexManager.indexAll(res);
            //                     }
            //                  } else {
            //                     boolean wasJavaProject = this.state.findJavaProject(res.getName()) != null;
            //                     if (wasJavaProject) {
            //                        close(element);
            //                        removeFromParentInfo(element);
            //                        currentDelta().closed(element);
            //                        this.manager.indexManager.discardJobs(element.getElementName());
            //                        this.manager.indexManager.removeIndexFamily(res.getFullPath());
            //                     }
            //                  }
            //                  return false; // when a project is open/closed don't process children
            //               }
            //               if ((flags & IResourceDelta.DESCRIPTION) != 0) {
            //                  IProject res = (IProject)delta.getResource();
            //                  boolean wasJavaProject = this.state.findJavaProject(res.getName()) != null;
            //                  boolean isJavaProject = JavaProject.hasJavaNature(res);
            //                  if (wasJavaProject != isJavaProject) {
            //                     // project's nature has been added or removed
            //                     element = createElement(res, elementType, rootInfo);
            //                     if (element == null) return false; // note its resources are still visible as roots to other projects
            //                     if (isJavaProject) {
            //                        elementAdded(element, delta, rootInfo);
            //                        this.manager.indexManager.indexAll(res);
            //                     } else {
            //                        elementRemoved(element, delta, rootInfo);
            //                        this.manager.indexManager.discardJobs(element.getElementName());
            //                        this.manager.indexManager.removeIndexFamily(res.getFullPath());
            //                        // reset the corresponding project built state, since cannot reuse if added back
            //                        if (JavaBuilder.DEBUG)
            //                           System.out.println("Clearing last state for project loosing Java nature: " + res); //$NON-NLS-1$
            //                        this.manager.setLastBuiltState(res, null /*no state*/);
            //                     }
            //                     return false; // when a project's nature is added/removed don't process children
            //                  }
            //               }
        }
        return true;
    }
    return true;
}

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

License:Open Source License

private void updateIndex(Openable element, IResourceDelta delta) {

    IndexManager indexManager = this.manager.indexManager;
    if (indexManager == null)
        return;/*from ww w .ja v a 2 s.co  m*/

    switch (element.getElementType()) {
    case IJavaElement.JAVA_PROJECT:
        switch (delta.getKind()) {
        case IResourceDelta.ADDED:
            indexManager.indexAll((JavaProject) element.getJavaProject());
            break;
        case IResourceDelta.REMOVED:
            indexManager.removeIndexFamily(element.getJavaProject().getProject().getFullPath());
            // NB: Discarding index jobs belonging to this project was done during PRE_DELETE
            break;
        // NB: Update of index if project is opened, closed, or its java nature is added or removed
        //     is done in updateCurrentDeltaAndIndex
        }
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        if (element instanceof JarPackageFragmentRoot) {
            JarPackageFragmentRoot root = (JarPackageFragmentRoot) element;
            // index jar file only once (if the root is in its declaring project)
            IPath jarPath = root.getPath();
            switch (delta.getKind()) {
            case IResourceDelta.ADDED:
                // index the new jar
                indexManager.indexLibrary(jarPath, root.getIndexPath());
                break;
            case IResourceDelta.CHANGED:
                // first remove the index so that it is forced to be re-indexed
                indexManager.removeIndex(jarPath);
                // then index the jar
                indexManager.indexLibrary(jarPath, root.getIndexPath());
                break;
            case IResourceDelta.REMOVED:
                // the jar was physically removed: remove the index
                indexManager.discardJobs(jarPath.toString());
                indexManager.removeIndex(jarPath);
                break;
            }
            break;
        }
        int kind = delta.getKind();
        if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED
                || (kind == IResourceDelta.CHANGED && (delta.getFlags() & IResourceDelta.LOCAL_CHANGED) != 0)) {
            PackageFragmentRoot root = (PackageFragmentRoot) element;
            updateRootIndex(root, CharOperation.NO_STRINGS, delta);
            break;
        }
        // don't break as packages of the package fragment root can be indexed below
        // $FALL-THROUGH$
    case IJavaElement.PACKAGE_FRAGMENT:
        switch (delta.getKind()) {
        case IResourceDelta.CHANGED:
            if ((delta.getFlags() & IResourceDelta.LOCAL_CHANGED) == 0)
                break;
            // $FALL-THROUGH$
        case IResourceDelta.ADDED:
        case IResourceDelta.REMOVED:
            IPackageFragment pkg = null;
            if (element instanceof IPackageFragmentRoot) {
                PackageFragmentRoot root = (PackageFragmentRoot) element;
                pkg = root.getPackageFragment(CharOperation.NO_STRINGS);
            } else {
                pkg = (IPackageFragment) element;
            }
            RootInfo rootInfo = rootInfo(pkg.getParent().getPath(), delta.getKind());
            boolean isSource = rootInfo == null // if null, defaults to source
                    || rootInfo.entryKind == IClasspathEntry.CPE_SOURCE;
            IResourceDelta[] children = (IResourceDelta[]) delta.getAffectedChildren();
            for (int i = 0, length = children.length; i < length; i++) {
                IResourceDelta child = children[i];
                IResource resource = child.getResource();
                // TODO (philippe) Why do this? Every child is added anyway as the delta is walked
                if (resource instanceof IFile) {
                    String name = resource.getName();
                    if (isSource) {
                        if (org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(name)) {
                            Openable cu = (Openable) pkg.getCompilationUnit(name);
                            updateIndex(cu, child);
                        }
                    } else if (org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(name)) {
                        Openable classFile = (Openable) pkg.getClassFile(name);
                        updateIndex(classFile, child);
                    }
                }
            }
            break;
        }
        break;
    case IJavaElement.CLASS_FILE:
        //            IFile file = (IFile) delta.getResource();
        //            IJavaProject project = element.getJavaProject();
        //            PackageFragmentRoot root = element.getPackageFragmentRoot();
        //            IPath binaryFolderPath = root.isExternal() && !root.isArchive() ? root.resource().getFullPath() : root.getPath();
        //            // if the class file is part of the binary output, it has been created by
        //            // the java builder -> ignore
        //            try {
        //               if (binaryFolderPath.equals(project.getOutputLocation())) {
        //                  break;
        //               }
        //            } catch (JavaModelException e) {
        //               // project doesn't exist: ignore
        //            }
        //            switch (delta.getKind()) {
        //               case IResourceDelta.CHANGED :
        //                  // no need to index if the content has not changed
        //                  int flags = delta.getFlags();
        //                  if ((flags & IResourceDelta.CONTENT) == 0 && (flags & IResourceDelta.ENCODING) == 0)
        //                     break;
        //                  // $FALL-THROUGH$
        //               case IResourceDelta.ADDED :
        //                  indexManager.addBinary(file, binaryFolderPath);
        //                  break;
        //               case IResourceDelta.REMOVED :
        //                  String containerRelativePath = Util.relativePath(file.getFullPath(), binaryFolderPath.segmentCount());
        //                  indexManager.remove(containerRelativePath, binaryFolderPath);
        //                  break;
        //            }
        break;
    case IJavaElement.COMPILATION_UNIT:
        File file = delta.getFile();
        switch (delta.getKind()) {
        case IResourceDelta.CHANGED:
            // no need to index if the content has not changed
            int flags = delta.getFlags();
            if ((flags & IResourceDelta.CONTENT) == 0 && (flags & IResourceDelta.ENCODING) == 0)
                break;
            // $FALL-THROUGH$
        case IResourceDelta.ADDED:
            indexManager.addSource(file.toPath(), element.getJavaProject().getPath(),
                    getSourceElementParser(element));
            // Clean file from secondary types cache but do not update indexing secondary type cache as it will be updated through indexing itself
            this.manager.secondaryTypesRemoving(file, false);
            break;
        case IResourceDelta.REMOVED:
            indexManager.remove(
                    file.getPath().substring(element.getJavaProject().getPath().toOSString().length()),
                    element.getJavaProject().getPath());
            // Clean file from secondary types cache and update indexing secondary type cache as indexing cannot remove secondary types from cache
            this.manager.secondaryTypesRemoving(file, true);
            break;
        }
    }
}

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

License:Open Source License

/**
 *  Returns the info for the element./*from   w  w w .j  a  v  a2 s  .com*/
 */
public Object getInfo(IJavaElement element) {
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        return this.modelInfo;
    case IJavaElement.JAVA_PROJECT:
        return this.projectCache.get(element);
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        return this.rootCache.get(element);
    case IJavaElement.PACKAGE_FRAGMENT:
        return this.pkgCache.get(element);
    case IJavaElement.COMPILATION_UNIT:
    case IJavaElement.CLASS_FILE:
        return this.openableCache.get(element);
    case IJavaElement.TYPE:
        Object result = this.jarTypeCache.get(element);
        if (result != null)
            return result;
        else
            return this.childrenCache.get(element);
    default:
        return this.childrenCache.get(element);
    }
}

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

License:Open Source License

public IJavaElement getExistingElement(IJavaElement element) {
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        return element;
    case IJavaElement.JAVA_PROJECT:
        return element; // projectCache is a Hashtable and Hashtables don't support getKey(...)
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        return (IJavaElement) this.rootCache.getKey(element);
    case IJavaElement.PACKAGE_FRAGMENT:
        return (IJavaElement) this.pkgCache.getKey(element);
    case IJavaElement.COMPILATION_UNIT:
    case IJavaElement.CLASS_FILE:
        return (IJavaElement) this.openableCache.getKey(element);
    case IJavaElement.TYPE:
        return element; // jarTypeCache or childrenCache are Hashtables and Hashtables don't support getKey(...)
    default:/*  ww  w.j a  v a2 s  . c  o m*/
        return element; // childrenCache is a Hashtable and Hashtables don't support getKey(...)
    }
}

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

License:Open Source License

/**
 *  Returns the info for this element without
 *  disturbing the cache ordering.//from ww  w . j  a va 2s.co  m
 */
protected Object peekAtInfo(IJavaElement element) {
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        return this.modelInfo;
    case IJavaElement.JAVA_PROJECT:
        return this.projectCache.get(element);
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        return this.rootCache.peek(element);
    case IJavaElement.PACKAGE_FRAGMENT:
        return this.pkgCache.peek(element);
    case IJavaElement.COMPILATION_UNIT:
    case IJavaElement.CLASS_FILE:
        return this.openableCache.peek(element);
    case IJavaElement.TYPE:
        Object result = this.jarTypeCache.peek(element);
        if (result != null)
            return result;
        else
            return this.childrenCache.get(element);
    default:
        return this.childrenCache.get(element);
    }
}

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

License:Open Source License

/**
 * Remember the info for the element./*from   ww  w  . java  2 s  .  c o  m*/
 */
protected void putInfo(IJavaElement element, Object info) {
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        this.modelInfo = info;
        break;
    case IJavaElement.JAVA_PROJECT:
        this.projectCache.put(element, info);
        this.rootCache.ensureSpaceLimit(info, element);
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        this.rootCache.put(element, info);
        this.pkgCache.ensureSpaceLimit(info, element);
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        this.pkgCache.put(element, info);
        this.openableCache.ensureSpaceLimit(info, element);
        break;
    case IJavaElement.COMPILATION_UNIT:
    case IJavaElement.CLASS_FILE:
        this.openableCache.put(element, info);
        break;
    default:
        this.childrenCache.put(element, info);
    }
}

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

License:Open Source License

/**
 * Removes the info of the element from the cache.
 *///from  w  w w  .j a v a 2  s  .c  o  m
protected void removeInfo(JavaElement element) {
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        this.modelInfo = null;
        break;
    case IJavaElement.JAVA_PROJECT:
        this.projectCache.remove(element);
        this.rootCache.resetSpaceLimit((int) (DEFAULT_ROOT_SIZE * getMemoryRatio()), element);
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        this.rootCache.remove(element);
        this.pkgCache.resetSpaceLimit((int) (DEFAULT_PKG_SIZE * getMemoryRatio()), element);
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        this.pkgCache.remove(element);
        this.openableCache.resetSpaceLimit(
                (int) (DEFAULT_OPENABLE_SIZE * getMemoryRatio() * getOpenableRatio()), element);
        break;
    case IJavaElement.COMPILATION_UNIT:
    case IJavaElement.CLASS_FILE:
        this.openableCache.remove(element);
        break;
    default:
        this.childrenCache.remove(element);
    }
}