List of usage examples for org.eclipse.jdt.core IJavaElementDelta getAnnotationDeltas
public IJavaElementDelta[] getAnnotationDeltas();
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementChangedListener.java
License:Open Source License
private void logDelta(final IJavaElementDelta delta, final int eventType) { final IJavaElement element = delta.getElement(); // skip as the project is closed final int deltaKind = retrieveDeltaKind(delta); final Flags flags = new Flags(delta.getFlags()); final CompilationUnit compilationUnitAST = null; final JavaElementChangedEvent event = new JavaElementChangedEvent(element, deltaKind, eventType, compilationUnitAST, flags);//from w ww . j a v a 2 s. c om Logger.trace("Event {}", event); // carry on with children elements. for (IJavaElementDelta affectedChild : delta.getAffectedChildren()) { logDelta(affectedChild, eventType); } for (IJavaElementDelta annotation : delta.getAnnotationDeltas()) { logDelta(annotation, eventType); } }
From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementDeltaScanner.java
License:Open Source License
/** * Recursively analyse the given Java Element Delta. * /*w w w.j a va 2 s.c o m*/ * @param delta * @param eventType * @throws CoreException * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=100267 */ private List<JavaElementChangedEvent> scanDelta(final IJavaElementDelta delta, final int eventType) throws CoreException { final List<JavaElementChangedEvent> events = new ArrayList<JavaElementChangedEvent>(); final IJavaElement element = delta.getElement(); // skip as the project is closed if (element == null) { Logger.debug("** skipping this build because the delta element is null **"); return Collections.emptyList(); } else if (element.getElementType() == IJavaElement.JAVA_PROJECT && !element.getJavaProject().getProject().isOpen() && delta.getFlags() != F_OPENED) { Logger.debug("** skipping this build because the java project is closed. **"); return Collections.emptyList(); } else if ((element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT)) { final IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) element; if (!packageFragmentRoot.isExternal() && (packageFragmentRoot.getResource() == null || !packageFragmentRoot.getResource().exists())) { return Collections.emptyList(); } } else if (element.getResource() == null || !element.getResource().exists()) { return Collections.emptyList(); } final int elementKind = element.getElementType(); final int deltaKind = retrieveDeltaKind(delta); final Flags flags = new Flags(delta.getFlags()); if (elementKind == JAVA_PROJECT) { final JavaElementChangedEvent event = new JavaElementChangedEvent(element, delta.getKind(), eventType, null, new Flags(delta.getFlags())); if (javaElementChangedEventFilter.apply(event)) { events.add(event); // skip anything below return events; } } final CompilationUnit compilationUnitAST = getCompilationUnitAST(delta); if (elementKind == COMPILATION_UNIT) { final ICompilationUnit compilationUnit = (ICompilationUnit) element; // compilationUnitAST is null when the given compilation unit'w // working copy is being commited (ie, Java Editor is being closed // for the given compilation unit, etc.) if (compilationUnit.exists() // see https://issues.jboss.org/browse/JBIDE-12760: compilationUnit may not exist && compilationUnit.isWorkingCopy() && compilationUnitAST != null) { // assuming possible changes in the method signatures (return type, // param types and param annotations). Other changes in methods // (renaming, adding/removing params) result in add+remove // events on the given method itself. if (requiresDiffsComputation(flags)) { for (IType type : compilationUnit.getAllTypes()) { for (IMethod javaMethod : type.getMethods()) { final JavaElementChangedEvent event = new JavaElementChangedEvent(javaMethod, CHANGED, eventType, compilationUnitAST, new Flags(F_SIGNATURE)); if (javaElementChangedEventFilter.apply(event)) { events.add(event); } } } } } } // element is part of the compilation unit else if (compilationUnitAST != null) { final JavaElementChangedEvent event = new JavaElementChangedEvent(element, deltaKind, eventType, compilationUnitAST, flags); if (javaElementChangedEventFilter.apply(event)) { events.add(event); } } // continue with children elements, both on annotations and other java // elements. for (IJavaElementDelta affectedChild : delta.getAffectedChildren()) { events.addAll(scanDelta(affectedChild, eventType)); } for (IJavaElementDelta annotation : delta.getAnnotationDeltas()) { events.addAll(scanDelta(annotation, eventType)); } return events; }