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:com.codenvy.ide.ext.java.server.internal.core.ModelUpdater.java

License:Open Source License

/**
 * Processing for an element that has been added:<ul>
 * <li>If the element is a project, do nothing, and do not process
 * children, as when a project is created it does not yet have any
 * natures - specifically a java nature.
 * <li>If the elemet is not a project, process it as added (see
 * <code>basicElementAdded</code>.
 * </ul>/*from w  w w.  j av  a 2 s.  com*/
 */
protected void elementAdded(Openable element) {

    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
        addToParentInfo(element);
        this.projectsToUpdate.add(element);
    } 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);
    }

    switch (elementType) {
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        // when a root is added, and is on the classpath, the project must be updated
        this.projectsToUpdate.add(element.getJavaProject());
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        // get rid of package fragment cache
        JavaProject project = (JavaProject) element.getJavaProject();
        project.resetCaches();
        break;
    }
}

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

License:Open Source License

/**
 * Generic processing for a removed element:<ul>
 * <li>Close the element, removing its structure from the cache
 * <li>Remove the element from its parent's cache of children
 * <li>Add a REMOVED entry in the delta
 * </ul>//  w  w  w  .  j  a va 2 s.c o m
 */
protected void elementRemoved(Openable element) {

    if (element.isOpen()) {
        close(element);
    }
    removeFromParentInfo(element);
    int elementType = element.getElementType();

    switch (elementType) {
    case IJavaElement.JAVA_MODEL:
        element.manager.getIndexManager().reset();
        break;
    case IJavaElement.JAVA_PROJECT:
        JavaModelManager manager = element.manager;
        JavaProject javaProject = (JavaProject) element;
        manager.removePerProjectInfo(javaProject, true /* remove external jar files indexes and timestamps*/);
        manager.containerRemove(javaProject);
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        this.projectsToUpdate.add(element.getJavaProject());
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        // get rid of package fragment cache
        JavaProject project = (JavaProject) element.getJavaProject();
        project.resetCaches();
        break;
    }
}

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.
 *//*from w w  w.  j  a  va 2s.c  om*/
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.NameLookup.java

License:Open Source License

/**
 * Returns the package fragment whose path matches the given
 * (absolute) path, or <code>null</code> if none exist. The domain of
 * the search is bounded by the classpath of the <code>IJavaProject</code>
 * this <code>NameLookup</code> was obtained from.
 * The path can be:/*from  w  ww .  java  2s . c o m*/
 * - internal to the workbench: "/Project/src"
 * - external to the workbench: "c:/jdk/classes.zip/java/lang"
 */
