List of usage examples for org.eclipse.jdt.core IJavaElement CLASS_FILE
int CLASS_FILE
To view the source code for org.eclipse.jdt.core IJavaElement CLASS_FILE.
Click Source Link
From source file:de.loskutov.bco.ui.JdtUtils.java
License:Open Source License
/** * @param javaElement/*from w ww . j a va 2s . c om*/ * @return new generated input stream for given element bytecode class file, or null * if class file cannot be found or this element is not from java source path */ public static InputStream createInputStream(IJavaElement javaElement) { IClassFile classFile = (IClassFile) javaElement.getAncestor(IJavaElement.CLASS_FILE); InputStream is = null; // existing read-only class files if (classFile != null) { IJavaElement jarParent = classFile.getParent(); // TODO dirty hack to be sure, that package is from jar - // because JarPackageFragment is not public class, we cannot // use instanceof here boolean isJar = jarParent != null && jarParent.getClass().getName().endsWith("JarPackageFragment"); //$NON-NLS-1$ if (isJar) { is = createStreamFromJar(classFile); } else { is = createStreamFromClass(classFile); } } else { // usual eclipse - generated bytecode boolean inJavaPath = isOnClasspath(javaElement); if (!inJavaPath) { return null; } String classPath = getByteCodePath(javaElement); try { is = new FileInputStream(classPath); } catch (FileNotFoundException e) { // if autobuild is disabled, we get tons of this errors. // but I think we cannot ignore them, therefore WARNING and not // ERROR status BytecodeOutlinePlugin.log(e, IStatus.WARNING); } } return is; }
From source file:de.loskutov.bco.ui.JdtUtils.java
License:Open Source License
/** * Check if java element is an interface or abstract method or a method from * interface./*from www. j a v a 2 s . c o m*/ */ public static boolean isAbstractOrInterface(IJavaElement javaEl) { if (javaEl == null) { return true; } boolean abstractOrInterface = false; try { switch (javaEl.getElementType()) { case IJavaElement.CLASS_FILE: IClassFile classFile = (IClassFile) javaEl; if (isOnClasspath(javaEl)) { abstractOrInterface = classFile.isInterface(); } /*else { this is the case for eclipse-generated class files. if we do not perform the check in if, then we will have java model exception on classFile.isInterface() call. }*/ break; case IJavaElement.COMPILATION_UNIT: ICompilationUnit cUnit = (ICompilationUnit) javaEl; IType type = cUnit.findPrimaryType(); abstractOrInterface = type != null && type.isInterface(); break; case IJavaElement.TYPE: abstractOrInterface = ((IType) javaEl).isInterface(); break; case IJavaElement.METHOD: // test for "abstract" flag on method in a class abstractOrInterface = Flags.isAbstract(((IMethod) javaEl).getFlags()); // "abstract" flags could be not exist on interface methods if (!abstractOrInterface) { IType ancestor = (IType) javaEl.getAncestor(IJavaElement.TYPE); abstractOrInterface = ancestor != null && ancestor.isInterface(); } break; default: IType ancestor1 = (IType) javaEl.getAncestor(IJavaElement.TYPE); abstractOrInterface = ancestor1 != null && ancestor1.isInterface(); break; } } catch (JavaModelException e) { // No point to log it here // BytecodeOutlinePlugin.log(e, IStatus.ERROR); } return abstractOrInterface; }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.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 { FileData fd = file_map.get(file);/* w w w . j a v a 2 s. c om*/ ICompilationUnit icu; if (doedit) { // icu = fd.getDefaultUnit(); icu = fd.getEditableUnit(bid); } else icu = fd.getEditableUnit(bid); IJavaElement[] elts; 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"); String id = null; switch (relt.getElementType()) { case IJavaElement.COMPILATION_UNIT: id = IJavaRefactorings.RENAME_COMPILATION_UNIT; break; case IJavaElement.FIELD: IField ifld = (IField) relt; try { if (ifld.isEnumConstant()) id = IJavaRefactorings.RENAME_ENUM_CONSTANT; else id = IJavaRefactorings.RENAME_FIELD; } catch (JavaModelException e) { } break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: case IJavaElement.PACKAGE_FRAGMENT: id = IJavaRefactorings.RENAME_PACKAGE; break; case IJavaElement.LOCAL_VARIABLE: id = IJavaRefactorings.RENAME_LOCAL_VARIABLE; break; case IJavaElement.TYPE: id = IJavaRefactorings.RENAME_TYPE; break; case IJavaElement.TYPE_PARAMETER: id = IJavaRefactorings.RENAME_TYPE_PARAMETER; break; case IJavaElement.METHOD: id = IJavaRefactorings.RENAME_METHOD; break; case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_DECLARATION: break; } if (id == null) throw new BedrockException("Invalid element type to rename"); RenameJavaElementDescriptor renamer; RefactoringContribution rfc = RefactoringCore.getRefactoringContribution(id); if (rfc == null) { xw.begin("FAILURE"); xw.field("TYPE", "SETUP"); xw.textElement("ID", id); xw.end("FAILURE"); renamer = new RenameJavaElementDescriptor(id); } else { renamer = (RenameJavaElementDescriptor) rfc.createDescriptor(); } renamer.setJavaElement(relt); renamer.setKeepOriginal(keeporig); renamer.setNewName(newname); if (proj != null) renamer.setProject(proj); renamer.setRenameGetters(getters); renamer.setRenameSetters(setters); renamer.setUpdateHierarchy(dohier); renamer.setUpdateQualifiedNames(qual); renamer.setUpdateReferences(refs); renamer.setUpdateSimilarDeclarations(dosimilar); renamer.setUpdateTextualOccurrences(textocc); if (filespat != null) renamer.setFileNamePatterns(filespat); RefactoringStatus sts = renamer.validateDescriptor(); if (!sts.isOK()) { xw.begin("FAILURE"); xw.field("TYPE", "VALIDATE"); BedrockUtil.outputStatus(sts, xw); xw.end("FAILURE"); return; } try { Refactoring refactor = renamer.createRefactoring(sts); if (refactor == null) { xw.begin("FAILURE"); xw.field("TYPE", "CREATE"); xw.textElement("RENAMER", renamer.toString()); xw.textElement("REFACTOR", renamer.toString()); xw.textElement("STATUS", sts.toString()); xw.end("FAILURE"); return; } refactor.setValidationContext(null); // this seems to reset files from disk (mutliple times) sts = refactor.checkAllConditions(new NullProgressMonitor()); if (!sts.isOK()) { xw.begin("FAILURE"); xw.field("TYPE", "CHECK"); BedrockUtil.outputStatus(sts, xw); xw.end("FAILURE"); if (sts.hasFatalError()) return; } BedrockPlugin.logD("RENAME: Refactoring checked"); Change chng = refactor.createChange(new NullProgressMonitor()); BedrockPlugin.logD("RENAME: Refactoring change created"); if (doedit && chng != null) { chng.perform(new NullProgressMonitor()); } else if (chng != null) { xw.begin("EDITS"); BedrockUtil.outputChange(chng, xw); xw.end("EDITS"); } } catch (CoreException e) { throw new BedrockException("Problem creating refactoring: " + e, e); } BedrockPlugin.logD("RENAME RESULT = " + xw.toString()); }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java
License:Open Source License
/********************************************************************************/ // This shouldn't be needed since edits in a window should also be made in the default // buffer and hence in the actual compilation unit that would be reported void getActiveElements(IJavaElement root, List<IJavaElement> rslt) { switch (root.getElementType()) { case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.FIELD: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.LOCAL_VARIABLE: case IJavaElement.METHOD: case IJavaElement.PACKAGE_DECLARATION: case IJavaElement.TYPE: case IJavaElement.TYPE_PARAMETER: default://from w w w . j a va 2s.co m break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot pfr = (IPackageFragmentRoot) root; try { if (pfr.getKind() == IPackageFragmentRoot.K_SOURCE && pfr.hasChildren()) { IJavaElement[] chld = pfr.getChildren(); for (IJavaElement c : chld) getActiveElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT: IParent par = (IParent) root; try { if (par.hasChildren()) { IJavaElement[] chld = par.getChildren(); for (IJavaElement c : chld) getActiveElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.COMPILATION_UNIT: ICompilationUnit cu = (ICompilationUnit) root; IProject ip = cu.getJavaProject().getProject(); File f = BedrockUtil.getFileForPath(cu.getPath(), ip); String fnm = f.getPath(); FileData fd = file_map.get(fnm); if (fd == null) rslt.add(cu); else { rslt.add(fd.getSearchUnit()); } break; } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java
License:Open Source License
void getWorkingElements(IJavaElement root, List<ICompilationUnit> rslt) { switch (root.getElementType()) { case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.FIELD: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.LOCAL_VARIABLE: case IJavaElement.METHOD: case IJavaElement.PACKAGE_DECLARATION: case IJavaElement.TYPE: case IJavaElement.TYPE_PARAMETER: default:// w ww. j a v a 2 s . c om break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot pfr = (IPackageFragmentRoot) root; try { if (pfr.getKind() == IPackageFragmentRoot.K_SOURCE && pfr.hasChildren()) { IJavaElement[] chld = pfr.getChildren(); for (IJavaElement c : chld) getWorkingElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT: IParent par = (IParent) root; try { if (par.hasChildren()) { IJavaElement[] chld = par.getChildren(); for (IJavaElement c : chld) getWorkingElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.COMPILATION_UNIT: ICompilationUnit cu = (ICompilationUnit) root; IProject ip = cu.getJavaProject().getProject(); File f = BedrockUtil.getFileForPath(cu.getPath(), ip); String fnm = f.getPath(); FileData fd = file_map.get(fnm); if (fd != null) { rslt.add(fd.getEditableUnit(null)); } break; } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockEditor.java
License:Open Source License
void getCompilationElements(IJavaElement root, List<ICompilationUnit> rslt) { switch (root.getElementType()) { case IJavaElement.ANNOTATION: case IJavaElement.CLASS_FILE: case IJavaElement.FIELD: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.INITIALIZER: case IJavaElement.JAVA_MODEL: case IJavaElement.LOCAL_VARIABLE: case IJavaElement.METHOD: case IJavaElement.PACKAGE_DECLARATION: case IJavaElement.TYPE: case IJavaElement.TYPE_PARAMETER: default://from ww w .jav a 2 s . c o m break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot pfr = (IPackageFragmentRoot) root; try { if (pfr.getKind() == IPackageFragmentRoot.K_SOURCE && pfr.hasChildren()) { IJavaElement[] chld = pfr.getChildren(); for (IJavaElement c : chld) getCompilationElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.JAVA_PROJECT: case IJavaElement.PACKAGE_FRAGMENT: IParent par = (IParent) root; try { if (par.hasChildren()) { IJavaElement[] chld = par.getChildren(); for (IJavaElement c : chld) getCompilationElements(c, rslt); } } catch (JavaModelException e) { } break; case IJavaElement.COMPILATION_UNIT: ICompilationUnit cu = (ICompilationUnit) root; IProject ip = cu.getJavaProject().getProject(); File f = BedrockUtil.getFileForPath(cu.getPath(), ip); String fnm = f.getPath(); FileData fd = file_map.get(fnm); if (fd != null) { rslt.add(fd.getEditableUnit(null)); } else rslt.add(cu); break; } }
From source file:edu.brown.cs.bubbles.bedrock.BedrockJava.java
License:Open Source License
/********************************************************************************/ void getFullyQualifiedName(String proj, String file, int start, int end, IvyXmlWriter xw) throws BedrockException { String name = null;//from ww w . j a v a 2 s . co m String key = null; String sgn = null; String hdl = null; ICompilationUnit icu = our_plugin.getProjectManager().getCompilationUnit(proj, file); if (icu == null) throw new BedrockException("Compilation unit not found for " + file); icu = getCompilationElement(icu); try { IJavaElement[] elts = icu.codeSelect(start, end - start); for (int i = 0; i < elts.length && name == null; ++i) { switch (elts[i].getElementType()) { case IJavaElement.JAVA_PROJECT: case IJavaElement.JAVA_MODEL: case IJavaElement.PACKAGE_FRAGMENT_ROOT: case IJavaElement.CLASS_FILE: case IJavaElement.PACKAGE_FRAGMENT: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.TYPE_PARAMETER: case IJavaElement.COMPILATION_UNIT: default: break; case IJavaElement.TYPE: IType typ = (IType) elts[i]; name = typ.getFullyQualifiedName(); key = typ.getKey(); break; case IJavaElement.FIELD: IField fld = ((IField) elts[i]); name = fld.getDeclaringType().getFullyQualifiedName() + "." + fld.getElementName(); key = fld.getKey(); sgn = fld.getTypeSignature(); break; case IJavaElement.METHOD: IMethod mthd = ((IMethod) elts[i]); name = mthd.getDeclaringType().getFullyQualifiedName() + "." + mthd.getElementName(); key = mthd.getKey(); sgn = mthd.getSignature(); // TODO: might want to add signture here as well break; case IJavaElement.INITIALIZER: IInitializer init = ((IInitializer) elts[i]); name = init.getDeclaringType().getFullyQualifiedName() + ".<clinit>"; break; case IJavaElement.PACKAGE_DECLARATION: name = ((IPackageDeclaration) elts[i]).getElementName(); break; case IJavaElement.LOCAL_VARIABLE: ILocalVariable lcl = (ILocalVariable) elts[i]; name = lcl.getHandleIdentifier(); sgn = lcl.getTypeSignature(); break; } hdl = elts[i].getHandleIdentifier(); } } catch (CoreException e) { throw new BedrockException("Problem getting name", e); } if (name == null) { return; // throw new BedrockException("No identifier at location"); } xw.begin("FULLYQUALIFIEDNAME"); xw.field("NAME", name); if (key != null) xw.field("KEY", key); if (sgn != null) xw.field("TYPE", sgn); if (hdl != null) xw.field("HANDLE", hdl); xw.end(); }
From source file:edu.brown.cs.bubbles.bedrock.BedrockUtil.java
License:Open Source License
private static void outputJavaElementImpl(IJavaElement elt, Set<String> files, boolean children, IvyXmlWriter xw) {/*from w ww .j a va 2 s .c o m*/ if (elt == null) return; String close = null; switch (elt.getElementType()) { case IJavaElement.CLASS_FILE: return; case IJavaElement.PACKAGE_FRAGMENT: IOpenable opn = (IOpenable) elt; if (!opn.isOpen()) { try { opn.open(null); } catch (JavaModelException e) { BedrockPlugin.logE("Package framgent " + elt.getElementName() + " not open"); return; } } try { outputNameDetails((IPackageFragment) elt, xw); } catch (JavaModelException e) { } break; case IJavaElement.PACKAGE_FRAGMENT_ROOT: IPackageFragmentRoot pfr = (IPackageFragmentRoot) elt; try { if (!pfr.isOpen() && pfr.getKind() == IPackageFragmentRoot.K_SOURCE) { pfr.open(null); } } catch (JavaModelException e) { return; } outputNameDetails(pfr, xw); break; case IJavaElement.JAVA_PROJECT: IJavaProject ijp = (IJavaProject) elt; outputNameDetails(ijp, xw); break; case IJavaElement.JAVA_MODEL: case IJavaElement.IMPORT_CONTAINER: case IJavaElement.IMPORT_DECLARATION: case IJavaElement.TYPE_PARAMETER: default: break; case IJavaElement.COMPILATION_UNIT: IProject ip = elt.getJavaProject().getProject(); File f = getFileForPath(elt.getPath(), ip); if (files != null && !files.contains(f.getPath()) && !files.contains(f.getAbsolutePath())) { return; } xw.begin("FILE"); xw.textElement("PATH", f.getAbsolutePath()); String root = getRootForPath(elt.getPath(), ip); if (root != null) xw.textElement("PATHROOT", root); close = "FILE"; break; case IJavaElement.TYPE: try { outputNameDetails((IType) elt, xw); } catch (JavaModelException e) { } break; case IJavaElement.FIELD: try { outputNameDetails((IField) elt, xw); } catch (JavaModelException e) { } break; case IJavaElement.METHOD: try { outputNameDetails((IMethod) elt, xw); } catch (JavaModelException e) { } break; case IJavaElement.INITIALIZER: outputNameDetails((IInitializer) elt, xw); break; case IJavaElement.PACKAGE_DECLARATION: outputNameDetails((IPackageDeclaration) elt, xw); break; case IJavaElement.LOCAL_VARIABLE: outputNameDetails((ILocalVariable) elt, xw); break; } if (children && elt instanceof IParent) { try { for (IJavaElement c : ((IParent) elt).getChildren()) { outputJavaElementImpl(c, files, children, xw); } } catch (JavaModelException e) { } } if (close != null) xw.end(close); }
From source file:edu.buffalo.cse.green.editor.action.IncrementalExploreAction.java
License:Open Source License
/** * @see edu.buffalo.cse.green.editor.action.ContextAction#isAvailableForBinary() *//* ww w. ja v a 2 s . c o m*/ public boolean isAvailableForBinary() { IClassFile classFile = (IClassFile) _element.getAncestor(IJavaElement.CLASS_FILE); try { return (classFile.getSourceRange() != null); } catch (JavaModelException e) { // no source code attached return false; } }
From source file:edu.buffalo.cse.green.editor.DiagramEditor.java
License:Open Source License
/** * Refreshes the relationships in the editor * // w ww .ja va2 s. c om * @param force - If true, will run the relationship recognizers. If false, * will run the relationship recognizers only if they are not disabled in * the <code>PlugIn</code> instance. */ private void refreshRelationships(boolean force) { List<String> visitedElements = new ArrayList<String>(); List<String> outdated = new ArrayList<String>(); if (!force && !PlugIn.isRecognizersEnabled()) { return; } // get a list of all classes and compilation units in the editor List<IJavaElement> elements = new ArrayList<IJavaElement>(); elements.addAll(getRootModel().getElementsOfKind(IJavaElement.COMPILATION_UNIT)); elements.addAll(getRootModel().getElementsOfKind(IJavaElement.CLASS_FILE)); // find relationships attached to those elements for (IJavaElement element : elements) { findRelationships(element); visitedElements.add(element.getHandleIdentifier()); } // remove outdated CompilationUnit objects from the map for (String cu : _cuMap.keySet()) { if (!(visitedElements.contains(cu))) { outdated.add(cu); } } for (String obsolete : outdated) { _cuMap.remove(obsolete); } Set<RelationshipModel> toRemove = new HashSet<RelationshipModel>(); _relationshipChanges = getRootModel().getRelationshipCache().processChanges(); // update the relationships as appropriate for (RelationshipModel rModel : _relationshipChanges) { if (rModel.getRelationships().size() == 0) { // removal rModel.removeFromParent(); toRemove.add(rModel); } else { rModel.setParent(getRootModel()); if (rModel.getSourceModel() != null && rModel.getTargetModel() != null) { if (!getRootModel().getRelationships().contains(rModel)) { getRootModel().addChild(rModel); toRemove.add(rModel); } } } } // update the cardinality labels of all updated relationships for (RelationshipModel model : toRemove) { model.updateCardinality(); } _relationshipChanges.removeAll(toRemove); }