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

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

Introduction

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

Prototype

int PACKAGE_FRAGMENT_ROOT

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

Click Source Link

Document

Constant representing a package fragment root.

Usage

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 w w  . j  a v a2  s .c  o m

    // 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;/*  w  w  w .j a  va2  s.  c  o  m*/
    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;//  www  .  ja  v a 2 s.c  o  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.JavaElement.java

License:Open Source License

protected URL getJavadocBaseLocation() throws JavaModelException {
    IPackageFragmentRoot root = (IPackageFragmentRoot) getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    if (root == null) {
        return null;
    }/* ww w .  j a  v a  2  s .  co m*/

    if (root.getKind() == IPackageFragmentRoot.K_BINARY) {
        IClasspathEntry entry = null;
        try {
            entry = root.getResolvedClasspathEntry();
            URL url = getLibraryJavadocLocation(entry);
            if (url != null) {
                return url;
            }
        } catch (JavaModelException jme) {
            // Proceed with raw classpath
        }

        entry = root.getRawClasspathEntry();
        switch (entry.getEntryKind()) {
        case IClasspathEntry.CPE_LIBRARY:
        case IClasspathEntry.CPE_VARIABLE:
            return getLibraryJavadocLocation(entry);
        default:
            return null;
        }
    }
    return null;
}

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

License:Open Source License

/**
 *  Returns the info for the element.//w w w  .  j a va 2s .co m
 */
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:/*w  w w  .  j  av  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  w  w  w.  ja  v  a 2s  .c  om
 */
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.//w  w w .ja v a2s  . c om
 */
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.
 *//*www.  ja  va  2  s . c  om*/
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);
    }
}

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

License:Open Source License

/**
 * Processing for an element that has been added:<ul>
 * <li>If the element is a project, do nothing, and do not process
 * children, as when a project is created it does not yet have any
 * natures - specifically a java nature.
 * <li>If the elemet is not a project, process it as added (see
 * <code>basicElementAdded</code>.
 * </ul>//from   ww  w .  ja  va2 s .c  o  m
 */
protected void elementAdded(Openable element) {

    int elementType = element.getElementType();
    if (elementType == IJavaElement.JAVA_PROJECT) {
        // project add is handled by JavaProject.configure() because
        // when a project is created, it does not yet have a java nature
        addToParentInfo(element);
        this.projectsToUpdate.add(element);
    } else {
        addToParentInfo(element);

        // Force the element to be closed as it might have been opened
        // before the resource modification came in and it might have a new child
        // For example, in an IWorkspaceRunnable:
        // 1. create a package fragment p using a java model operation
        // 2. open package p
        // 3. add file X.java in folder p
        // When the resource delta comes in, only the addition of p is notified,
        // but the package p is already opened, thus its children are not recomputed
        // and it appears empty.
        close(element);
    }

    switch (elementType) {
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        // when a root is added, and is on the classpath, the project must be updated
        this.projectsToUpdate.add(element.getJavaProject());
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        // get rid of package fragment cache
        JavaProject project = (JavaProject) element.getJavaProject();
        project.resetCaches();
        break;
    }
}