Example usage for org.eclipse.jdt.core IJavaElementDelta CHANGED

List of usage examples for org.eclipse.jdt.core IJavaElementDelta CHANGED

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaElementDelta CHANGED.

Prototype

int CHANGED

To view the source code for org.eclipse.jdt.core IJavaElementDelta CHANGED.

Click Source Link

Document

Status constant indicating that the element has been changed, as described by the change flags.

Usage

From source file:com.blackducksoftware.integration.eclipseplugin.internal.listeners.ProjectDependenciesChangedListenerTest.java

License:Apache License

@Test
public void testDependencyRemovedFromClasspath() throws CoreException, MalformedURLException {
    setUpAllStubs();/*from ww w.ja v  a2 s .  co  m*/
    Mockito.when(projectDelta.getFlags()).thenReturn(IJavaElementDelta.F_CLASSPATH_CHANGED);
    Mockito.when(mavenRootDelta.getFlags()).thenReturn(IJavaElementDelta.F_REMOVED_FROM_CLASSPATH);
    Mockito.when(mavenRootDelta.getKind()).thenReturn(0);
    Mockito.when(gradleRootDelta.getFlags()).thenReturn(0);
    Mockito.when(gradleRootDelta.getKind()).thenReturn(IJavaElementDelta.ADDED);
    Mockito.when(nonBinaryRootDelta.getKind()).thenReturn(IJavaElementDelta.CHANGED);
    Mockito.when(nonBinaryRootDelta.getFlags()).thenReturn(0);
    final ProjectDependenciesChangedListener listener = new ProjectDependenciesChangedListener(information,
            extractor, depService);
    listener.elementChanged(e);
    Mockito.verify(information, Mockito.times(0)).addComponentToProject(PROJECT_NAME,
            new Gav("maven", mavenGav.getGroupId(), mavenGav.getArtifactId(), mavenGav.getVersion()));
    Mockito.verify(information, Mockito.times(1)).removeComponentFromProject(PROJECT_NAME, mavenGav);
    Mockito.verify(information, Mockito.times(1)).addComponentToProject(PROJECT_NAME,
            new Gav("maven", gradleGav.getGroupId(), gradleGav.getArtifactId(), gradleGav.getVersion()));
    Mockito.verify(information, Mockito.times(0)).removeComponentFromProject(PROJECT_NAME, gradleGav);
    Mockito.verify(extractor, Mockito.times(0)).getGradlePathGav(NON_BINARY_PATH_URL);
    Mockito.verify(extractor, Mockito.times(0)).getMavenPathGav(NON_BINARY_PATH_URL, MAVEN_REPO_PATH_URL);
    Mockito.verify(depService, Mockito.times(1)).isGradleDependency(NON_BINARY_PATH_URL);
    Mockito.verify(depService, Mockito.times(1)).isMavenDependency(NON_BINARY_PATH_URL);
}

From source file:com.cisco.yangide.core.indexing.DeltaProcessor.java

License:Open Source License

private boolean processJavaDeltas(IJavaElementDelta[] affectedChildren) {

    for (IJavaElementDelta d : affectedChildren) {
        IJavaElement element = d.getElement();
        if (element instanceof IPackageFragmentRoot) {
            IPath path = ((IPackageFragmentRoot) element).getPath();

            if (path != null && path.toFile().exists() && path.lastSegment().toLowerCase().endsWith(".jar")) {

                switch (d.getKind()) {
                case IJavaElementDelta.ADDED:
                case IJavaElementDelta.CHANGED:
                    this.manager.indexManager.addJarFile(element.getJavaProject().getProject(), path);
                    break;
                case IJavaElementDelta.REMOVED:
                    this.manager.indexManager.indexAll(element.getJavaProject().getProject());
                    return false;
                }/*from  w  w  w . ja va2  s.co m*/
            }
        }
        if (!processJavaDeltas(d.getAffectedChildren())) {
            return false;
        }
    }
    return true;
}

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

License:Open Source License

