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.ajdt.core.parserbridge.AJCompilationUnitProblemFinder.java

License:Open Source License

private static boolean insideAdvice(CategorizedProblem categorizedProblem, CompilationUnit unit)
        throws JavaModelException {
    IJavaElement candidate = unit.getElementAt(categorizedProblem.getSourceStart());
    while (candidate != null && !(candidate instanceof ICompilationUnit)) {
        if (candidate instanceof AdviceElement) {
            return true;
        }/*  www. ja v  a2s.c  om*/
        candidate = candidate.getParent();
    }
    return false;
}

From source file:org.eclipse.ajdt.core.parserbridge.AJCompilationUnitProblemFinder.java

License:Open Source License

private static boolean insidePointcut(CategorizedProblem categorizedProblem, CompilationUnit unit)
        throws JavaModelException {
    IJavaElement candidate = unit.getElementAt(categorizedProblem.getSourceStart());
    while (candidate != null && !(candidate instanceof ICompilationUnit)) {
        if (candidate instanceof PointcutElement) {
            return true;
        }//from   w  w  w . j a v  a2 s  . c om
        candidate = candidate.getParent();
    }
    return false;
}

From source file:org.eclipse.ajdt.core.tests.model.BinaryWeavingSupportTest.java

License:Open Source License

public void testBug160236() throws Exception {
    IProject project = createPredefinedProject("bug160236"); //$NON-NLS-1$
    AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(project);

    AJRelationshipType[] rels = new AJRelationshipType[] { AJRelationshipManager.ADVISED_BY };
    List allRels = model.getRelationshipsForProject(rels);
    boolean found1 = false;
    boolean found2 = false;
    boolean found3 = false;
    for (Iterator iter = allRels.iterator(); iter.hasNext();) {
        IRelationship rel = (IRelationship) iter.next();
        String sourceName = model.programElementToJavaElement(rel.getSourceHandle()).getElementName();
        if (sourceName.equals("Sample")) { //$NON-NLS-1$
            for (Iterator targetIter = rel.getTargets().iterator(); targetIter.hasNext();) {
                IJavaElement targetElt = model.programElementToJavaElement((String) targetIter.next());
                if ((targetElt.getElementName().equals("afterReturning")) //$NON-NLS-1$
                        && (targetElt.getParent().getElementName().equals("AbstractBeanConfigurerAspect"))) { //$NON-NLS-1$
                    found1 = true;/* w w w.  j  a va 2 s.c o  m*/
                } else if ((targetElt.getElementName().equals("before")) //$NON-NLS-1$
                        && (targetElt.getParent().getElementName().equals("AbstractBeanConfigurerAspect"))) { //$NON-NLS-1$
                    found2 = true;
                } else {
                    fail("Unexpected target found: " + targetElt.getHandleIdentifier()); //$NON-NLS-1$
                }
            }
        } else if (sourceName.equals("main")) { //$NON-NLS-1$
            for (Iterator targetIter = rel.getTargets().iterator(); targetIter.hasNext();) {
                IJavaElement targetElt = model.programElementToJavaElement((String) targetIter.next());
                if ((targetElt.getElementName().equals("before")) //$NON-NLS-1$
                        && (targetElt.getParent().getElementName().equals("AnnotationBeanConfigurerAspect"))) { //$NON-NLS-1$
                    found3 = true;
                } else {
                    fail("Unexpected target found: " + targetElt.getHandleIdentifier()); //$NON-NLS-1$
                }
            }
        }
    }
    assertTrue("Didn't find Sample advised by afterReturning() binary aspect relationship", found1); //$NON-NLS-1$
    assertTrue("Didn't find Sample advised by before() binary aspect relationship", found2); //$NON-NLS-1$
    assertTrue("Didn't find main advised by before() binary aspect relationship", found3); //$NON-NLS-1$

}

From source file:org.eclipse.ajdt.core.tests.model.MultipleProjectModelTests.java

License:Open Source License

private void roundTripCheck(IType otherType, IJavaElement orig) throws JavaModelException {
    assertTrue("Should exist: " + orig.getHandleIdentifier(), orig.exists());
    assertEquals(otherType, orig.getParent());
    assertTrue("" + orig + " should be a child of " + otherType, isAChildOf(otherType, orig));

    IProgramElement ipe = model.javaElementToProgramElement(orig);
    assertNotSame(IHierarchy.NO_STRUCTURE, ipe);

    orig = model.programElementToJavaElement(ipe);
    assertTrue("Should exist: " + orig.getHandleIdentifier(), orig.exists());
    assertEquals(otherType, orig.getParent());
    assertTrue("" + orig + " should be a child of " + otherType, isAChildOf(otherType, orig));
}

