List of usage examples for org.eclipse.jdt.core IJavaElement PACKAGE_FRAGMENT
int PACKAGE_FRAGMENT
To view the source code for org.eclipse.jdt.core IJavaElement PACKAGE_FRAGMENT.
Click Source Link
From source file:com.codenvy.ide.ext.java.server.internal.core.DeltaProcessor.java
License:Open Source License
private void elementAdded(Openable element, IResourceDelta delta, RootInfo rootInfo) { 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 IProject project;/*w w w . ja v a 2 s. c o m*/ if (delta != null && JavaProject.hasJavaNature(project = (IProject) delta.getResource())) { addToParentInfo(element); this.manager.getPerProjectInfo(true /*create info if needed*/).rememberExternalLibTimestamps(); if ((delta.getFlags() & IResourceDelta.MOVED_FROM) != 0) { Openable movedFromElement = (Openable) element.getJavaModel() .getJavaProject(delta.getMovedFromPath().lastSegment()); currentDelta().movedTo(element, movedFromElement); } else { // Force the project 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 Java project P (where P=src) // 2. open project P // 3. add folder f in P's pkg fragment root // When the resource delta comes in, only the addition of P is notified, // but the pkg fragment root of project P is already opened, thus its children are not recomputed // and it appears to contain only the default package. close(element); currentDelta().added(element); } this.state.updateRoots(element.getPath(), delta, this); // remember that the project's cache must be reset this.projectCachesToReset.add(element); } } else { if (delta == null || (delta.getFlags() & IResourceDelta.MOVED_FROM) == 0) { // regular element addition if (isPrimaryWorkingCopy(element, elementType)) { // filter out changes to primary compilation unit in working copy mode // just report a change to the resource (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59500) currentDelta().changed(element, IJavaElementDelta.F_PRIMARY_RESOURCE); } 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); currentDelta().added(element); } } else { // element is moved addToParentInfo(element); close(element); IPath movedFromPath = delta.getMovedFromPath(); File res = delta.getFile(); File movedFromRes; if (res.isFile()) { movedFromRes = movedFromPath.toFile(); } else { movedFromRes = movedFromPath.toFile(); } // find the element type of the moved from element IPath rootPath = externalPath(movedFromRes); RootInfo movedFromInfo = enclosingRootInfo(rootPath, IResourceDelta.REMOVED); int movedFromType = elementType(movedFromRes, IResourceDelta.REMOVED, element.getParent().getElementType(), movedFromInfo); // reset current element as it might be inside a nested root (popUntilPrefixOf() may use the outer root) this.currentElement = null; // create the moved from element Openable movedFromElement = elementType != IJavaElement.JAVA_PROJECT && movedFromType == IJavaElement.JAVA_PROJECT ? null : // outside classpath createElement(movedFromRes, movedFromType, movedFromInfo); if (movedFromElement == null) { // moved from outside classpath currentDelta().added(element); } else { currentDelta().movedTo(element, movedFromElement); } } switch (elementType) { case IJavaElement.PACKAGE_FRAGMENT_ROOT: // when a root is added, and is on the classpath, the project must be updated JavaProject project = (JavaProject) element.getJavaProject(); // remember that the project's cache must be reset this.projectCachesToReset.add(project); break; case IJavaElement.PACKAGE_FRAGMENT: // reset project's package fragment cache project = (JavaProject) element.getJavaProject(); this.projectCachesToReset.add(project); break; } } }
From source file:com.codenvy.ide.ext.java.server.internal.core.DeltaProcessor.java
License:Open Source License
private void elementRemoved(Openable element, IResourceDelta delta, RootInfo rootInfo) { int elementType = element.getElementType(); if (delta == null || (delta.getFlags() & IResourceDelta.MOVED_TO) == 0) { // regular element removal if (isPrimaryWorkingCopy(element, elementType)) { // filter out changes to primary compilation unit in working copy mode // just report a change to the resource (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59500) currentDelta().changed(element, IJavaElementDelta.F_PRIMARY_RESOURCE); } else {/* w w w.ja va 2s .c om*/ close(element); removeFromParentInfo(element); currentDelta().removed(element); } } else { // element is moved close(element); removeFromParentInfo(element); IPath movedToPath = delta.getMovedToPath(); File res = delta.getFile(); File movedToRes; movedToRes = movedToPath.toFile(); // switch (res.getType()) { // case IResource.PROJECT: // movedToRes = res.getWorkspace().getRoot().getProject(movedToPath.lastSegment()); // break; // case IResource.FOLDER: // movedToRes = res.getWorkspace().getRoot().getFolder(movedToPath); // break; // case IResource.FILE: // movedToRes = res.getWorkspace().getRoot().getFile(movedToPath); // break; // default: // return; // } // find the element type of the moved from element IPath rootPath = externalPath(movedToRes); RootInfo movedToInfo = enclosingRootInfo(rootPath, IResourceDelta.ADDED); int movedToType = elementType(movedToRes, IResourceDelta.ADDED, element.getParent().getElementType(), movedToInfo); // reset current element as it might be inside a nested root (popUntilPrefixOf() may use the outer root) this.currentElement = null; // create the moved To element Openable movedToElement = elementType != IJavaElement.JAVA_PROJECT && movedToType == IJavaElement.JAVA_PROJECT ? null : // outside classpath createElement(movedToRes, movedToType, movedToInfo); if (movedToElement == null) { // moved outside classpath currentDelta().removed(element); } else { currentDelta().movedFrom(element, movedToElement); } } switch (elementType) { case IJavaElement.JAVA_MODEL: this.manager.indexManager.reset(); break; case IJavaElement.JAVA_PROJECT: this.state.updateRoots(element.getPath(), delta, this); // remember that the project's cache must be reset this.projectCachesToReset.add(element); break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: JavaProject project = (JavaProject) element.getJavaProject(); // remember that the project's cache must be reset this.projectCachesToReset.add(project); break; case IJavaElement.PACKAGE_FRAGMENT: // reset package fragment cache project = (JavaProject) element.getJavaProject(); this.projectCachesToReset.add(project); break; } }
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 www . j a 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
public boolean updateCurrentDeltaAndIndex(IResourceDelta delta, int elementType, RootInfo rootInfo) { Openable element;/*from w w w. j a v a 2 s . com*/ 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 w ww .ja va2 s.c om*/ 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 ww w . ja v a 2 s . 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://from ww w .j a v a 2 s.co 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./* w w w.ja va2s . c o 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 .j a v a2 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 a2 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); } }