/**
 * Converts an <code>IResourceDelta</code> and its children into
 * the corresponding <code>IJavaElementDelta</code>s.
 * Return whether the delta corresponds to a resource on the classpath.
 * If it is not a resource on the classpath, it will be added as a non-java
 * resource by the sender of this method.
 *//*  www  .j  a v  a2  s.c  o  m*/
protected void traverseDelta(IJavaElementDelta delta, IPackageFragmentRoot root, IJavaProject project) {

    boolean processChildren = true;

    Openable element = (Openable) delta.getElement();
    switch (element.getElementType()) {
    case IJavaElement.JAVA_PROJECT:
        project = (IJavaProject) element;
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        root = (IPackageFragmentRoot) element;
        break;
    case IJavaElement.COMPILATION_UNIT:
        // filter out working copies that are not primary (we don't want to add/remove them to/from the package fragment
        CompilationUnit cu = (CompilationUnit) element;
        if (cu.isWorkingCopy() && !cu.isPrimary()) {
            return;
        }
        // $FALL-THROUGH$
    case IJavaElement.CLASS_FILE:
        processChildren = false;
        break;
    }

    switch (delta.getKind()) {
    case IJavaElementDelta.ADDED:
        elementAdded(element);
        break;
    case IJavaElementDelta.REMOVED:
        elementRemoved(element);
        break;
    case IJavaElementDelta.CHANGED:
        if ((delta.getFlags() & IJavaElementDelta.F_CONTENT) != 0) {
            elementChanged(element);
        }
        break;
    }
    if (processChildren) {
        IJavaElementDelta[] children = delta.getAffectedChildren();
        for (int i = 0; i < children.length; i++) {
            IJavaElementDelta childDelta = children[i];
            traverseDelta(childDelta, root, project);
        }
    }
}

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

License:Open Source License

public void processDelta(IJavaElementDelta delta, int eventType) {
    if (this.enclosingPaths == null)
        return;//from   w  ww .  j  a  v  a  2s  .  c  o m
    IJavaElement element = delta.getElement();
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        IJavaElementDelta[] children = delta.getAffectedChildren();
        for (int i = 0, length = children.length; i < length; i++) {
            IJavaElementDelta child = children[i];
            processDelta(child, eventType);
        }
        break;
    case IJavaElement.JAVA_PROJECT:
        int kind = delta.getKind();
        switch (kind) {
        case IJavaElementDelta.ADDED:
        case IJavaElementDelta.REMOVED:
            this.enclosingPaths = null;
            break;
        case IJavaElementDelta.CHANGED:
            int flags = delta.getFlags();
            if ((flags & IJavaElementDelta.F_CLOSED) != 0 || (flags & IJavaElementDelta.F_OPENED) != 0) {
                this.enclosingPaths = null;
            } else {
                children = delta.getAffectedChildren();
                for (int i = 0, length = children.length; i < length; i++) {
                    IJavaElementDelta child = children[i];
                    processDelta(child, eventType);
                }
            }
            break;
        }
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        kind = delta.getKind();
        switch (kind) {
        case IJavaElementDelta.ADDED:
        case IJavaElementDelta.REMOVED:
            this.enclosingPaths = null;
            break;
        case IJavaElementDelta.CHANGED:
            int flags = delta.getFlags();
            if ((flags & IJavaElementDelta.F_ADDED_TO_CLASSPATH) > 0
                    || (flags & IJavaElementDelta.F_REMOVED_FROM_CLASSPATH) > 0) {
                this.enclosingPaths = null;
            }
            break;
        }
        break;
    }
}

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

License:Open Source License

public void changed(int flags) {
    this.kind = IJavaElementDelta.CHANGED;
    this.changeFlags |= flags;
}

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

License:Open Source License

