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

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

Introduction

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

Prototype

int JAVA_PROJECT

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

Click Source Link

Document

Constant representing a Java project.

Usage

From source file:org.jboss.tools.servers.wildfly.swarm.core.internal.ClasspathChangeListener.java

License:Open Source License

private void visit(IJavaElementDelta delta) {
    IJavaElement el = delta.getElement();
    switch (el.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        for (IJavaElementDelta c : delta.getAffectedChildren()) {
            visit(c);// w  w w .j av a 2  s . c o m
        }
        break;
    case IJavaElement.JAVA_PROJECT:
        IJavaProject javaProject = (IJavaProject) el;
        if (isClasspathChanged(delta)) {
            detectionJob.analyze(javaProject);
        }
        break;
    default:
        break;
    }
}

From source file:org.jboss.tools.ws.creation.core.utils.JBossWSCreationUtils.java

License:Open Source License

public static ICompilationUnit findUnitByFileName(IJavaElement javaElem, String filePath) throws Exception {
    ICompilationUnit unit = null;/*from  ww w . j av  a2  s .co m*/

    if (!javaElem.getOpenable().isOpen()) {
        javaElem.getOpenable().open(null);
    }

    IJavaElement[] elems = null;

    if (javaElem instanceof IParent) {
        IParent parent = (IParent) javaElem;
        elems = parent.getChildren();
    }

    if (elems == null) {
        return null;
    }

    for (IJavaElement elem : elems) {
        if (elem.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT) {
            IPackageFragmentRoot root = (IPackageFragmentRoot) elem;

            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                unit = findUnitByFileName(elem, filePath);

                if (unit != null) {
                    return unit;
                }
            }
        } else if ((elem.getElementType() == IJavaElement.PACKAGE_FRAGMENT)
                || (elem.getElementType() == IJavaElement.JAVA_PROJECT)) {
            unit = findUnitByFileName(elem, filePath);

            if (unit != null) {
                return unit;
            }
        } else if (elem.getElementType() == IJavaElement.COMPILATION_UNIT) {
            ICompilationUnit compUnit = (ICompilationUnit) elem;

            if (compUnit.getPath().toString().equals(filePath)) {
                compUnit.open(null);

                return compUnit;
            }
        }
    }

    return null;
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementChangedBuildJob.java

License:Open Source License