From source file:org.eclipse.ajdt.internal.ui.editor.actions.AJOrganizeImportsAction.java

License:Open Source License

private ICompilationUnit[] getCompilationUnits(IStructuredSelection selection) {
    HashSet result = new HashSet();
    Object[] selected = selection.toArray();
    for (int i = 0; i < selected.length; i++) {
        try {//w ww  . ja  v  a  2 s.  com
            if (selected[i] instanceof IJavaElement) {
                IJavaElement elem = (IJavaElement) selected[i];
                if (elem.exists()) {

                    switch (elem.getElementType()) {
                    case IJavaElement.TYPE:
                        if (elem.getParent().getElementType() == IJavaElement.COMPILATION_UNIT) {
                            result.add(elem.getParent());
                        }
                        break;
                    case IJavaElement.COMPILATION_UNIT:
                        result.add(elem);
                        break;
                    case IJavaElement.IMPORT_CONTAINER:
                        result.add(elem.getParent());
                        break;
                    case IJavaElement.PACKAGE_FRAGMENT:
                        collectCompilationUnits((IPackageFragment) elem, result);
                        break;
                    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
                        collectCompilationUnits((IPackageFragmentRoot) elem, result);
                        break;
                    case IJavaElement.JAVA_PROJECT:
                        IPackageFragmentRoot[] roots = ((IJavaProject) elem).getPackageFragmentRoots();
                        for (int k = 0; k < roots.length; k++) {
                            collectCompilationUnits(roots[k], result);
                        }
                        break;
                    }
                }
            } else if (selected[i] instanceof LogicalPackage) {
                IPackageFragment[] packageFragments = ((LogicalPackage) selected[i]).getFragments();
                for (int k = 0; k < packageFragments.length; k++) {
                    IPackageFragment pack = packageFragments[k];
                    if (pack.exists()) {
                        collectCompilationUnits(pack, result);
                    }
                }
            }
        } catch (JavaModelException e) {
            if (JavaModelUtil.isExceptionToBeLogged(e))
                JavaPlugin.log(e);
        }
    }
    return (ICompilationUnit[]) result.toArray(new ICompilationUnit[result.size()]);
}

From source file:org.eclipse.ajdt.internal.ui.editor.actions.AJOrganizeImportsAction.java

License:Open Source License

private boolean isEnabled(IStructuredSelection selection) {
    Object[] selected = selection.toArray();
    for (int i = 0; i < selected.length; i++) {
        try {/*from  w  w  w  .  j  a  va  2 s  .c  o m*/
            if (selected[i] instanceof IJavaElement) {
                IJavaElement elem = (IJavaElement) selected[i];
                if (elem.exists()) {
                    switch (elem.getElementType()) {
                    case IJavaElement.TYPE:
                        return elem.getParent().getElementType() == IJavaElement.COMPILATION_UNIT; // for browsing perspective
                    case IJavaElement.COMPILATION_UNIT:
                        return true;
                    case IJavaElement.IMPORT_CONTAINER:
                        return true;
                    case IJavaElement.PACKAGE_FRAGMENT:
                    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
                        IPackageFragmentRoot root = (IPackageFragmentRoot) elem
                                .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
                        return (root.getKind() == IPackageFragmentRoot.K_SOURCE);
                    case IJavaElement.JAVA_PROJECT:
                        // https://bugs.eclipse.org/bugs/show_bug.cgi?id=65638
                        return true;
                    }
                }
            } else if (selected[i] instanceof LogicalPackage) {
                return true;
            }
        } catch (JavaModelException e) {
            if (!e.isDoesNotExist()) {
                JavaPlugin.log(e);
            }
        }
    }
    return false;
}

From source file:org.eclipse.ajdt.internal.ui.editor.quickfix.AJSerialVersionHashOperation.java

License:Open Source License

/**
 * The original version of this method used the JDT state
 * object to find the class file of the type, but in 
 * AspectJ projects, there is no State object.
 * /*w  ww. jav a2 s. c o m*/
 * Instead use the IOutputLocationManager for the project
 * 
 * Note that this will not work when the type is anonymous or it is
 * a named type inside a method declaration
 */
