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

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

Introduction

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

Prototype

IJavaElement getParent();

Source Link

Document

Returns the element directly containing this element, or null if this element has no parent.

Usage

From source file:org.eclipse.edt.debug.core.java.filters.ClasspathEntryFilter.java

License:Open Source License

/**
 * Subclasses are free to override this to provide more specific caching.
 *//*from w w  w .j a  v  a 2  s.  c o  m*/
protected void processContainerEntry(IClasspathEntry entry, IJavaProject project,
        Map<String, Object> classMap) {
    if (project == null) {
        // Can't calulate the entry without an IJavaProject.
        return;
    }

    IPackageFragmentRoot[] roots = project.findPackageFragmentRoots(entry);
    for (IPackageFragmentRoot root : roots) {
        try {
            for (IJavaElement element : root.getChildren()) {
                if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
                    try {
                        IPackageFragment pkg = (IPackageFragment) element;
                        StringBuilder pkgBuf = new StringBuilder(50);
                        IJavaElement current = pkg;
                        while (current != null && current.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
                            if (pkgBuf.length() > 0) {
                                pkgBuf.insert(0, '.');
                            }
                            pkgBuf.insert(0, current.getElementName());
                            current = current.getParent();
                        }

                        String pkgString = pkgBuf.toString();
                        IClassFile[] classes = pkg.getClassFiles();
                        for (IClassFile file : classes) {
                            String className = file.getElementName();
                            className = className.substring(0, className.length() - 6); // remove ".class"
                            StringBuilder buf = new StringBuilder(pkgString.length() + className.length() + 1);
                            buf.append(pkgString);
                            if (pkgString.length() > 0) {
                                buf.append('.');
                            }
                            buf.append(className);
                            classMap.put(buf.toString(), null);
                        }
                    } catch (JavaModelException jme) {
                        EDTDebugCorePlugin.log(jme);
                    }
                }
            }
        } catch (JavaModelException jme) {
            EDTDebugCorePlugin.log(jme);
        }
    }
}

From source file:org.eclipse.edt.debug.core.java.filters.WorkspaceProjectClassFilter.java

License:Open Source License

protected void compilationUnitRemoved(IJavaElementDelta delta, ICompilationUnit cu) throws JavaModelException {
    if (cu.exists()) {
        for (IType type : cu.getAllTypes()) {
            commonClassesToFilter.remove(type.getFullyQualifiedName());
        }//from  www  .j a v  a2 s  . c o m
    } else {
        // It's already been deleted, so we can't get any of its children. We'll remove the main type, then iterate over the keys
        // to see if there's any inner classes to remove.
        StringBuilder buf = new StringBuilder(50);
        IJavaElement current = cu.getParent();
        while (current != null && current.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
            if (buf.length() > 0) {
                buf.insert(0, '.');
            }
            buf.insert(0, current.getElementName());
            current = current.getParent();
        }
        if (buf.length() > 0) {
            buf.append('.');
        }
        buf.append(cu.getElementName().substring(0, cu.getElementName().length() - 5)); // Remove ".java"
        commonClassesToFilter.remove(buf.toString());

        buf.append('$');
        String keyPrefix = buf.toString();
        for (Iterator<String> it = commonClassesToFilter.keySet().iterator(); it.hasNext();) {
            if (it.next().startsWith(keyPrefix)) {
                it.remove();
            }
        }
    }
}

From source file:org.eclipse.edt.debug.core.java.filters.WorkspaceProjectClassFilter.java

License:Open Source License

protected void packageFragmentRemoved(IJavaElementDelta delta, IPackageFragment fragment)
        throws JavaModelException {
    if (fragment.exists()) {
        for (ICompilationUnit cu : fragment.getCompilationUnits()) {
            compilationUnitRemoved(delta, cu);
        }// w w  w  .j  ava  2  s.  c  o m
    } else {
        // It's already been deleted, so we can't get any of its children. We'll iterate over the keys removing those inside this fragment.
        StringBuilder buf = new StringBuilder(50);
        IJavaElement current = fragment;
        while (current != null && current.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
            if (buf.length() > 0) {
                buf.insert(0, '.');
            }
            buf.insert(0, current.getElementName());
            current = current.getParent();
        }

        if (buf.length() > 0) {
            buf.append('.');
            String keyPrefix = buf.toString();
            for (Iterator<String> it = commonClassesToFilter.keySet().iterator(); it.hasNext();) {
                if (it.next().startsWith(keyPrefix)) {
                    it.remove();
                }
            }
        }
    }
}

From source file:org.eclipse.flux.jdt.services.NavigationService.java