protected IStatus run(final IProgressMonitor progressMonitor) {
    final long startTime = new Date().getTime();
    IJavaElement element = null;//from  w  w w  .  j  a v  a 2  s. c om
    try {
        progressMonitor.beginTask("Building JAX-RS Metamodel", 3 * SCALE);
        progressMonitor.worked(SCALE);
        Logger.debug("Building JAX-RS Metamodel after: {}", event);
        if (progressMonitor.isCanceled()) {
            return Status.CANCEL_STATUS;
        }
        // scan and filter delta, retrieve a list of java changes
        final List<JavaElementChangedEvent> affectedJavaElements = new JavaElementDeltaScanner()
                .scanAndFilterEvent(event, new SubProgressMonitor(progressMonitor, SCALE));
        if (affectedJavaElements.isEmpty()) {
            Logger.debug("* No relevant affected element to process *");
            return Status.OK_STATUS;
        }
        if (progressMonitor.isCanceled()) {
            return Status.CANCEL_STATUS;
        }
        for (JavaElementChangedEvent delta : affectedJavaElements) {
            element = delta.getElement();
            final IJavaProject javaProject = element.getJavaProject();
            final JaxrsMetamodel metamodel = JaxrsMetamodelLocator.get(javaProject, true);
            // prevent NPE when opening a closed project (ie, there's no metamodel yet).
            if (metamodel != null) {
                try {
                    metamodel.processJavaElementChange(delta, progressMonitor);
                    if (progressMonitor.isCanceled()) {
                        return Status.CANCEL_STATUS;
                    }
                } catch (Exception e) {
                    final IStatus status = Logger.error("Failed to build or refresh the JAX-RS metamodel", e);
                    metamodel.setBuildStatus(status);
                    return status;
                } finally {
                    if (Logger.isDebugEnabled()) {
                        Logger.debug(metamodel.getStatus());
                    }
                }
            }
        }
    } catch (Exception e) {
        Logger.error("Failed to process Java element change", e);
        if (element != null) {
            return new Status(IStatus.ERROR, JBossJaxrsCorePlugin.PLUGIN_ID,
                    "Failed to build or refresh the JAX-RS metamodel while processing "
                            + element.getElementName() + " in project "
                            + element.getAncestor(IJavaElement.JAVA_PROJECT).getElementName(),
                    e);
        } else {
            return new Status(IStatus.ERROR, JBossJaxrsCorePlugin.PLUGIN_ID,
                    "Failed to build or refresh the JAX-RS metamodel while processing a change in the Java Model",
                    e);
        }
    } finally {
        progressMonitor.done();
        long endTime = new Date().getTime();
        if (Logger.isDebugEnabled()) {
            Logger.debug("Java element changes processed in {} ms.", (endTime - startTime));
        }

    }
    return Status.OK_STATUS;
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementChangedBuildTask.java

License:Open Source License

public IStatus execute(final IProgressMonitor progressMonitor) {
    final long startTime = new Date().getTime();
    IJavaElement element = null;/*from w  w  w.  jav  a 2s  .  c  o m*/
    try {
        progressMonitor.beginTask("Building JAX-RS Metamodel", 3 * SCALE);
        progressMonitor.worked(SCALE);
        Logger.debug("Building JAX-RS Metamodel after: {}", event);
        if (progressMonitor.isCanceled()) {
            return Status.CANCEL_STATUS;
        }
        // scan and filter delta, retrieve a list of java changes
        final List<JavaElementChangedEvent> affectedJavaElements = new JavaElementDeltaScanner()
                .scanAndFilterEvent(event, new SubProgressMonitor(progressMonitor, SCALE));
        if (affectedJavaElements.isEmpty()) {
            Logger.debug("* No relevant affected element to process *");
            return Status.OK_STATUS;
        }
        if (progressMonitor.isCanceled()) {
            return Status.CANCEL_STATUS;
        }
        for (JavaElementChangedEvent delta : affectedJavaElements) {
            element = delta.getElement();
            final IJavaProject javaProject = element.getJavaProject();
            final JaxrsMetamodel metamodel = JaxrsMetamodelLocator.get(javaProject, true);
            // prevent NPE when opening a closed project (ie, there's no metamodel yet).
            if (metamodel != null) {
                try {
                    metamodel.processJavaElementChange(delta, progressMonitor);
                    if (progressMonitor.isCanceled()) {
                        return Status.CANCEL_STATUS;
                    }
                } catch (Throwable e) {
                    final IStatus status = Logger.error("Failed to build or refresh the JAX-RS metamodel", e);
                    metamodel.setBuildStatus(status);
                    return status;
                } finally {
                    if (Logger.isDebugEnabled()) {
                        Logger.debug(metamodel.getStatus());
                    }
                }
            }
        }
    } catch (Exception e) {
        if (element != null) {
            return new Status(IStatus.ERROR, JBossJaxrsCorePlugin.PLUGIN_ID,
                    "Failed to build or refresh the JAX-RS metamodel while processing "
                            + element.getElementName() + " in project "
                            + element.getAncestor(IJavaElement.JAVA_PROJECT).getElementName(),
                    e);
        } else {
            return new Status(IStatus.ERROR, JBossJaxrsCorePlugin.PLUGIN_ID,
                    "Failed to build or refresh the JAX-RS metamodel while processing a change in the Java Model",
                    e);
        }
    } finally {
        progressMonitor.done();
        long endTime = new Date().getTime();
        if (Logger.isDebugEnabled()) {
            Logger.debug("Java element changes processed in {} ms.", (endTime - startTime));
        }

    }
    return Status.OK_STATUS;
}

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  v a2  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;
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.java

License:Open Source License

/**
 * Process a single Java Element change/*from ww  w. ja v  a2 s.  co  m*/
 * 
 * @param delta
 * @param progressMonitor
 * @throws CoreException
 */
public void processJavaElementChange(final JavaElementChangedEvent delta,
        final IProgressMonitor progressMonitor) throws CoreException {
    try {
        Logger.debug("Processing {}", delta);
        readWriteLock.writeLock().lock();
        final IJavaElement element = delta.getElement();
        final CompilationUnit ast = delta.getCompilationUnitAST();
        final int deltaKind = delta.getKind();
        switch (element.getElementType()) {
        case IJavaElement.JAVA_PROJECT:
        case IJavaElement.PACKAGE_FRAGMENT_ROOT:
            processProject(progressMonitor);
            break;
        case IJavaElement.ANNOTATION:
            processJavaAnnotationChange((IAnnotation) element, deltaKind, ast, progressMonitor);
            break;
        case IJavaElement.COMPILATION_UNIT:
        case IJavaElement.TYPE:
        case IJavaElement.METHOD:
        case IJavaElement.FIELD:
            processJavaElementChange(element, deltaKind, ast, progressMonitor);
            break;
        default:
            // ignore
            break;
        }
    } finally {
        this.initializing = false;
        progressMonitor.done();
        readWriteLock.writeLock().unlock();
        setBuildStatus(Status.OK_STATUS);
        Logger.debug("Done processing Java changes: " + getStatus());
    }
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.java

License:Open Source License

/**
 * Search for the JAX-RS java-based elements matching the given
 * {@link IJavaElement} in the metamodel.
 * /*from w  ww .ja v  a 2  s .  c om*/
 * @param element
 * @param ast
 * @return the matching JAX-RS Elements or an empty set if no JAX-RS
 *         element matched in the metamodel.
 * @throws JavaModelException
 */
private List<IJaxrsElement> searchJaxrsElements(final IJavaElement element) throws JavaModelException {
    if (element == null) {
        return Collections.emptyList();
    }
    try {
        readWriteLock.readLock().lock();
        final List<IJaxrsElement> result = new ArrayList<IJaxrsElement>();
        final Term javaElementTerm = new Term(FIELD_JAVA_ELEMENT, Boolean.TRUE.toString());
        switch (element.getElementType()) {
        case IJavaElement.JAVA_PROJECT:
            final Term javaProjectIdentifier = new Term(FIELD_JAVA_PROJECT_IDENTIFIER,
                    element.getHandleIdentifier());
            result.addAll(searchJaxrsElements(javaElementTerm, javaProjectIdentifier));
            break;
        case IJavaElement.PACKAGE_FRAGMENT_ROOT:
            final Term packageFragmentRootIdentifier = new Term(FIELD_PACKAGE_FRAGMENT_ROOT_IDENTIFIER,
                    element.getHandleIdentifier());
            result.addAll(searchJaxrsElements(javaElementTerm, packageFragmentRootIdentifier));
            break;
        case IJavaElement.COMPILATION_UNIT:
            final Term compilationUnitTerm = new Term(FIELD_COMPILATION_UNIT_IDENTIFIER,
                    element.getHandleIdentifier());
            result.addAll(searchJaxrsElements(javaElementTerm, compilationUnitTerm));
            break;
        case IJavaElement.TYPE:
        case IJavaElement.FIELD:
        case IJavaElement.METHOD:
            final IJaxrsElement foundElement = this.elements.get(element.getHandleIdentifier());
            if (foundElement != null) {
                result.add(foundElement);
            }
            break;
        }
        return result;
    } finally {
        readWriteLock.readLock().unlock();
    }

}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsMetamodel.java

License:Open Source License

/**
 * Searches and returns all JAX-RS Java-based Elements matching the given
 * {@link IJavaElement}, which can be {@link Annotation} {@link IProject},
 * {@link IPackageFragmentRoot}, {@link ICompilationUnit} or an
 * {@link IMember}//  w w w . ja  v  a  2  s.  c o m
 * 
 * @param javaElement
 *            the java element
 * 
 * @return the JAX-RS Elements matching the given Java Element or empty list
 *         if none matches.
 */
public <T extends IJaxrsElement> Set<T> findElements(final IJavaElement javaElement) {
    if (javaElement == null) {
        return Collections.emptySet();
    }
    try {
        readWriteLock.readLock().lock();
        final String identifier = javaElement.getHandleIdentifier();
        switch (javaElement.getElementType()) {
        case IJavaElement.JAVA_PROJECT:
            return searchJaxrsElements(new Term(FIELD_JAVA_PROJECT_IDENTIFIER, identifier));
        case IJavaElement.PACKAGE_FRAGMENT_ROOT:
            return searchJaxrsElements(new Term(FIELD_PACKAGE_FRAGMENT_ROOT_IDENTIFIER, identifier));
        case IJavaElement.COMPILATION_UNIT:
            return searchJaxrsElements(new Term(FIELD_COMPILATION_UNIT_IDENTIFIER, identifier));
        default:
            return searchJaxrsElements(LuceneDocumentFactory.getIdentifierTerm(javaElement));
        }
    } finally {
        readWriteLock.readLock().unlock();
    }
}

From source file:org.jetbrains.kotlin.wizards.NewUnitWizardPage.java

License:Apache License

private String getSourceFolderFromSelection() {
    String defaultFolder = DEFAULT_SOURCE_FOLDER;

    if (selection.isEmpty()) {
        return defaultFolder;
    }/* www  .j  av  a 2  s  . c om*/

    Object selectedObject = selection.getFirstElement();

    if (selectedObject instanceof IJavaElement) {
        IJavaElement selectedJavaElement = (IJavaElement) selectedObject;
        switch (selectedJavaElement.getElementType()) {
        case IJavaElement.JAVA_PROJECT:
            return getDefaultSrcByProject((IJavaProject) selectedJavaElement);

        case IJavaElement.PACKAGE_FRAGMENT_ROOT:
            return selectedJavaElement.getPath().toPortableString();

        case IJavaElement.PACKAGE_FRAGMENT:
        case IJavaElement.COMPILATION_UNIT:
            return selectedJavaElement.getPath().uptoSegment(2).toPortableString();
        }
    } else if (selectedObject instanceof IResource) {
        IResource selectedResource = (IResource) selectedObject;
        switch (selectedResource.getType()) {
        case IResource.FOLDER:
            return getDefaultSrcByProject(JavaCore.create(selectedResource.getProject()));

        case IResource.FILE:
            return selectedResource.getFullPath().uptoSegment(2).toPortableString();
        }
    }

    return defaultFolder;
}

From source file:org.limy.eclipse.common.jdt.LimyJavaUtils.java

License:Open Source License

/**
 * JavavfSJavat@C? results i[?B//from w  w w .  ja  v a2 s  . c  o  m
 * @param results i[?
 * @param javaElement Javavf
 * @throws CoreException RAO
 */
private static void appendForIParent(Collection<IJavaElement> results, IJavaElement javaElement)
        throws CoreException {

    int type = javaElement.getElementType();
    if (type == IJavaElement.JAVA_PROJECT || type == IJavaElement.PACKAGE_FRAGMENT_ROOT
            || type == IJavaElement.PACKAGE_FRAGMENT) {

        IParent parent = (IParent) javaElement;
        for (IJavaElement child : parent.getChildren()) {
            // JavapbP?[W???ATupbP?[Wr
            appendAllJavas(results, child);
        }
    }
}