private static IFile getClassfile(ITypeBinding typeBinding) throws CoreException {
    IType type = (IType) typeBinding.getJavaElement();

    // get the output location manager
    IProject project = typeBinding.getJavaElement().getJavaProject().getProject();
    AjCompiler compiler = AspectJPlugin.getDefault().getCompilerFactory().getCompilerForProject(project);
    IOutputLocationManager manager = compiler.getCompilerConfiguration().getOutputLocationManager();
    if (!(manager instanceof CoreOutputLocationManager)) {
        return null;
    }
    CoreOutputLocationManager coreManager = (CoreOutputLocationManager) manager;

    // get the binary folder
    ICompilationUnit cu = type.getCompilationUnit();
    File file = new File(cu.getResource().getLocation().toOSString());
    File outLocation = coreManager.getOutputLocationForResource(file);

    // convert to IFolder
    IPath outPath = new Path(outLocation.getPath());
    IPath projPath = project.getLocation();
    if (projPath.isPrefixOf(outPath)) {
        outPath = outPath.removeFirstSegments(projPath.segmentCount());
    }
    IFolder outFolder = project.getFolder(outPath);
    if (!outFolder.exists()) {
        return null;
    }

    // get the package path
    IPackageFragment frag = type.getPackageFragment();
    String packageName = frag.getElementName();
    IPath packagePath = new Path(packageName.replace('.', '/'));
    IFolder packageFolder = outFolder.getFolder(packagePath);
    if (!packageFolder.exists()) {
        return null;
    }

    // determine the binary name of this type
    StringBuffer binaryName = new StringBuffer();
    IJavaElement enclosing = type.getParent();
    while (enclosing != null && !(enclosing instanceof ICompilationUnit)) {
        binaryName.append(enclosing.getElementName() + "$");
        enclosing = enclosing.getParent();
    }
    binaryName.append(type.getElementName() + ".class");
    IFile classFile = packageFolder.getFile(new Path(binaryName.toString()));
    if (classFile.exists()) {
        return classFile;
    } else {
        return null;
    }
}

From source file:org.eclipse.ajdt.internal.ui.refactoring.pullout.PullOutRefactoring.java

License:Open Source License

private boolean isInTopLevelType(IMember member) {
    IJavaElement parent = member.getParent();
    Assert.isTrue(parent.getElementType() == IJavaElement.TYPE);
    return parent.getParent().getElementType() == IJavaElement.COMPILATION_UNIT;
}

From source file:org.eclipse.ajdt.internal.ui.refactoring.pullout.PullOutRefactoring.java

License:Open Source License

/**
 * Will the given IJavaElement be moved into the Aspect? This test returns true, also for
 * IJavaElements that are contained inside pulled elements!
 *///from   w ww .  j  ava 2  s .co  m
public boolean isMoved(IJavaElement javaElement) {
    //Null case is handled to easily terminate recursion
    return javaElement != null && (isPulled(javaElement) || isMoved(javaElement.getParent()));
}

From source file:org.eclipse.ajdt.mylyn.ui.AspectJStructureBridge.java

License:Open Source License

@Override
public String getHandleForOffsetInObject(Object object, int offset) {
    IMarker marker;/*from  w  ww  .j  ava  2  s .c om*/
    int charStart = 0;
    if (object instanceof ConcreteMarker) {
        marker = ((ConcreteMarker) object).getMarker();
    } else if (object instanceof IMarker) {
        marker = (IMarker) object;
    } else {
        return null;
    }

    Object attribute = marker.getAttribute(IMarker.CHAR_START, 0);
    if (attribute instanceof Integer) {
        charStart = ((Integer) attribute).intValue();
    }

    try {
        ICompilationUnit compilationUnit = null;
        IResource resource = marker.getResource();
        if (resource instanceof IFile) {
            IFile file = (IFile) resource;
            // TODO: get rid of file extension check
            if (file.getFileExtension().equals("aj")) {
                compilationUnit = JavaCore.createCompilationUnitFrom(file);
            } else {
                return null;
            }
        }
        if (compilationUnit != null) {
            IJavaElement javaElement = compilationUnit.getElementAt(charStart);
            if (javaElement != null) {
                if (javaElement instanceof IImportDeclaration)
                    javaElement = javaElement.getParent().getParent();
                return javaElement.getHandleIdentifier();
            } else {
                return null;
            }
        } else {
            return null;
        }
    } catch (JavaModelException ex) {
        if (!ex.isDoesNotExist())
            ExceptionHandler.handle(ex, "error", "could not find java element"); //$NON-NLS-2$ //$NON-NLS-1$
        return null;
    } catch (Throwable t) {
        StatusHandler.log(new Status(IStatus.ERROR, AspectJStructureBridgePlugin.PLUGIN_ID,
                "Could not find element for: " + marker, t));
        return null;
    }
}