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.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$ }