protected void toDebugString(StringBuffer buffer) {
    buffer.append("["); //$NON-NLS-1$
    switch (getKind()) {
    case IJavaElementDelta.ADDED:
        buffer.append('+');
        break;/* w w  w. j  a v  a 2  s. c  o m*/
    case IJavaElementDelta.REMOVED:
        buffer.append('-');
        break;
    case IJavaElementDelta.CHANGED:
        buffer.append('*');
        break;
    default:
        buffer.append('?');
        break;
    }
    buffer.append("]: {"); //$NON-NLS-1$
    toDebugString(buffer, getFlags());
    buffer.append("}"); //$NON-NLS-1$
}

From source file:com.google.gdt.eclipse.core.reference.ElementChangeListener.java

License:Open Source License

public void elementChanged(ElementChangedEvent event) {
    final Map<IJavaElement, IJavaElementDelta> changedElements = new HashMap<IJavaElement, IJavaElementDelta>();

    JavaModelSearch.visitJavaElementDelta(event.getDelta(), new IJavaElementDeltaVisitor() {
        public boolean visit(IJavaElementDelta delta) {
            IJavaElement element = delta.getElement();

            /*/*from   w w  w  .  j  ava 2  s.  c om*/
             * We care about packages being only added or removed because if we
             * called the change listeners on a change to a package, any change
             * to any file in that package will cause all ui.xml files that
             * reference that package (say with xmlns urn imports) to be
             * revalidated. Some projects end up having hundreds of ui.xml files
             * referencing a package, and then saving any change in that package
             * ends up taking tens of seconds.
             */
            int type = element.getElementType();
            if (type == IJavaElement.PACKAGE_FRAGMENT && delta.getKind() == IJavaElementDelta.CHANGED) {
                return true;
            }

            Set<IReference> references = referenceManager.getReferencesWithMatchingJavaElement(element,
                    EnumSet.of(ReferenceLocationType.TARGET));
            if (references != null && references.size() > 0) {
                changedElements.put(element, delta);
            }
            return true;
        }
    });

    if (changedElements.size() > 0) {
        callReferenceChangeListeners(changedElements);
    }
}

From source file:com.ifedorenko.m2e.sourcelookup.internal.JavaProjectSources.java

License:Open Source License

private void processDelta(final IJavaElementDelta delta, Set<IJavaProject> remove, Set<IJavaProject> add)
        throws CoreException {
    final IJavaElement element = delta.getElement();
    final int kind = delta.getKind();
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        processChangedChildren(delta, remove, add);
        break;/*from  www .j  a  v  a2  s  .  c o m*/
    case IJavaElement.JAVA_PROJECT:
        switch (kind) {
        case IJavaElementDelta.REMOVED:
            remove.add((IJavaProject) element);
            break;
        case IJavaElementDelta.ADDED:
            add.add((IJavaProject) element);
            break;
        case IJavaElementDelta.CHANGED:
            switch (delta.getFlags()) {
            case IJavaElementDelta.F_CLOSED:
                remove.add((IJavaProject) element);
                break;
            case IJavaElementDelta.F_OPENED:
                add.add((IJavaProject) element);
                break;
            }
            break;
        }
        processChangedChildren(delta, remove, add);
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        remove.add(element.getJavaProject());
        add.add(element.getJavaProject());
        break;
    }
}

From source file:com.redhat.ceylon.eclipse.code.explorer.PackageExplorerContentProvider.java

License:Open Source License

/**
 * Processes a delta recursively. When more than two children are affected the
 * tree is fully refreshed starting at this node.
 *
 * @param delta the delta to process//from   w w w  .j a va2  s  . c  om
 * @param runnables the resulting view changes as runnables (type {@link Runnable})
 * @return true is returned if the conclusion is to refresh a parent of an element. In that case no siblings need
 * to be processed
 * @throws JavaModelException thrown when the access to an element failed
 */
