List of usage examples for org.eclipse.jdt.core IJavaElement getParent
IJavaElement getParent();
null
if this element has no parent. From source file:de.tud.cs.st.vespucci.diagram.dnd.JavaType.AbstractVisitor.java
License:Open Source License
/** * @param element/*from ww w .ja va 2s. c o m*/ * @return Returns true only if element is located in JAR-File */ @SuppressWarnings("restriction") protected static boolean isLocatedInJarFile(final IJavaElement element) { IJavaElement parent = element; while (parent != null) { if (parent instanceof JarPackageFragmentRoot) { return true; } parent = parent.getParent(); } return false; }
From source file:de.tud.cs.st.vespucci.diagram.dnd.JavaType.PackageNameVisitor.java
License:Open Source License
@Override public Object visit(final IMethod method) { IJavaElement parent = method.getParent(); while (!(parent instanceof IPackageFragment)) { parent = parent.getParent(); }//from w w w . j a va 2s . c om return visit((IPackageFragment) parent); }
From source file:de.tud.cs.st.vespucci.diagram.dnd.JavaType.PackageNameVisitor.java
License:Open Source License
@Override public Object visit(final IClassFile classFile) { IJavaElement parent = classFile.getParent(); while (!(parent instanceof IPackageFragment)) { parent = parent.getParent(); }/*w w w.j a v a2 s . c o m*/ return visit((IPackageFragment) parent); }
From source file:de.tud.cs.st.vespucci.diagram.dnd.JavaType.PackageNameVisitor.java
License:Open Source License
@Override public Object visit(final IField field) { IJavaElement parent = field.getParent(); while (!(parent instanceof IPackageFragment)) { parent = parent.getParent(); }//w ww .j a v a 2 s.c o m return visit((IPackageFragment) parent); }
From source file:de.tud.cs.st.vespucci.diagram.dnd.JavaType.PackageNameVisitor.java
License:Open Source License
@Override public Object visit(final IType type) { IJavaElement parent = type.getParent(); while (!(parent instanceof IPackageFragment)) { parent = parent.getParent(); }//from www . j a v a 2 s.c o m return visit((IPackageFragment) parent); }
From source file:edu.brown.cs.bubbles.bedrock.BedrockOpenEditorBubbleActionDelegate.java
License:Open Source License
@Override public void run(IAction action) { IWorkbenchPage page = our_window.getActivePage(); if (page != null) { if (!(page.getActiveEditor() instanceof ITextEditor)) return; ITextEditor fileEditor = (ITextEditor) page.getActiveEditor(); IFileEditorInput fileEditorInput = (IFileEditorInput) fileEditor.getEditorInput(); String path = fileEditorInput.getFile().getProjectRelativePath().toOSString(); String filePath = path;/*from www.j a v a 2s. c o m*/ IProject project = fileEditorInput.getFile().getProject(); IJavaProject javaProject = JavaModelManager.getJavaModelManager().getJavaModel() .getJavaProject(project.getName()); try { for (IClasspathEntry entry : javaProject.getRawClasspath()) { if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) { String sourcePath = entry.getPath().toOSString().substring(project.getName().length() + 2); if (path.startsWith(sourcePath)) { path = path.substring(sourcePath.length() + 1); path = path.replace(File.separatorChar, '$'); path = path.substring(0, path.indexOf(".")); filePath = filePath.substring(sourcePath.length() + 1); break; } } } } catch (Exception e1) { BedrockPlugin.log("Exception : " + e1.getMessage() + ", " + e1.getClass().toString()); } try { IJavaElement javaElement = javaProject.findElement(new Path(filePath)); if (!(javaElement instanceof ICompilationUnit)) return; ICompilationUnit icu = (ICompilationUnit) javaElement; ISelectionProvider selectionProvider = fileEditor.getSelectionProvider(); ISelection selection = selectionProvider.getSelection(); if (selection instanceof ITextSelection) { ITextSelection textSelection = (ITextSelection) selection; int offset = textSelection.getOffset(); IJavaElement element = icu.getElementAt(offset); IvyXmlWriter xw = BedrockPlugin.getPlugin().beginMessage("OPENEDITOR"); xw.field("PROJECT", project.getName()); if (element == null) { xw.field("RESOURCEPATH", path); } else { boolean isFirstElement = true; boolean isMethod = false; String fileName = path.substring(path.lastIndexOf('$') + 1); List<String> list = new ArrayList<String>(); while (element != null && (!element.getElementName().equals(fileName) || element.getElementType() == IJavaElement.METHOD)) { if (isFirstElement && (element.getElementType() == IJavaElement.METHOD || element.getElementType() == IJavaElement.TYPE)) { list.add(element.getElementName()); if (element.getElementType() == IJavaElement.METHOD) { isMethod = true; } isFirstElement = false; } else if (!isFirstElement) { list.add(element.getElementName()); } element = element.getParent(); if ("".equals(element.getElementName())) { xw.field("RESOURCEPATH", path); BedrockPlugin.getPlugin().finishMessage(xw); return; } } String[] aryPath = new String[list.size()]; list.toArray(aryPath); for (int i = aryPath.length - 1; i >= 0; i--) { path += ("$" + aryPath[i]); } xw.field("RESOURCEPATH", path); if (isMethod) xw.field("RESOURCETYPE", "Function"); } BedrockPlugin.getPlugin().finishMessage(xw); } } catch (Exception e2) { BedrockPlugin.log("Exception : " + e2.getMessage() + ", " + e2.getClass().toString()); } } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockRenamer.java
License:Open Source License
/********************************************************************************/ void rename(String proj, String bid, String file, int start, int end, String name, String handle, String newname, boolean keeporig, boolean getters, boolean setters, boolean dohier, boolean qual, boolean refs, boolean dosimilar, boolean textocc, boolean doedit, String filespat, IvyXmlWriter xw) throws BedrockException { ICompilationUnit icu = our_plugin.getCompilationUnit(proj, file); IJavaElement[] elts;/*from www .ja v a2s . c om*/ try { elts = icu.codeSelect(start, end - start); } catch (JavaModelException e) { throw new BedrockException("Bad location: " + e, e); } IJavaElement relt = null; for (IJavaElement ije : elts) { if (handle != null && !handle.equals(ije.getHandleIdentifier())) continue; if (name != null && !name.equals(ije.getElementName())) continue; relt = ije; break; } if (relt == null) throw new BedrockException("Item to rename not found"); BedrockPlugin.logD("RENAME CHECK " + relt.getElementType() + " " + relt.getParent().getElementType()); switch (relt.getElementType()) { case IJavaElement.COMPILATION_UNIT: throw new BedrockException("Compilation unit renaming not supported yet"); case IJavaElement.PACKAGE_FRAGMENT_ROOT: case IJavaElement.PACKAGE_FRAGMENT: throw new BedrockException("Package renaming not supported yet"); case IJavaElement.FIELD: case IJavaElement.LOCAL_VARIABLE: case IJavaElement.TYPE_PARAMETER: break; case IJavaElement.METHOD: IMethod mthd = (IMethod) relt; try { if (mthd.isConstructor()) throw new BedrockException("Constructor renaming not supported yet"); } catch (JavaModelException e) { } break; case IJavaElement.TYPE: IJavaElement pelt = relt.getParent(); if (pelt.getElementType() == IJavaElement.COMPILATION_UNIT) { ITypeRoot xcu = (ITypeRoot) pelt; if (relt == xcu.findPrimaryType()) { throw new BedrockException("Compilation unit renaming based on type not supported yet"); } } break; default: throw new BedrockException("Invalid element type to rename"); } SearchPattern sp = SearchPattern.createPattern(relt, IJavaSearchConstants.ALL_OCCURRENCES, SearchPattern.R_EXACT_MATCH); List<ICompilationUnit> worku = new ArrayList<ICompilationUnit>(); for (IJavaElement je : BedrockJava.getAllProjects()) { our_plugin.getWorkingElements(je, worku); } ICompilationUnit[] work = new ICompilationUnit[worku.size()]; work = worku.toArray(work); int fg = IJavaSearchScope.SOURCES | IJavaSearchScope.REFERENCED_PROJECTS; IJavaSearchScope scp = SearchEngine.createJavaSearchScope(work, fg); SearchEngine se = new SearchEngine(work); SearchParticipant[] parts = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; FindHandler fh = new FindHandler(xw, null); try { se.search(sp, parts, scp, fh, null); } catch (CoreException e) { throw new BedrockException("Problem doing find all search: " + e, e); } BedrockPlugin.logD("RENAME RESULT = " + xw.toString()); }
From source file:edu.brown.cs.bubbles.bedrock.BedrockUtil.java
License:Open Source License
private static void outputSymbol(IJavaElement elt, String what, String nm, String key, IvyXmlWriter xw) { if (what == null || nm == null) return;//w w w . ja v a 2 s . com xw.begin("ITEM"); xw.field("TYPE", what); xw.field("NAME", nm); xw.field("HANDLE", elt.getHandleIdentifier()); xw.field("WORKING", (elt.getPrimaryElement() != elt)); ICompilationUnit cu = (ICompilationUnit) elt.getAncestor(IJavaElement.COMPILATION_UNIT); if (cu != null) { xw.field("CUWORKING", cu.isWorkingCopy()); } try { xw.field("KNOWN", elt.isStructureKnown()); } catch (JavaModelException e) { } if (elt instanceof ISourceReference) { try { ISourceRange rng = ((ISourceReference) elt).getSourceRange(); if (rng != null) { xw.field("STARTOFFSET", rng.getOffset()); xw.field("ENDOFFSET", rng.getOffset() + rng.getLength()); xw.field("LENGTH", rng.getLength()); } } catch (JavaModelException e) { BedrockPlugin.logE("Problem getting source range: " + e); } } if (elt instanceof ILocalVariable) { ILocalVariable lcl = (ILocalVariable) elt; xw.field("SIGNATURE", lcl.getTypeSignature()); } if (elt instanceof IMember) { try { IMember mem = ((IMember) elt); int fgs = mem.getFlags(); if (mem.getParent() instanceof IType && !(elt instanceof IType)) { IType par = (IType) mem.getParent(); if (par.isInterface()) { if (elt instanceof IMethod) fgs |= Flags.AccAbstract; fgs |= Flags.AccPublic; } xw.field("QNAME", par.getFullyQualifiedName() + "." + nm); } xw.field("FLAGS", fgs); } catch (JavaModelException e) { } } if (elt instanceof IPackageFragment || elt instanceof IType) { Display d = BedrockApplication.getDisplay(); if (d != null) { JavadocUrl ju = new JavadocUrl(elt); d.syncExec(ju); URL u = ju.getResult(); if (u != null) { xw.field("JAVADOC", u.toString()); } } } xw.field("SOURCE", "USERSOURCE"); if (key != null) xw.field("KEY", key); boolean havepath = false; for (IJavaElement pe = elt.getParent(); pe != null; pe = pe.getParent()) { if (pe.getElementType() == IJavaElement.COMPILATION_UNIT) { IProject ip = elt.getJavaProject().getProject(); File f = BedrockUtil.getFileForPath(elt.getPath(), ip); xw.field("PATH", f.getAbsolutePath()); havepath = true; break; } } IJavaProject ijp = elt.getJavaProject(); if (ijp != null) xw.field("PROJECT", ijp.getProject().getName()); IPath p = elt.getPath(); if (p != null) { xw.field("XPATH", p); if (!havepath) { IProject ip = elt.getJavaProject().getProject(); File f = getFileForPath(elt.getPath(), ip); xw.field("PATH", f.getAbsolutePath()); } } if (elt instanceof IMethod) { IMethod m = (IMethod) elt; try { xw.field("RESOLVED", m.isResolved()); ISourceRange rng = m.getNameRange(); if (rng != null) { xw.field("NAMEOFFSET", rng.getOffset()); xw.field("NAMELENGTH", rng.getLength()); } xw.field("RETURNTYPE", m.getReturnType()); xw.field("NUMPARAM", m.getNumberOfParameters()); String[] pnms = m.getParameterNames(); String[] ptys = m.getParameterTypes(); for (int i = 0; i < ptys.length; ++i) { xw.begin("PARAMETER"); if (i < pnms.length) xw.field("NAME", pnms[i]); xw.field("TYPE", ptys[i]); xw.end(); } for (String ex : m.getExceptionTypes()) { xw.begin("EXCEPTION"); xw.field("TYPE", ex); xw.end(); } } catch (JavaModelException e) { } } // TODO: output parameters as separate elements with type and name if (elt instanceof IAnnotatable) { IAnnotatable ann = (IAnnotatable) elt; try { IAnnotation[] ans = ann.getAnnotations(); for (IAnnotation an : ans) { xw.begin("ANNOTATION"); xw.field("NAME", an.getElementName()); xw.field("COUNT", an.getOccurrenceCount()); try { for (IMemberValuePair mvp : an.getMemberValuePairs()) { xw.begin("VALUE"); xw.field("NAME", mvp.getMemberName()); if (mvp.getValue() != null) xw.field("VALUE", mvp.getValue().toString()); xw.field("KIND", mvp.getValueKind()); xw.end("VALUE"); } } catch (JavaModelException e) { } xw.end("ANNOTATION"); } } catch (JavaModelException e) { } } xw.end("ITEM"); }
From source file:edu.cmu.cs.crystal.internal.WorkspaceUtilities.java
License:Open Source License
/** * Walks up the Java model hierarchy and separates the names of encountered * elements by forward slashes//www. ja v a 2s. co m * @param element * @return Symbolic name of the given Java element relative to the workspace root */ public static String getWorkspaceRelativeName(IJavaElement element) { String result = element.getElementName(); while (element.getParent() != null) { element = element.getParent(); result = element.getElementName() + "/" + result; } return result; }
From source file:edu.uci.ics.sourcerer.extractor.ast.ClassFileExtractor.java
License:Open Source License
public void extractClassFile(IClassFile classFile) { // Verify that it's a top-level type, or a subtype of a top-level type // try {/*w w w. j av a 2 s.c om*/ // IType declaring = classFile.getType(); // while (declaring != null) { // if (declaring.isLocal() || declaring.isAnonymous()) { // return; // } // declaring = declaring.getDeclaringType(); // } // } catch (JavaModelException e) { // logger.log(Level.SEVERE, "Error in extracting class file", e); // return; // } IJavaElement parent = classFile.getParent(); while (true) { if (parent == null) { logger.log(Level.SEVERE, "Unable to find package for: " + classFile.getElementName()); break; } else if (parent.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { // Write the class file name = classFile.getElementName(); path = parent.getElementName() + "." + name; fileWriter.writeClassFile(name, path); try { if (classFile.getType().isAnonymous()) { String fqn = classFile.getType().getFullyQualifiedName(); String containingFqn = fqn.substring(0, fqn.lastIndexOf('$')); relationWriter.writeInside(classFile.getType().getFullyQualifiedName(), containingFqn, path); } else { relationWriter.writeInside(classFile.getType().getFullyQualifiedName(), parent.getElementName(), path); entityWriter.writePackage(parent.getElementName()); } } catch (JavaModelException e) { logger.log(Level.SEVERE, "Error in extracting class file", e); } break; } else { logger.log(Level.SEVERE, classFile.getType().getFullyQualifiedName() + " should be top-level!"); parent = parent.getParent(); } } extractIType(classFile.getType()); name = null; path = null; }