public IPackageFragment findPackageFragment(IPath path) {
    if (!path.isAbsolute()) {
        throw new IllegalArgumentException(Messages.path_mustBeAbsolute);
    }
    /*
     * TODO (jerome) this code should rather use the package fragment map to find the candidate package, then
     * check if the respective enclosing root maps to the one on this given IPath.
     */
    IResource possibleFragment = ResourcesPlugin.getWorkspace().getRoot().findMember(path);
    if (possibleFragment == null) {
        //external jar
        for (int i = 0; i < this.packageFragmentRoots.length; i++) {
            IPackageFragmentRoot root = this.packageFragmentRoots[i];
            if (!root.isExternal()) {
                continue;
            }
            IPath rootPath = root.getPath();
            if (rootPath.isPrefixOf(path)) {
                String name = path.toOSString();
                // + 1 is for the File.separatorChar
                name = name.substring(rootPath.toOSString().length() + 1, name.length());
                name = name.replace(File.separatorChar, '.');
                IJavaElement[] list = null;
                try {
                    list = root.getChildren();
                } catch (JavaModelException npe) {
                    continue; // the package fragment root is not present;
                }
                int elementCount = list.length;
                for (int j = 0; j < elementCount; j++) {
                    IPackageFragment packageFragment = (IPackageFragment) list[j];
                    if (nameMatches(name, packageFragment, false)) {
                        return packageFragment;
                    }
                }
            }
        }
    } else {
        IJavaElement fromFactory = JavaCore.create(possibleFragment);
        if (fromFactory == null) {
            return null;
        }
        switch (fromFactory.getElementType()) {
        case IJavaElement.PACKAGE_FRAGMENT:
            return (IPackageFragment) fromFactory;
        case IJavaElement.JAVA_PROJECT:
            // default package in a default root
            JavaProject project = (JavaProject) fromFactory;
            try {
                IClasspathEntry entry = project.getClasspathEntryFor(path);
                if (entry != null) {
                    IPackageFragmentRoot root = project.getPackageFragmentRoot(project.getResource());
                    Object defaultPkgRoot = this.packageFragments.get(CharOperation.NO_STRINGS);
                    if (defaultPkgRoot == null) {
                        return null;
                    }
                    if (defaultPkgRoot instanceof PackageFragmentRoot && defaultPkgRoot.equals(root))
                        return ((PackageFragmentRoot) root).getPackageFragment(CharOperation.NO_STRINGS);
                    else {
                        IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) defaultPkgRoot;
                        for (int i = 0; i < roots.length; i++) {
                            if (roots[i].equals(root)) {
                                return ((PackageFragmentRoot) root)
                                        .getPackageFragment(CharOperation.NO_STRINGS);
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                return null;
            }
            return null;
        case IJavaElement.PACKAGE_FRAGMENT_ROOT:
            return ((PackageFragmentRoot) fromFactory).getPackageFragment(CharOperation.NO_STRINGS);
        }
    }
    return null;
}

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

License:Open Source License

/**
 * Add an element to the java search scope.
 *
 * @param element/*from  w  w w  . java 2s . c  o m*/
 *         The element we want to add to current java search scope
 * @throws org.eclipse.jdt.core.JavaModelException
 *         May happen if some Java Model info are not available
 */
public void add(IJavaElement element) throws JavaModelException {
    IPath containerPath = null;
    String containerPathToString = null;
    PackageFragmentRoot root = null;
    int includeMask = SOURCES | APPLICATION_LIBRARIES | SYSTEM_LIBRARIES;
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        // a workspace sope should be used
        break;
    case IJavaElement.JAVA_PROJECT:
        add((JavaProject) element, null, includeMask, new HashSet(2), new HashSet(2), null);
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        root = (PackageFragmentRoot) element;
        IPath rootPath = root.internalPath();
        containerPath = root.getKind() == IPackageFragmentRoot.K_SOURCE ? root.getParent().getPath() : rootPath;
        containerPathToString = containerPath.getDevice() == null ? containerPath.toString()
                : containerPath.toOSString();
        IResource rootResource = root.resource();
        String projectPath = root.getJavaProject().getPath().toString();
        if (rootResource != null && rootResource.isAccessible()) {
            String relativePath = Util.relativePath(rootResource.getFullPath(), containerPath.segmentCount());
            add(projectPath, relativePath, containerPathToString, false/*not a package*/, null);
        } else {
            add(projectPath, "", containerPathToString, false/*not a package*/, null); //$NON-NLS-1$
        }
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        root = (PackageFragmentRoot) element.getParent();
        projectPath = root.getJavaProject().getPath().toString();
        if (root.isArchive()) {
            String relativePath = Util.concatWith(((PackageFragment) element).names, '/');
            containerPath = root.getPath();
            containerPathToString = containerPath.getDevice() == null ? containerPath.toString()
                    : containerPath.toOSString();
            add(projectPath, relativePath, containerPathToString, true/*package*/, null);
        } else {
            IResource resource = ((JavaElement) element).resource();
            if (resource != null) {
                if (resource.isAccessible()) {
                    containerPath = root.getKind() == IPackageFragmentRoot.K_SOURCE ? root.getParent().getPath()
                            : root.internalPath();
                } else {
                    // for working copies, get resource container full path
                    containerPath = resource.getParent().getFullPath();
                }
                containerPathToString = containerPath.getDevice() == null ? containerPath.toString()
                        : containerPath.toOSString();
                String relativePath = Util.relativePath(resource.getFullPath(), containerPath.segmentCount());
                add(projectPath, relativePath, containerPathToString, true/*package*/, null);
            }
        }
        break;
    default:
        // remember sub-cu (or sub-class file) java elements
        if (element instanceof IMember) {
            if (this.elements == null) {
                this.elements = new ArrayList();
            }
            this.elements.add(element);
        }
        root = (PackageFragmentRoot) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
        projectPath = root.getJavaProject().getPath().toString();
        String relativePath;
        if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
            containerPath = root.getParent().getPath();
            relativePath = Util.relativePath(getPath(element, false/*full path*/), 1/*remove project segment*/);
        } else {
            containerPath = root.internalPath();
            relativePath = getPath(element, true/*relative path*/).toString();
        }
        containerPathToString = containerPath.getDevice() == null ? containerPath.toString()
                : containerPath.toOSString();
        add(projectPath, relativePath, containerPathToString, false/*not a package*/, null);
    }

    if (root != null)
        addEnclosingProjectOrJar(
                root.getKind() == IPackageFragmentRoot.K_SOURCE ? root.getParent().getPath() : root.getPath());
}

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

License:Open Source License

private IPath getPath(IJavaElement element, boolean relativeToRoot) {
    switch (element.getElementType()) {
    case IJavaElement.JAVA_MODEL:
        return Path.EMPTY;
    case IJavaElement.JAVA_PROJECT:
        return element.getPath();
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        if (relativeToRoot)
            return Path.EMPTY;
        return element.getPath();
    case IJavaElement.PACKAGE_FRAGMENT:
        String relativePath = Util.concatWith(((PackageFragment) element).names, '/');
        return getPath(element.getParent(), relativeToRoot).append(new Path(relativePath));
    case IJavaElement.COMPILATION_UNIT:
    case IJavaElement.CLASS_FILE:
        return getPath(element.getParent(), relativeToRoot).append(new Path(element.getElementName()));
    default:/*from   w ww  .  j  av a 2s .  c om*/
        return getPath(element.getParent(), relativeToRoot);
    }
}

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;/*w  w w.  j av  a2 s  . com*/
    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.search.matching.MatchLocator.java

License:Open Source License

private boolean filterEnum(SearchMatch match) {

    // filter org.apache.commons.lang.enum package for projects above 1.5
    // https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264
    IJavaElement element = (IJavaElement) match.getElement();
    PackageFragment pkg = (PackageFragment) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
    if (pkg != null) {
        // enum was found in org.apache.commons.lang.enum at index 5
        if (pkg.names.length == 5 && pkg.names[4].equals("enum")) { //$NON-NLS-1$
            if (this.options == null) {
                IJavaProject proj = (IJavaProject) pkg.getAncestor(IJavaElement.JAVA_PROJECT);
                String complianceStr = proj.getOption(CompilerOptions.OPTION_Source, true);
                if (CompilerOptions.versionToJdkLevel(complianceStr) >= ClassFileConstants.JDK1_5)
                    return true;
            } else if (this.options.sourceLevel >= ClassFileConstants.JDK1_5) {
                return true;
            }/*from   w  w  w.ja va2  s  . c  o m*/
        }
    }
    return false;
}

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

License:Open Source License

private IType createTypeFromJar(String resourcePath, int separatorIndex) throws JavaModelException {
    // path to a class file inside a jar
    // Optimization: cache package fragment root handle and package handles
    if (this.lastPkgFragmentRootPath == null || this.lastPkgFragmentRootPath.length() > resourcePath.length()
            || !resourcePath.startsWith(this.lastPkgFragmentRootPath)) {
        String jarPath = resourcePath.substring(0, separatorIndex);
        IPackageFragmentRoot root = ((AbstractJavaSearchScope) this.scope).packageFragmentRoot(resourcePath,
                separatorIndex, jarPath);
        if (root == null)
            return null;
        this.lastPkgFragmentRootPath = jarPath;
        this.lastPkgFragmentRoot = root;
        this.packageHandles = new HashtableOfArrayToObject(5);
    }//w w w. j a  v a2s  . com
    // create handle
    String classFilePath = resourcePath.substring(separatorIndex + 1);
    String[] simpleNames = new Path(classFilePath).segments();
    String[] pkgName;
    int length = simpleNames.length - 1;
    if (length > 0) {
        pkgName = new String[length];
        System.arraycopy(simpleNames, 0, pkgName, 0, length);
    } else {
        pkgName = CharOperation.NO_STRINGS;
    }
    IPackageFragment pkgFragment = (IPackageFragment) this.packageHandles.get(pkgName);
    if (pkgFragment == null) {
        pkgFragment = ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName);
        // filter org.apache.commons.lang.enum package for projects above 1.5 
        // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264
        if (length == 5 && pkgName[4].equals("enum")) { //$NON-NLS-1$
            IJavaProject proj = (IJavaProject) pkgFragment.getAncestor(IJavaElement.JAVA_PROJECT);
            if (!proj.equals(this.lastProject)) {
                String complianceStr = proj.getOption(CompilerOptions.OPTION_Source, true);
                this.complianceValue = CompilerOptions.versionToJdkLevel(complianceStr);
                this.lastProject = proj;
            }
            if (this.complianceValue >= ClassFileConstants.JDK1_5)
                return null;
        }
        this.packageHandles.put(pkgName, pkgFragment);
    }
    return pkgFragment.getClassFile(simpleNames[length]).getType();
}

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

License:Open Source License

public static final boolean isExcluded(IJavaElement element) {
    int elementType = element.getElementType();
    switch (elementType) {
    case IJavaElement.JAVA_MODEL:
    case IJavaElement.JAVA_PROJECT:
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        return false;

    case IJavaElement.PACKAGE_FRAGMENT:
        PackageFragmentRoot root = (PackageFragmentRoot) element
                .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
        File resource = ((PackageFragment) element).resource();
        return resource != null
                && isExcluded(resource, root.fullInclusionPatternChars(), root.fullExclusionPatternChars());

    case IJavaElement.COMPILATION_UNIT:
        root = (PackageFragmentRoot) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
        resource = ((CompilationUnit) element).resource();
        if (resource == null)
            return false;
        if (isExcluded(resource, root.fullInclusionPatternChars(), root.fullExclusionPatternChars()))
            return true;
        return isExcluded(element.getParent());

    default://from   w  ww . j a  v  a2 s . com
        IJavaElement cu = element.getAncestor(IJavaElement.COMPILATION_UNIT);
        return cu != null && isExcluded(cu);
    }
}