List of usage examples for org.eclipse.jdt.core IJavaElementDelta F_PRIMARY_RESOURCE
int F_PRIMARY_RESOURCE
To view the source code for org.eclipse.jdt.core IJavaElementDelta F_PRIMARY_RESOURCE.
Click Source Link
From source file:com.codenvy.ide.ext.java.server.internal.core.DeltaProcessor.java
License:Open Source License
private void contentChanged(Openable element) { boolean isPrimary = false; boolean isPrimaryWorkingCopy = false; if (element.getElementType() == IJavaElement.COMPILATION_UNIT) { CompilationUnit cu = (CompilationUnit) element; isPrimary = cu.isPrimary();//w w w .j a v a 2 s . co m isPrimaryWorkingCopy = isPrimary && cu.isWorkingCopy(); } if (isPrimaryWorkingCopy) { // 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 { close(element); int flags = IJavaElementDelta.F_CONTENT; if (element instanceof JarPackageFragmentRoot) { flags |= IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED; // need also to reset project cache otherwise it will be out-of-date // see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=162621 this.projectCachesToReset.add(element.getJavaProject()); } if (isPrimary) { flags |= IJavaElementDelta.F_PRIMARY_RESOURCE; } currentDelta().changed(element, flags); } }
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;/*from ww w . j av a 2 s . com*/ 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 {/*www. j a v a 2 s . c o m*/ 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.JavaElementDelta.java
License:Open Source License
protected boolean toDebugString(StringBuffer buffer, int flags) { boolean prev = super.toDebugString(buffer, flags); if ((flags & IJavaElementDelta.F_CHILDREN) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("CHILDREN"); //$NON-NLS-1$ prev = true;/* w w w.ja v a 2 s.co m*/ } if ((flags & IJavaElementDelta.F_CONTENT) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("CONTENT"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_MOVED_FROM) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("MOVED_FROM(" + ((JavaElement) getMovedFromElement()).toStringWithAncestors() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ prev = true; } if ((flags & IJavaElementDelta.F_MOVED_TO) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("MOVED_TO(" + ((JavaElement) getMovedToElement()).toStringWithAncestors() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ prev = true; } if ((flags & IJavaElementDelta.F_ADDED_TO_CLASSPATH) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("ADDED TO CLASSPATH"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("REMOVED FROM CLASSPATH"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_REORDER) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("REORDERED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("ARCHIVE CONTENT CHANGED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_SOURCEATTACHED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("SOURCE ATTACHED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_SOURCEDETACHED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("SOURCE DETACHED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_FINE_GRAINED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("FINE GRAINED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_PRIMARY_WORKING_COPY) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("PRIMARY WORKING COPY"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("RAW CLASSPATH CHANGED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("RESOLVED CLASSPATH CHANGED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("PRIMARY RESOURCE"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_OPENED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("OPENED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_CLOSED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("CLOSED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_AST_AFFECTED) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("AST AFFECTED"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_CATEGORIES) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("CATEGORIES"); //$NON-NLS-1$ prev = true; } if ((flags & IJavaElementDelta.F_ANNOTATIONS) != 0) { if (prev) buffer.append(" | "); //$NON-NLS-1$ buffer.append("ANNOTATIONS"); //$NON-NLS-1$ prev = true; } return prev; }
From source file:org.eclipse.edt.debug.core.java.filters.WorkspaceProjectClassFilter.java
License:Open Source License
protected void compilationUnitChanged(IJavaElementDelta delta, ICompilationUnit cu) throws JavaModelException { if ((delta.getFlags() & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0) { // Inner classes might have changed - remove and then re-add. compilationUnitRemoved(delta, cu); compilationUnitAdded(delta, cu); }/*from w ww . j ava 2 s .c om*/ }
From source file:org.eclipse.jem.internal.adapters.jdom.JavaReflectionSynchronizer.java
License:Open Source License
/** * Handle the change for a single element, children will be handled separately. * *//*from w ww . j a va2 s .c o m*/ protected void processJavaElementChanged(ICompilationUnit element, IJavaElementDelta delta) { switch (delta.getKind()) { case IJavaElementDelta.CHANGED: { // A file save had occurred. It doesn't matter if currently working copy or not. // It means something has changed to the file on disk, but don't know what. if ((delta.getFlags() & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0) { flush(element); // Flush everything, including inner classes. } else if ((delta.getFlags() & IJavaElementDelta.F_CONTENT) == 0 && (delta.getFlags() & IJavaElementDelta.F_CHILDREN) != 0) //A type may have been added or removed. processChildren(element, delta); break; } case IJavaElementDelta.REMOVED: case IJavaElementDelta.ADDED: if (!element.isWorkingCopy()) disAssociateSourcePlusInner(getFullNameFromElement(element)); break; } }
From source file:org.eclipse.jem.internal.beaninfo.adapters.BeaninfoModelSynchronizer.java
License:Open Source License
/** * Handle the change for a single element, children will be handled separately. * If a working copy, then ignore it because we don't care about changes until * they are committed. Else, if the CU has changed content then mark all of the * types in this CU (such as inner classes) as stale. * If it is not a content change then process the children. *///from w w w . j a v a 2s. c om protected void processJavaElementChanged(ICompilationUnit element, IJavaElementDelta delta) { switch (delta.getKind()) { case IJavaElementDelta.CHANGED: // A file save had occurred. It doesn't matter if currently working copy or not. // It means something has changed to the file on disk, but don't know what. if ((delta.getFlags() & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0) { getAdapterFactory().markStaleIntrospectionPlusInner(getFullNameFromElement(element), false); // Flush everything, including inner classes. } break; case IJavaElementDelta.ADDED: case IJavaElementDelta.REMOVED: // Need to know for add because we optimize the beaninfo such that once found as undefined, it won't // introspect again until we mark it stale. So we need to mark it stale to refresh it. // It doesn't matter if totally removed or just moved somewhere else, we will clear out // adapter because there could be a rename which would be a different class. // Currently the element is already deleted or added and there is no way to find the types in the unit to flush. // So instead we ask factory to flush all it any that start with it plus for inner classes. getAdapterFactory().markStaleIntrospectionPlusInner(getFullNameFromElement(element), true); // Flush everything, including inner classes. break; } }
From source file:org.eclipse.jpt.jpa.core.internal.AbstractJpaProject.java
License:Open Source License
protected static boolean javaCompilationUnitDeltaIsRelevant(IJavaElementDelta delta) { // ignore Java notification for ADDED or REMOVED; // these are handled via resource notification if (delta.getKind() != IJavaElementDelta.CHANGED) { return false; }//from w ww . jav a 2 s.com // ignore changes to/from primary working copy - no content has changed; // and make sure there are no other flags set that indicate *both* a // change to/from primary working copy *and* content has changed if (BitTools.onlyFlagIsSet(delta.getFlags(), IJavaElementDelta.F_PRIMARY_WORKING_COPY)) { return false; } // ignore when the compilation unit's resource is deleted; // because the AST parser will log an exception for the missing file. // IJavaElementDelta.F_PRIMARY_RESOURCE is the only flag set when refactor // renaming a type directly in the java editor when the file is modified.. // IJavaElementDelta.F_AST_AFFECTED is the only flag set when I refactor // rename a type directly in the java editor and the file is *not* modified. if (BitTools.onlyFlagIsSet(delta.getFlags(), IJavaElementDelta.F_PRIMARY_RESOURCE) || BitTools.onlyFlagIsSet(delta.getFlags(), IJavaElementDelta.F_AST_AFFECTED)) { ICompilationUnit compilationUnit = (ICompilationUnit) delta.getElement(); if (!compilationUnitResourceExists(compilationUnit)) { return false; } } return true; }
From source file:org.eclipse.jst.jee.model.internal.common.AbstractAnnotationModelProvider.java
License:Open Source License
public void recursevilyProcessCompilationUnits(IModelProviderEvent modelEvent, IJavaElementDelta delta) { if (delta.getElement() instanceof ICompilationUnit) { if (!isProjectRelative(delta.getElement().getJavaProject())) return; try {//from w w w .ja va 2 s . c o m final ICompilationUnit unit = (ICompilationUnit) delta.getElement(); if (delta.getKind() == IJavaElementDelta.ADDED) { processAddedCompilationUnit(modelEvent, unit); } if (delta.getKind() == IJavaElementDelta.REMOVED) { processRemovedCompilationUnit(modelEvent, unit); } if (delta.getKind() == IJavaElementDelta.CHANGED) { if (((delta.getFlags() & IJavaElementDelta.F_PRIMARY_RESOURCE) == 0) || ((delta.getFlags() & IJavaElementDelta.F_PRIMARY_WORKING_COPY) == 0)) { modelEvent.setEventCode( IModelProviderEvent.KNOWN_RESOURCES_CHANGED | modelEvent.getEventCode()); processChangedCompilationUnit(modelEvent, unit); } } } catch (CoreException e) { JEEPlugin.getDefault().getLog() .log(new Status(IStatus.ERROR, JEEPlugin.getDefault().getPluginID(), e.getMessage(), e)); } } else { for (IJavaElementDelta childDelta : delta.getAffectedChildren()) { recursevilyProcessCompilationUnits(modelEvent, childDelta); } } }
From source file:org.eclipse.jst.jsp.core.internal.taglib.TaglibHelperManager.java
License:Open Source License
/** * Update classpath for appropriate loader. * @see org.eclipse.jdt.core.IElementChangedListener#elementChanged(org.eclipse.jdt.core.ElementChangedEvent) *//*from www .ja v a 2s .co m*/ public void elementChanged(ElementChangedEvent event) { // handle classpath changes IJavaElementDelta delta = event.getDelta(); if (delta.getElement().getElementType() == IJavaElement.JAVA_MODEL) { IJavaElementDelta[] changed = delta.getChangedChildren(); for (int i = 0; i < changed.length; i++) { if ((changed[i].getFlags() & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0 || (changed[i].getFlags() & IJavaElementDelta.F_REORDER) != 0 || (changed[i].getFlags() & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0 || (changed[i].getFlags() & IJavaElementDelta.F_PRIMARY_RESOURCE) != 0) { IJavaElement proj = changed[i].getElement(); handleClasspathChange(changed, i, proj); } } } else if (delta.getElement().getElementType() == IJavaElement.COMPILATION_UNIT) { IJavaElementDelta[] changed = delta.getChangedChildren(); for (int i = 0; i < changed.length; i++) { if ((changed[i].getFlags() & IJavaElementDelta.F_SUPER_TYPES) != 0) { IJavaElement element = changed[i].getElement(); handleSuperTypeChange(element); } } } }