List of usage examples for org.eclipse.jdt.core IJavaElement getAncestor
IJavaElement getAncestor(int ancestorType);
From source file:org.eclipse.virgo.ide.bundlor.internal.core.BundlorProjectBuilder.java
License:Open Source License
private void doGetAffectedResources(IResource resource, int kind, int deltaKind) throws CoreException { IJavaProject project = JavaCore.create(getProject()); if (project == null) { return;/*from w ww .j a v a2 s .c o m*/ } IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot(); // Get the source folders Set<IClasspathEntry> classpathEntries = ServerModuleDelegate .getSourceClasspathEntries(resource.getProject(), false); Set<IClasspathEntry> testClasspathEntries = ServerModuleDelegate .getSourceClasspathEntries(resource.getProject(), true); // Java source files if (!this.scanByteCode && resource.getName().endsWith("java")) { //$NON-NLS-1$ IJavaElement element = JavaCore.create(resource); if (element != null && element.getJavaProject().isOnClasspath(element)) { IPackageFragmentRoot root = (IPackageFragmentRoot) element .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); try { IClasspathEntry classpathEntry = root.getRawClasspathEntry(); for (IClasspathEntry entry : classpathEntries) { if (classpathEntry.equals(entry)) { if (deltaKind == IResourceDelta.REMOVED) { this.deletedSourceResources.add(resource); } else { this.sourceResources.add(resource); } break; } } for (IClasspathEntry entry : testClasspathEntries) { if (classpathEntry.equals(entry)) { if (deltaKind == IResourceDelta.REMOVED) { this.deletedTestResources.add(resource); } else { this.testResources.add(resource); } break; } } } catch (JavaModelException e) { // This can happen in case of .java resources not on the // classpath of the project } } } // Java byte code else if (this.scanByteCode && resource.getName().endsWith(CLASS_FILE_EXTENSION)) { IPath classFilePath = resource.getFullPath(); // Check default output folders IPath defaultOutputLocation = project.getOutputLocation(); if (defaultOutputLocation.isPrefixOf(classFilePath)) { // Ok we know that the file is a class in the default output // location; let's get the class name String className = classFilePath.removeFirstSegments(defaultOutputLocation.segmentCount()) .toString(); className = className.substring(0, className.length() - CLASS_FILE_EXTENSION.length()); int ix = className.indexOf('$'); if (ix > 0) { className = className.substring(0, ix); } className = className + ".java"; if (deltaKind == IResourceDelta.REMOVED) { this.deletedSourceResources.add(resource); this.deletedTestResources.add(resource); } else { for (IClasspathEntry entry : classpathEntries) { IPath sourceLocation = entry.getPath(); IResource sourceFolder = wsRoot.findMember(sourceLocation); if (sourceFolder instanceof IFolder) { if (((IFolder) sourceFolder).findMember(className) != null) { this.sourceResources.add(resource); break; } } } for (IClasspathEntry entry : testClasspathEntries) { IPath sourceLocation = entry.getPath(); IResource sourceFolder = wsRoot.findMember(sourceLocation); if (sourceFolder instanceof IFolder) { if (((IFolder) sourceFolder).findMember(className) != null) { this.testResources.add(resource); break; } } } } } // Check output folders of source folders for (IClasspathEntry entry : classpathEntries) { IPath outputLocation = entry.getOutputLocation(); if (outputLocation != null && outputLocation.isPrefixOf(classFilePath)) { if (deltaKind == IResourceDelta.REMOVED) { this.deletedSourceResources.add(resource); } else { this.sourceResources.add(resource); } break; } } // Check output folders for test source folders for (IClasspathEntry entry : testClasspathEntries) { IPath outputLocation = entry.getOutputLocation(); if (outputLocation != null && outputLocation.isPrefixOf(classFilePath)) { if (deltaKind == IResourceDelta.REMOVED) { this.deletedTestResources.add(resource); } else { this.testResources.add(resource); } break; } } } // Some template or actual manifest file (whether or not it actually // affects packaged build) has changed. Note that this is different // behavior than // pre-Virgo server. Still, it seems reasonably conservative as worst // case we'll be re-building the project when we really don't need to, // and best case we'll catch an edge case that we would have otherwise // missed. else if (resource.getName().equals("template.mf") || resource.getName().equals("MANIFEST.MF")) { this.forceFullBuild = true; } // Hibernate mapping files else if (resource.getName().endsWith(".hbm")) { addResourceIfInSourceFolder(resource, classpathEntries, testClasspathEntries); } // JPA persistence descriptor else if (resource.getName().equals("persistence.xml") && resource.getParent() != null && resource.getParent().getName().equals("META-INF")) { addResourceIfInSourceFolder(resource, classpathEntries, testClasspathEntries); } else if (isWebXML(resource)) { this.sourceResources.add(resource); } // Spring configuration file else if (resource.getName().endsWith(".xml")) { addResourceIfInSourceFolder(resource, classpathEntries, testClasspathEntries); } }
From source file:org.eclipse.wb.internal.core.utils.jdt.core.CodeUtils.java
License:Open Source License
/** * @return the {@link IPackageFragmentRoot} that is parent of given {@link IJavaElement} or first * {@link IPackageFragmentRoot} of {@link IJavaProject}. *//*from ww w .j a v a 2 s . c o m*/ public static IPackageFragmentRoot getPackageFragmentRoot(IJavaElement element) throws JavaModelException { if (element != null) { // try to find valid parent IPackageFragmentRoot { IPackageFragmentRoot root = (IPackageFragmentRoot) element .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (root != null && root.getKind() == IPackageFragmentRoot.K_SOURCE) { return root; } } // use IPackageFragmentRoot of IJavaProject { IJavaProject javaProject = element.getJavaProject(); if (javaProject != null && javaProject.exists()) { for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) { if (root.getKind() == IPackageFragmentRoot.K_SOURCE) { return root; } } } } } // invalid element return null; }
From source file:org.eclipse.wb.internal.core.utils.jdt.core.SubtypesScope.java
License:Open Source License
public boolean encloses(IJavaElement element) { IType type = (IType) element.getAncestor(IJavaElement.TYPE); if (type != null) { return ArrayUtils.contains(m_subtypes, type); }// ww w. java 2 s .co m return false; }
From source file:org.eclipse.wb.internal.core.wizards.palette.NewProjectPalettePage.java
License:Open Source License
/** * Initializes this page with current selection. *///from w w w . j ava 2 s . co m public void init(IStructuredSelection selection) { // initial IJavaProject { IJavaElement javaElement = null; Object selectedElement = selection.getFirstElement(); if (selectedElement instanceof IAdaptable) { IAdaptable adaptable = (IAdaptable) selectedElement; javaElement = (IJavaElement) adaptable.getAdapter(IJavaElement.class); if (javaElement == null) { IResource resource = (IResource) adaptable.getAdapter(IResource.class); if (resource != null && resource.getType() != IResource.ROOT) { while (javaElement == null && resource.getType() != IResource.PROJECT) { resource = resource.getParent(); javaElement = (IJavaElement) resource.getAdapter(IJavaElement.class); } if (javaElement == null) { javaElement = JavaCore.create(resource); } } } } // get IJavaProject if (javaElement != null) { m_initialProject = (IJavaProject) javaElement.getAncestor(IJavaElement.JAVA_PROJECT); } } }
From source file:org.eclipse.xtext.common.types.ui.navigation.LinkToOriginDetector.java
License:Open Source License
@Override public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { try {//w w w . ja v a 2 s . c om // very pessimistic guards - most things should never happen ITextEditor textEditor = (ITextEditor) getAdapter(ITextEditor.class); if (textEditor == null) return null; IEditorInput editorInput = textEditor.getEditorInput(); if (editorInput == null) return null; IJavaElement adaptedJavaElement = (IJavaElement) Platform.getAdapterManager().getAdapter(editorInput, IJavaElement.class); if (adaptedJavaElement == null) return null; ICompilationUnit compilationUnit = (ICompilationUnit) adaptedJavaElement .getAncestor(IJavaElement.COMPILATION_UNIT); if (compilationUnit == null) return null; try { IRegion selectedWord = org.eclipse.jdt.internal.ui.text.JavaWordFinder .findWord(textViewer.getDocument(), region.getOffset()); // the actual implementation - find the referenced Java type under the cursor and link // to its origin if it's contained in a 'derived' resource IJavaElement[] javaElements = compilationUnit.codeSelect(selectedWord.getOffset(), selectedWord.getLength()); for (IJavaElement javaElement : javaElements) { /** * if IDE 3.8 is available the default 'Open Declaration' navigation will already open the original editor * So we don't need the additional hyperlinks. */ boolean provideHyperlinkOnReferences = !is_ORG_ECLIPSE_UI_IDE_3_8_Enabled() || compilationUnit.equals(((IMember) javaElement).getCompilationUnit()); if (javaElement instanceof IMember && provideHyperlinkOnReferences) { IMember selectedMember = (IMember) javaElement; IResource resource = selectedMember.getResource(); if (resource instanceof IFile) { ITrace traceToSource = traceInformation.getTraceToSource((IStorage) resource); if (traceToSource == null) { return null; } ILocationInResource sourceInformation = IterableExtensions .head(traceToSource.getAllAssociatedLocations()); if (sourceInformation != null) { try { URI resourceURI = sourceInformation.getAbsoluteResourceURI().getURI(); if (resourceURI != null) { IResourceServiceProvider serviceProvider = serviceProviderRegistry .getResourceServiceProvider(resourceURI); if (serviceProvider == null) return null; LinkToOriginProvider provider = serviceProvider .get(LinkToOriginProvider.class); LinkToOrigin hyperlink = provider.createLinkToOrigin(sourceInformation, selectedWord, selectedMember, compilationUnit, Collections.<LinkToOrigin>emptyList()); if (hyperlink != null) { return new IHyperlink[] { hyperlink }; } } } catch (IllegalArgumentException e) { /* invalid URI - ignore */ } } return null; } } } return null; } catch (JavaModelException e) { return null; } } catch (Throwable t) { return null; } }
From source file:org.electrocodeogram.cpc.ui.utils.EclipseUtils.java
License:BSD License
/** * @param resource//from w ww . java 2s. c om * @return full package name in default java notation (with dots) */ public static String getJavaPackageName(IJavaElement resource) { String name = resource == null ? null : resource.getElementName(); //$NON-NLS-1$ if (name == null) { return ""; //$NON-NLS-1$ } int type = resource.getElementType(); if (type == IJavaElement.PACKAGE_FRAGMENT || type == IJavaElement.PACKAGE_FRAGMENT_ROOT) { return name; } IJavaElement ancestor = resource.getAncestor(IJavaElement.PACKAGE_FRAGMENT); if (ancestor != null) { return ancestor.getElementName(); } return ""; //$NON-NLS-1$ }
From source file:org.evosuite.eclipse.popup.actions.ExtendSuiteEditorAction.java
License:Open Source License
@Override public Object execute(ExecutionEvent event) throws ExecutionException { IEditorPart activeEditor = HandlerUtil.getActiveEditor(event); ISelection selection = HandlerUtil.getActiveMenuSelection(event); String SUT = ""; IResource target = null;//from w w w. j a v a2 s . c o m System.out.println("Current selection of type " + selection.getClass().getName() + ": " + selection); if (selection instanceof TreeSelection) { TreeSelection treeSelection = (TreeSelection) selection; IAdaptable firstElement = (IAdaptable) treeSelection.getFirstElement(); // Relies on an internal API, bad juju if (firstElement instanceof org.eclipse.jdt.internal.core.CompilationUnit) { try { org.eclipse.jdt.internal.core.CompilationUnit compilationUnit = (org.eclipse.jdt.internal.core.CompilationUnit) firstElement; String packageName = ""; if (compilationUnit.getPackageDeclarations().length > 0) { System.out.println( "Package: " + compilationUnit.getPackageDeclarations()[0].getElementName()); packageName = compilationUnit.getPackageDeclarations()[0].getElementName(); } String targetSuite = compilationUnit.getElementName().replace(".java", ""); if (!packageName.isEmpty()) targetSuite = packageName + "." + targetSuite; System.out.println("Selected class: " + targetSuite); SUT = targetSuite; target = compilationUnit.getResource(); } catch (JavaModelException e) { } } } else if (activeEditor instanceof JavaEditor) { ITypeRoot root = EditorUtility.getEditorInputJavaElement(activeEditor, false); ITextSelection sel = (ITextSelection) ((JavaEditor) activeEditor).getSelectionProvider().getSelection(); int offset = sel.getOffset(); IJavaElement element; try { element = root.getElementAt(offset); if (element.getElementType() == IJavaElement.METHOD) { IJavaElement pDeclaration = element.getAncestor(IJavaElement.PACKAGE_FRAGMENT); IPackageFragment pFragment = (IPackageFragment) pDeclaration; String packageName = ""; if (pFragment.getCompilationUnits()[0].getPackageDeclarations().length > 0) { System.out.println("Package: " + pFragment.getCompilationUnits()[0].getPackageDeclarations()[0].getElementName()); packageName = pFragment.getCompilationUnits()[0].getPackageDeclarations()[0] .getElementName(); } String targetSuite = element.getParent().getElementName(); if (!packageName.isEmpty()) targetSuite = packageName + "." + targetSuite; System.out.println("Selected class: " + targetSuite); SUT = targetSuite; } else if (element.getElementType() == IJavaElement.TYPE) { IType type = ((IType) element); System.out.println("Selected class: " + type.getFullyQualifiedName()); SUT = type.getFullyQualifiedName(); } IWorkspaceRoot wroot = ResourcesPlugin.getWorkspace().getRoot(); target = wroot.findMember(root.getPath()); } catch (JavaModelException e) { } } if (!SUT.isEmpty() && target != null) { IProject proj = target.getProject(); fixJUnitClassPath(JavaCore.create(proj)); generateTests(target); } return null; }
From source file:org.evosuite.eclipse.popup.actions.GenerateTestsEditorAction.java
License:Open Source License
@Override public Object execute(ExecutionEvent event) throws ExecutionException { IEditorPart activeEditor = HandlerUtil.getActiveEditor(event); // ISelection selection = HandlerUtil.getCurrentSelection(event); ISelection selection = HandlerUtil.getActiveMenuSelection(event); String SUT = ""; IResource target = null;/*from ww w . j a va2 s .c om*/ System.out.println("Current selection of type " + selection.getClass().getName() + ": " + selection); if (selection instanceof TreeSelection) { TreeSelection treeSelection = (TreeSelection) selection; IAdaptable firstElement = (IAdaptable) treeSelection.getFirstElement(); // Relies on an internal API, bad juju if (firstElement instanceof org.eclipse.jdt.internal.core.CompilationUnit) { try { org.eclipse.jdt.internal.core.CompilationUnit compilationUnit = (org.eclipse.jdt.internal.core.CompilationUnit) firstElement; String packageName = ""; if (compilationUnit.getPackageDeclarations().length > 0) { System.out.println( "Package: " + compilationUnit.getPackageDeclarations()[0].getElementName()); packageName = compilationUnit.getPackageDeclarations()[0].getElementName(); } String targetSuite = compilationUnit.getElementName().replace(".java", ""); if (!packageName.isEmpty()) targetSuite = packageName + "." + targetSuite; System.out.println("Selected class: " + targetSuite); SUT = targetSuite; target = compilationUnit.getResource(); } catch (JavaModelException e) { } } } else if (activeEditor instanceof JavaEditor) { ITypeRoot root = EditorUtility.getEditorInputJavaElement(activeEditor, false); ITextSelection sel = (ITextSelection) ((JavaEditor) activeEditor).getSelectionProvider().getSelection(); int offset = sel.getOffset(); IJavaElement element; try { element = root.getElementAt(offset); if (element == null) { ISelection sel2 = HandlerUtil.getCurrentSelection(event); System.out.println( "Selected element of type " + sel2.getClass().getName() + ": " + sel2.toString()); } else if (element.getElementType() == IJavaElement.METHOD) { IJavaElement pDeclaration = element.getAncestor(IJavaElement.PACKAGE_FRAGMENT); IPackageFragment pFragment = (IPackageFragment) pDeclaration; String packageName = ""; if (pFragment.getCompilationUnits()[0].getPackageDeclarations().length > 0) { System.out.println("Package: " + pFragment.getCompilationUnits()[0].getPackageDeclarations()[0].getElementName()); packageName = pFragment.getCompilationUnits()[0].getPackageDeclarations()[0] .getElementName(); } String targetSuite = element.getParent().getElementName(); if (!packageName.isEmpty()) targetSuite = packageName + "." + targetSuite; System.out.println("Selected class: " + targetSuite); SUT = targetSuite; } else if (element.getElementType() == IJavaElement.TYPE) { IType type = ((IType) element); System.out.println("Selected class: " + type.getFullyQualifiedName()); SUT = type.getFullyQualifiedName(); } IWorkspaceRoot wroot = ResourcesPlugin.getWorkspace().getRoot(); target = wroot.findMember(EditorUtility.getEditorInputJavaElement(activeEditor, false).getPath()); } catch (JavaModelException e) { } } if (!SUT.isEmpty() && target != null) { IProject proj = target.getProject(); fixJUnitClassPath(JavaCore.create(proj)); generateTests(target); } return null; }
From source file:org.fusesource.ide.branding.wizards.NewCamelTestWizardPageOne.java
License:Open Source License
/** * Initialized the page with the current selection * /*from w w w. ja v a 2 s . co m*/ * @param selection * The selection */ public void init(IStructuredSelection selection) { IJavaElement elem = getInitialJavaElement(selection); IJavaProject jproject = elem.getJavaProject(); IPackageFragmentRoot testRoot = null; if (selection != null && !selection.isEmpty()) { Object selectedElement = selection.getFirstElement(); IFile ifile = null; if (selectedElement instanceof IFile) { ifile = (IFile) selectedElement; } else if (selectedElement instanceof IAdaptable) { IAdaptable adaptable = (IAdaptable) selectedElement; ifile = (IFile) adaptable.getAdapter(IFile.class); } if (ifile != null) { setXmlFileUnderTest(ifile); } // now we determine the container for the test classes if (jproject != null && jproject.exists()) { try { IPackageFragmentRoot[] roots = jproject.getPackageFragmentRoots(); for (int i = 0; i < roots.length; i++) { if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) { if (roots[i].getPath().toFile().getPath() .contains(String.format("src%stest%sjava", File.separator, File.separator))) { testRoot = roots[i]; break; } else if (roots[i].getPath().toFile().getPath() .contains(String.format("src%stest%sscala", File.separator, File.separator))) { testRoot = roots[i]; // we will prefer the src/test/java folder, so we don't break here and search for it } } } } catch (Exception ex) { Activator.getLogger().error(ex); } } } if (elem != null) { initContainerPage(elem); // if we found a suitable test class container then we set it here if (testRoot != null) { // set the container correctly setPackageFragmentRoot(testRoot, true); } IJavaProject project = elem.getJavaProject(); resourceContainer = project.getProject(); // evaluate the enclosing type IPackageFragment pack = (IPackageFragment) elem.getAncestor(IJavaElement.PACKAGE_FRAGMENT); if (pack != null) { setPackageFragment(pack, true); } else { File testFolderFile = project.getProject().getParent().getRawLocation() .append(getPackageFragmentRoot().getPath().makeRelative()).toFile(); File f = getBasePackage(testFolderFile); if (f != null && testRoot != null) { IPath p = new Path(f.getPath()); p = p.makeRelativeTo(project.getProject().getParent().getRawLocation() .append(getPackageFragmentRoot().getPath().makeRelative())); String name = ""; StringTokenizer strTok = new StringTokenizer(p.toOSString(), File.separator); while (strTok.hasMoreTokens()) { String tok = strTok.nextToken(); if (name.trim().length() > 0) { name += "."; } name += tok; } try { IPackageFragment pf = testRoot.createPackageFragment(name, true, new NullProgressMonitor()); setPackageFragment(pf, true); } catch (Exception ex) { Activator.getLogger().error(ex); } } } if (fXmlFileUnderTest == null) { try { // if we have no file selected yet, lets see if there's a // single one available List<IFile> files = ResourceModelUtils.filter(resourceContainer, new org.fusesource.ide.foundation.core.util.Filter<IFile>() { @Override public boolean matches(IFile file) { if (Objects.equal(file.getFileExtension(), "xml")) { return camelXmlMatcher.matches(file); } return false; } }); if (files.size() == 1) { setXmlFileUnderTest(files.get(0)); } } catch (Exception e) { Activator.getLogger().error("Failed to search for Camel XML files: " + e, e); } } } setJUnit4(true, true); updateStatus(getStatusList()); }
From source file:org.grails.ide.eclipse.core.internal.GrailsResourceUtil.java
License:Open Source License
public static boolean isSourceFile(IJavaElement javaElement) { IPackageFragmentRoot root = (IPackageFragmentRoot) javaElement .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); return root != null && isSourceFolder(root); }