License:Open Source License

public JSONObject computeNavigation(String username, String requestorResourcePath, int offset, int length) {
    try {//from  w w w.j a v  a2 s . com
        ICompilationUnit liveEditUnit = liveEditUnits.getLiveEditUnit(username, requestorResourcePath);
        if (liveEditUnit != null) {
            IJavaElement[] elements = liveEditUnit.codeSelect(offset, length);

            if (elements != null && elements.length > 0) {
                JSONObject result = new JSONObject();

                IJavaElement element = elements[0];
                IResource resource = element.getResource();

                //if the selected element corresponds to a resource in workspace, navigate to it
                if (resource != null && resource.getProject() != null) {
                    String projectName = resource.getProject().getName();
                    String resourcePath = resource.getProjectRelativePath().toString();

                    result.put("project", projectName);
                    result.put("resource", resourcePath);

                    if (element instanceof ISourceReference) {
                        ISourceRange nameRange = ((ISourceReference) element).getNameRange();
                        result.put("offset", nameRange.getOffset());
                        result.put("length", nameRange.getLength());
                    }

                    return result;
                }
                //walk up the java model until we reach a class file
                while (element != null && !(element instanceof IClassFile)) {
                    element = element.getParent();
                }

                if (element instanceof IClassFile) {
                    IClassFile classFile = (IClassFile) element;
                    ISourceRange sourceRange = classFile.getSourceRange();
                    if (sourceRange != null) {
                        String projectName = element.getJavaProject().getProject().getName();
                        String resourcePath = classFile.getParent().getElementName().replace('.', '/');
                        resourcePath = "classpath:/" + resourcePath + "/" + classFile.getElementName();

                        result.put("project", projectName);
                        result.put("resource", resourcePath);

                        return result;
                    }
                }
                //we don't know how to navigate to this element
            }
        }

    } catch (JavaModelException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

From source file:org.eclipse.fx.ide.jdt.ui.internal.refactoring.RefactoringUtil.java

License:Open Source License

/**
 * Build thh fully qualified name of a resource.
 * /*from  w  ww  . j  ava 2  s .c o m*/
 * @param resource
 *            resource
 * @return fully qualified name
 */
public static String buildFullyQualifiedName(IResource resource) {
    IJavaElement je = JavaCore.create(resource);
    if (je != null) {
        try {
            IJavaProject p = je.getJavaProject();
            IType t = p.findType(je.getParent().getElementName(),
                    je.getElementName().replace("." + resource.getFileExtension(), ""));
            if (t == null) {
                System.err.println("Unable to construct FQN from '" + je.getParent().getElementName() + "."
                        + je.getElementName().replace("." + resource.getFileExtension(), "") + "'");
                return "";
            }
            return t.getFullyQualifiedName();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return "";
        }
    } else {
        return getNonJavaElementName(resource, resource.getName());
    }
}

From source file:org.eclipse.gmt.modisco.jm2t.modelconverter.javamodisco.internal.core.DiscovererFactory.java

License:Open Source License

public IExtendedDiscover createDiscoverer(IJavaElement element) {
    int type = element.getElementType();
    switch (type) {
    case IJavaElement.JAVA_PROJECT:
        return new ExtendedDiscoverJavaModelFromJavaProject((IJavaProject) element);
    case IJavaElement.COMPILATION_UNIT:
        return new ExtendedDiscoverJavaModelFromCompilationUnit((ICompilationUnit) element);
    case IJavaElement.CLASS_FILE:
        return new ExtendedDiscoverJavaModelFromClassFile((IClassFile) element);
    case IJavaElement.TYPE:
        return createDiscoverer(element.getParent());
    case IJavaElement.PACKAGE_FRAGMENT:
        IPackageFragment packageFragment = (IPackageFragment) element;
        break;//from  w  w w. jav  a 2  s  .c om
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        // src folder is selected
        IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) element;
        return createDiscoverer(packageFragmentRoot.getParent());
    }
    return null;
}

From source file:org.eclipse.jdt.internal.core.CopyResourceElementsOperation.java

License:Open Source License

private IResource getResource(IJavaElement element) {
    if (element == null)
        return null;
    if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
        String pkgName = element.getElementName();
        int firstDot = pkgName.indexOf('.');
        if (firstDot != -1) {
            element = ((IPackageFragmentRoot) element.getParent())
                    .getPackageFragment(pkgName.substring(0, firstDot));
        }/* www .  java  2  s.co  m*/
    }
    return element.getResource();
}

From source file:org.eclipse.jdt.internal.core.JavaProject.java

