List of usage examples for org.eclipse.jdt.core IJavaElement getParent
IJavaElement getParent();
null
if this element has no parent. 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; } }