private boolean processDelta(IJavaElementDelta delta, Collection<Runnable> runnables)
        throws JavaModelException {

    int kind = delta.getKind();
    int flags = delta.getFlags();
    IJavaElement element = delta.getElement();
    int elementType = element.getElementType();

    if (elementType != IJavaElement.JAVA_MODEL && elementType != IJavaElement.JAVA_PROJECT) {
        IJavaProject proj = element.getJavaProject();
        if (proj == null || !proj.getProject().isOpen()) // TODO: Not needed if parent already did the 'open' check!
            return false;
    }

    if (elementType == IJavaElement.PACKAGE_FRAGMENT) {
        if ((flags & (IJavaElementDelta.F_CONTENT
                | IJavaElementDelta.F_CHILDREN)) == IJavaElementDelta.F_CONTENT) {
            // TODO: This should never be true for folders (F_CONTENT is only for files)
            if (!fIsFlatLayout) {
                Object parent = getHierarchicalPackageParent((IPackageFragment) element);
                if (!(parent instanceof IPackageFragmentRoot)) {
                    postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
                    return true;
                }
            }
            // content change, without children info (for example resource added/removed to class folder package)
            postRefresh(internalGetParent(element), PARENT, element, runnables);
            return true;
        }

        if (!fIsFlatLayout) {
            if (kind == IJavaElementDelta.REMOVED) {
                final Object parent = getHierarchicalPackageParent((IPackageFragment) element);
                if (parent instanceof IPackageFragmentRoot) {
                    postRemove(element, runnables);
                    return false;
                } else {
                    postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
                    return true;
                }
            } else if (kind == IJavaElementDelta.ADDED) {
                final Object parent = getHierarchicalPackageParent((IPackageFragment) element);
                if (parent instanceof IPackageFragmentRoot) {
                    if (fFoldPackages) {
                        postRefresh(parent, PARENT, element, runnables);
                        return true;
                    } else {
                        postAdd(parent, element, runnables);
                        return false;
                    }
                } else {
                    postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
                    return true;
                }
            }
            handleAffectedChildren(delta, element, runnables);
            return false;
        }
    }

    if (elementType == IJavaElement.COMPILATION_UNIT) {
        ICompilationUnit cu = (ICompilationUnit) element;
        if (!JavaModelUtil.isPrimary(cu)) {
            return false;
        }

        if (!getProvideMembers() && cu.isWorkingCopy() && kind == IJavaElementDelta.CHANGED) {
            return false;
        }

        if (kind == IJavaElementDelta.CHANGED && !isStructuralCUChange(flags)) {
            return false; // test moved ahead
        }

        if (!isOnClassPath(cu)) { // TODO: isOnClassPath expensive! Should be put after all cheap tests
            return false;
        }

    }

    if (elementType == IJavaElement.JAVA_PROJECT) {
        // handle open and closing of a project
        if ((flags & (IJavaElementDelta.F_CLOSED | IJavaElementDelta.F_OPENED)) != 0) {
            postRefresh(element, ORIGINAL, element, runnables);
            return false;
        }
        // if the class path has changed we refresh the entire project
        if ((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) {
            postRefresh(element, ORIGINAL, element, runnables);
            return false;
        }
        // if added it could be that the corresponding IProject is already shown. Remove it first.
        // bug 184296
        if (kind == IJavaElementDelta.ADDED) {
            postRemove(element.getResource(), runnables);
            postAdd(element.getParent(), element, runnables);
            return false;
        }
    }

    if (kind == IJavaElementDelta.REMOVED) {
        Object parent = internalGetParent(element);
        if (element instanceof IPackageFragment) {
            // refresh package fragment root to allow filtering empty (parent) packages: bug 72923
            if (fViewer.testFindItem(parent) != null)
                postRefresh(parent, PARENT, element, runnables);
            return true;

        } else if (element instanceof IPackageFragmentRoot) {
            // libs and class folders can show up twice (in library container and as resource at original location)
            IResource resource = element.getResource();
            if (resource != null && !resource.exists())
                postRemove(resource, runnables);
        }

        postRemove(element, runnables);
        if (parent instanceof IPackageFragment)
            postUpdateIcon((IPackageFragment) parent, runnables);
        // we are filtering out empty subpackages, so we
        // a package becomes empty we remove it from the viewer.
        if (isPackageFragmentEmpty(element.getParent())) {
            if (fViewer.testFindItem(parent) != null)
                postRefresh(internalGetParent(parent), GRANT_PARENT, element, runnables);
            return true;
        }
        return false;
    }

    if (kind == IJavaElementDelta.ADDED) {
        Object parent = internalGetParent(element);
        // we are filtering out empty subpackages, so we
        // have to handle additions to them specially.
        if (parent instanceof IPackageFragment) {
            Object grandparent = internalGetParent(parent);
            // 1GE8SI6: ITPJUI:WIN98 - Rename is not shown in Packages View
            // avoid posting a refresh to an invisible parent
            if (parent.equals(fInput)) {
                postRefresh(parent, PARENT, element, runnables);
            } else {
                // refresh from grandparent if parent isn't visible yet
                if (fViewer.testFindItem(parent) == null)
                    postRefresh(grandparent, GRANT_PARENT, element, runnables);
                else {
                    postRefresh(parent, PARENT, element, runnables);
                }
            }
            return true;
        } else {
            if (element instanceof IPackageFragmentRoot
                    && ((IPackageFragmentRoot) element).getKind() != IPackageFragmentRoot.K_SOURCE) {
                // libs and class folders can show up twice (in library container or under project, and as resource at original location)
                IResource resource = element.getResource();
                if (resource != null) {
                    Object resourceParent = super.internalGetParent(resource);
                    if (resourceParent != null) {
                        IJavaProject proj = element.getJavaProject();
                        if (fShowLibrariesNode || !resourceParent.equals(proj)) {
                            postAdd(resourceParent, resource, runnables);
                        }
                    }
                }
            }
            postAdd(parent, element, runnables);
        }
    }

    if (elementType == IJavaElement.COMPILATION_UNIT || elementType == IJavaElement.CLASS_FILE) {
        if (kind == IJavaElementDelta.CHANGED) {
            // isStructuralCUChange already performed above
            postRefresh(element, ORIGINAL, element, runnables);
        }
        return false;
    }

    if (elementType == IJavaElement.PACKAGE_FRAGMENT_ROOT) {
        // the contents of an external JAR has changed
        if ((flags & IJavaElementDelta.F_ARCHIVE_CONTENT_CHANGED) != 0) {
            postRefresh(element, ORIGINAL, element, runnables);
            return false;
        }
        if ((flags & (IJavaElementDelta.F_CONTENT
                | IJavaElementDelta.F_CHILDREN)) == IJavaElementDelta.F_CONTENT) {
            // TODO: This should never be true for folders (F_CONTENT is only for files)
            // content change, without children info (for example resource added/removed to class folder package)
            postRefresh(internalGetParent(element), PARENT, element, runnables);
            return true;
        }

        // the source attachment of a JAR has changed
        if ((flags & (IJavaElementDelta.F_SOURCEATTACHED | IJavaElementDelta.F_SOURCEDETACHED)) != 0)
            postUpdateIcon(element, runnables);

        if (isClassPathChange(delta)) {
            // throw the towel and do a full refresh of the affected java project.
            postRefresh(element.getJavaProject(), PROJECT, element, runnables);
            return true;
        }
    }

    handleAffectedChildren(delta, element, runnables);
    return false;
}

From source file:com.siteview.mde.internal.core.JavaElementChangeListener.java

License:Open Source License

private void handleDelta(IJavaElementDelta delta) {
    IJavaElement element = delta.getElement();

    if (element instanceof IJavaModel) {
        handleChildDeltas(delta);/* w  w  w . j  a  v  a  2s  .  c o m*/
    } else if (element instanceof IJavaProject) {
        if (isInterestingProject((IJavaProject) element)) {
            if (delta.getKind() == IJavaElementDelta.CHANGED) {
                handleChildDeltas(delta);
            } else if (delta.getKind() == IJavaElementDelta.ADDED) {
                updateTable(element);
            }
        }
    } else if (element instanceof IPackageFragmentRoot) {
        handleChildDeltas(delta);
    }
}