License:Open Source License

public boolean isOnClasspath(IJavaElement element) {
    IClasspathEntry[] rawClasspath;/*from w ww  . j a v a 2  s  .  co m*/
    try {
        rawClasspath = getRawClasspath();
    } catch (JavaModelException e) {
        return false; // not a Java project
    }
    int elementType = element.getElementType();
    boolean isPackageFragmentRoot = false;
    boolean isFolderPath = false;
    boolean isSource = false;
    switch (elementType) {
    case IJavaElement.JAVA_MODEL:
        return false;
    case IJavaElement.JAVA_PROJECT:
        break;
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        isPackageFragmentRoot = true;
        break;
    case IJavaElement.PACKAGE_FRAGMENT:
        isFolderPath = !((IPackageFragmentRoot) element.getParent()).isArchive();
        break;
    case IJavaElement.COMPILATION_UNIT:
        isSource = true;
        break;
    default:
        isSource = element.getAncestor(IJavaElement.COMPILATION_UNIT) != null;
        break;
    }
    IPath elementPath = element.getPath();

    // first look at unresolved entries
    int length = rawClasspath.length;
    for (int i = 0; i < length; i++) {
        IClasspathEntry entry = rawClasspath[i];
        switch (entry.getEntryKind()) {
        case IClasspathEntry.CPE_LIBRARY:
        case IClasspathEntry.CPE_PROJECT:
        case IClasspathEntry.CPE_SOURCE:
            if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, entry))
                return true;
            break;
        }
    }

    // no need to go further for compilation units and elements inside a compilation unit
    // it can only be in a source folder, thus on the raw classpath
    if (isSource)
        return false;

    // https://bugs.eclipse.org/bugs/show_bug.cgi?id=304081
    // All the resolved classpath entries need to be considered, including the referenced classpath entries
    IClasspathEntry[] resolvedClasspath = null;
    try {
        resolvedClasspath = getResolvedClasspath();
    } catch (JavaModelException e) {
        return false; // Perhaps, not a Java project
    }

    for (int index = 0; index < resolvedClasspath.length; index++) {
        if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, resolvedClasspath[index]))
            return true;
    }

    return false;
}

From source file:org.eclipse.jdt.internal.core.SourceMapper.java

License:Open Source License

/**
 * Returns the type with the given <code>typeName</code>.  Returns inner classes
 * as well./*  ww  w.  jav  a  2 s.c om*/
 */
protected IType getType(String typeName) {
    if (typeName.length() == 0) {
        IJavaElement classFile = this.binaryType.getParent();
        String classFileName = classFile.getElementName();
        StringBuffer newClassFileName = new StringBuffer();
        int lastDollar = classFileName.lastIndexOf('$');
        for (int i = 0; i <= lastDollar; i++)
            newClassFileName.append(classFileName.charAt(i));
        newClassFileName.append(Integer.toString(this.anonymousCounter));
        PackageFragment pkg = (PackageFragment) classFile.getParent();
        return new BinaryType(new ClassFile(pkg, newClassFileName.toString()), typeName);
    } else if (this.binaryType.getElementName().equals(typeName))
        return this.binaryType;
    else
        return this.binaryType.getType(typeName);
}

From source file:org.eclipse.jem.internal.adapters.jdom.JavaReflectionSynchronizer.java

License:Open Source License

protected String getFullNameFromElement(IJavaElement element) {
    // TODO: may want to throw IllegalArgumentException here? 
    // if (element == null) throw new IllegalArgumentException("Java Element parameter may not be null");
    String name = element.getElementName();
    if (name.length() <= 5 || !name.substring(name.length() - 5).equals(".java")) { //$NON-NLS-1$
        // Should not be here, 
        Logger logger = JavaPlugin.getDefault().getLogger();
        if (logger.isLoggingLevel(Level.FINE))
            logger.log("Invalid .java file: " + name, Level.FINE); //$NON-NLS-1$
        // Make a guess, at worst case, nothing will come out of this.
        int index = name.lastIndexOf("."); //$NON-NLS-1$
        if (index >= 0)
            name = name.substring(0, index) + ".java"; // rename the extension to .java //$NON-NLS-1$
        else/*from w w  w  .j ava  2 s  .  co m*/
            name = name + ".java"; //$NON-NLS-1$
    }
    if (element.getParent().getElementName() == null || element.getParent().getElementName().length() == 0)
        return name.substring(0, name.length() - 5);
    else
        return element.getParent().getElementName() + "." + name.substring(0, name.length() - 5); //$NON-NLS-1$
}