List of usage examples for org.eclipse.jdt.core.util IClassFileReader getClassName
char[] getClassName();
From source file:com.redhat.ceylon.eclipse.code.wizard.ClassPathDetector.java
License:Open Source License
private IPath detectOutputFolder() throws CoreException { HashSet<IPath> classFolders = new HashSet<IPath>(); for (Iterator<IResource> iter = fClassFiles.iterator(); iter.hasNext();) { IFile file = (IFile) iter.next(); IClassFileReader reader = null; InputStream content = null; try {// w ww .ja v a2 s . co m content = file.getContents(); reader = ToolFactory.createDefaultClassFileReader(content, IClassFileReader.CLASSFILE_ATTRIBUTES); } finally { try { if (content != null) content.close(); } catch (IOException e) { throw new CoreException(new Status(IStatus.ERROR, JavaPlugin.getPluginId(), IStatus.ERROR, Messages.format("error closing file", BasicElementLabels.getPathLabel(file.getFullPath(), false)), e)); } } if (reader == null) { continue; // problematic class file } char[] className = reader.getClassName(); ISourceAttribute sourceAttribute = reader.getSourceFileAttribute(); if (className != null && sourceAttribute != null && sourceAttribute.getSourceFileName() != null) { IPath packPath = file.getParent().getFullPath(); int idx = CharOperation.lastIndexOf('/', className) + 1; IPath relPath = new Path(new String(className, 0, idx)); IPath cuPath = relPath.append(new String(sourceAttribute.getSourceFileName())); IPath resPath = null; if (idx == 0) { resPath = packPath; } else { IPath folderPath = getFolderPath(packPath, relPath); if (folderPath != null) { resPath = folderPath; } } if (resPath != null) { IPath path = findInSourceFolders(cuPath); if (path != null) { return resPath; } else { classFolders.add(resPath); } } } } IPath projPath = fProject.getFullPath(); if (fSourceFolders.size() == 1 && classFolders.isEmpty() && fSourceFolders.get(projPath) != null) { return projPath; } else { IPath path = projPath .append(PreferenceConstants.getPreferenceStore().getString(PreferenceConstants.SRCBIN_BINNAME)); while (classFolders.contains(path)) { path = new Path(path.toString() + '1'); } return path; } }
From source file:in.software.analytics.parichayana.core.internal.builder.ParichayanaBuilder.java
License:Open Source License
/** * @param delta//from www . j av a 2 s.c o m * @param monitor * @throws CoreException */ private void buildDelta(IResourceDelta delta, IProgressMonitor monitor) throws CoreException { final List<ICompilationUnit> units = new ArrayList<ICompilationUnit>(); delta.accept(new IResourceDeltaVisitor() { @Override public boolean visit(IResourceDelta delta) throws CoreException { IResource res = delta.getResource(); switch (res.getType()) { case IResource.ROOT: return true; case IResource.PROJECT: return true; case IResource.FOLDER: return true; case IResource.FILE: IJavaElement element = JavaCore.create(res); ICompilationUnit cu = null; if (element instanceof IClassFile) { cu = getCompilationUnit((IClassFile) element); } if (element instanceof ICompilationUnit) { cu = (ICompilationUnit) element; } if (cu != null) { cleanupMarkers(cu.getUnderlyingResource()); if (units.contains(cu)) { return false; } units.add(cu); } return false; default: return false; } } public ICompilationUnit getCompilationUnit(IClassFile classFile) { IClassFileReader classFileReader = ToolFactory.createDefaultClassFileReader(classFile, IClassFileReader.CLASSFILE_ATTRIBUTES); if (classFileReader != null) { char[] className = classFileReader.getClassName(); if (className != null) { String fqn = new String(classFileReader.getClassName()).replace("/", "."); //$NON-NLS-1$ //$NON-NLS-2$ IJavaProject javaProject = classFile.getJavaProject(); IType sourceType = null; try { sourceType = javaProject.findType(fqn); if (sourceType != null) { return sourceType.getCompilationUnit(); } } catch (JavaModelException e) { // ignore } } } return null; } }); build(units, monitor); }
From source file:nz.ac.massey.cs.jquest.views.QueryView.java
License:Open Source License
private String getFullname(IJavaElement e) { String fullname = null;//from w ww. ja v a2s.com try { if (e instanceof ICompilationUnit) { fullname = ".fullname=='" + ((ICompilationUnit) e).getTypes()[0].getFullyQualifiedName() + "'"; return fullname; } else if (e instanceof IClassFile) { IClassFile icf = (IClassFile) e; IClassFileReader r = new ClassFileReader(icf.getBytes(), IClassFileReader.ALL); char[] name = r.getClassName(); String classname = String.valueOf(name); classname = classname.replace("/", "."); fullname = ".fullname=='" + classname + "'"; return fullname; } else if (e instanceof IPackageFragment) { fullname = ".namespace=='" + e.getElementName() + "'"; return fullname; } else if (e instanceof IPackageFragmentRoot) { fullname = ".container=='" + e.getElementName() + "'"; return fullname; } else { return null; } } catch (Exception e1) { e1.printStackTrace(); } return null; }
From source file:org.eclipse.acceleo.common.internal.utils.workspace.AcceleoDeltaVisitor.java
License:Open Source License
/** * {@inheritDoc}//from w ww . j av a 2 s .co m * * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta) */ public boolean visit(IResourceDelta delta) throws CoreException { if (delta == null || 0 == (delta.getKind() & IResourceDelta.CHANGED)) { return false; } boolean visit = false; IResource resource = delta.getResource(); if (resource != null) { switch (resource.getType()) { case IResource.FILE: if (0 == (delta.getFlags() & IResourceDelta.CONTENT)) { break; } if ("class".equals(resource.getFullPath().getFileExtension())) { //$NON-NLS-1$ final IClassFileReader reader = ToolFactory.createDefaultClassFileReader( resource.getLocation().toOSString(), IClassFileReader.CLASSFILE_ATTRIBUTES); changedClasses.add(new String(reader.getClassName()).replace("/", ".")); //$NON-NLS-1$ //$NON-NLS-2$ } break; case IResource.PROJECT: changedProjects.add((IProject) resource); visit = true; break; default: visit = true; } } return visit; }
From source file:org.eclipse.ajdt.internal.ui.editor.quickfix.AJSerialVersionHashOperation.java
License:Open Source License
private static Long calculateSerialVersionId(IClassFileReader cfReader) throws IOException { // implementing algorithm specified on http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/class.html#4100 ByteArrayOutputStream os = new ByteArrayOutputStream(); DataOutputStream doos = new DataOutputStream(os); doos.writeUTF(getClassName(cfReader.getClassName())); // class name int mod = getClassModifiers(cfReader); // System.out.println(Integer.toHexString(mod) + ' ' + Flags.toString(mod)); int classModifiers = mod & (Flags.AccPublic | Flags.AccFinal | Flags.AccInterface | Flags.AccAbstract); doos.writeInt(classModifiers); // class modifiers char[][] interfaces = getSortedInterfacesNames(cfReader); for (int i = 0; i < interfaces.length; i++) { doos.writeUTF(getClassName(interfaces[i])); }//from ww w. j a v a2s .com IFieldInfo[] sortedFields = getSortedFields(cfReader); for (int i = 0; i < sortedFields.length; i++) { IFieldInfo curr = sortedFields[i]; int flags = curr.getAccessFlags(); if (!Flags.isPrivate(flags) || (!Flags.isStatic(flags) && !Flags.isTransient(flags))) { doos.writeUTF(new String(curr.getName())); doos.writeInt(flags & (Flags.AccPublic | Flags.AccPrivate | Flags.AccProtected | Flags.AccStatic | Flags.AccFinal | Flags.AccVolatile | Flags.AccTransient)); // field modifiers doos.writeUTF(new String(curr.getDescriptor())); } } if (hasStaticClassInitializer(cfReader)) { doos.writeUTF(STATIC_CLASS_INITIALIZER); doos.writeInt(Flags.AccStatic); doos.writeUTF("()V"); //$NON-NLS-1$ } IMethodInfo[] sortedMethods = getSortedMethods(cfReader); for (int i = 0; i < sortedMethods.length; i++) { IMethodInfo curr = sortedMethods[i]; int flags = curr.getAccessFlags(); if (!Flags.isPrivate(flags) && !curr.isClinit()) { doos.writeUTF(new String(curr.getName())); doos.writeInt(flags & (Flags.AccPublic | Flags.AccPrivate | Flags.AccProtected | Flags.AccStatic | Flags.AccFinal | Flags.AccSynchronized | Flags.AccNative | Flags.AccAbstract | Flags.AccStrictfp)); // method modifiers doos.writeUTF(getClassName(curr.getDescriptor())); } } doos.flush(); return computeHash(os.toByteArray()); }
From source file:org.eclipse.ajdt.internal.ui.editor.quickfix.AJSerialVersionHashOperation.java
License:Open Source License
private static int getClassModifiers(IClassFileReader cfReader) { IInnerClassesAttribute innerClassesAttribute = cfReader.getInnerClassesAttribute(); if (innerClassesAttribute != null) { IInnerClassesAttributeEntry[] entries = innerClassesAttribute.getInnerClassAttributesEntries(); for (int i = 0; i < entries.length; i++) { IInnerClassesAttributeEntry entry = entries[i]; char[] innerClassName = entry.getInnerClassName(); if (innerClassName != null) { if (CharOperation.equals(cfReader.getClassName(), innerClassName)) { return entry.getAccessFlags(); }/*from w w w .ja v a 2 s. c om*/ } } } return cfReader.getAccessFlags(); }
From source file:org.eclipse.pde.tools.internal.versioning.JavaClassVersionCompare.java
License:Open Source License
public int checkJavaClassVersions(MultiStatus status, Object javaClassObj1, Object javaClassObj2, IProgressMonitor monitor) throws CoreException { try {//from w w w. ja v a2 s. co m monitor = VersioningProgressMonitorWrapper.monitorFor(monitor); monitor.beginTask(Messages.JavaClassVersionCompare_comparingClassMsg, 100); finalResult = status; // get IClassFileReader instances of javaClassObj1 and javaClassObj2 IClassFileReader classFileReader1 = ClassFileHelper.getReader(javaClassObj1); if (classFileReader1 == null) { if (javaClassObj1 instanceof InputStream) finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.PROCESS_ERROR_STATUS | IVersionCompare.ERROR_OCCURRED, Messages.JavaClassVersionCompare_inputStreamErrMsg, null)); else finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.PROCESS_ERROR_STATUS | IVersionCompare.ERROR_OCCURRED, NLS.bind(Messages.JavaClassVersionCompare_classFileNotLoadedMsg, javaClassObj1), null)); return IVersionCompare.ERROR_OCCURRED; } IClassFileReader classFileReader2 = ClassFileHelper.getReader(javaClassObj2); // worked 5% monitor.worked(5); if (monitor.isCanceled()) throw new OperationCanceledException(); if (classFileReader2 == null) { if (javaClassObj2 instanceof InputStream) finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.PROCESS_ERROR_STATUS | IVersionCompare.ERROR_OCCURRED, Messages.JavaClassVersionCompare_inputStreamErrMsg, null)); else finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.PROCESS_ERROR_STATUS | IVersionCompare.ERROR_OCCURRED, NLS.bind(Messages.JavaClassVersionCompare_classFileNotLoadedMsg, javaClassObj2), null)); return IVersionCompare.ERROR_OCCURRED; } // worked 5% monitor.worked(5); if (monitor.isCanceled()) throw new OperationCanceledException(); // initialize flags hasError = false; hasMajorChange = false; hasMinorChange = false; hasMicroChange = false; // compare two classes ( 90% workload) compareJavaClasses(classFileReader1, classFileReader2, new SubProgressMonitor(monitor, 90)); // analysis result if (hasError) { finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.CLASS_OVERALL_STATUS | IVersionCompare.ERROR_OCCURRED, NLS.bind(Messages.JavaClassVersionCompare_classErrorOccurredMsg, charsToString(classFileReader1.getClassName())), null)); return IVersionCompare.ERROR_OCCURRED; } if (hasMajorChange) { finalResult.merge(resultStatusHandler(IStatus.INFO, IVersionCompare.CLASS_OVERALL_STATUS, NLS.bind(Messages.JavaClassVersionCompare_classMajorChangeMsg, charsToString(classFileReader1.getClassName())), null)); return IVersionCompare.MAJOR_CHANGE; } if (hasMinorChange) { finalResult.merge(resultStatusHandler(IStatus.INFO, IVersionCompare.CLASS_OVERALL_STATUS, NLS.bind(Messages.JavaClassVersionCompare_classMinorChangeMsg, charsToString(classFileReader1.getClassName())), null)); return IVersionCompare.MINOR_CHANGE; } if (hasMicroChange) { finalResult.merge(resultStatusHandler(IStatus.INFO, IVersionCompare.CLASS_OVERALL_STATUS, NLS.bind(Messages.JavaClassVersionCompare_classMicroChange, charsToString(classFileReader1.getClassName())), null)); return IVersionCompare.MICRO_CHANGE; } return IVersionCompare.NO_CHANGE; } finally { monitor.done(); } }
From source file:org.eclipse.pde.tools.internal.versioning.JavaClassVersionCompare.java
License:Open Source License
/** * compares two java classes denoted by <code>classFileReader1</code> and <code>classFileReader2</code>, * and check if there is any change from <code>classFileReader2</code> to <code>classFileReader1</code>. * //w w w. j av a2 s. c o m * @param classFileReader1 * @param classFileReader2 * @param monitor IProgressMonitor instance * @return compare result IStatus instance */ private IStatus compareJavaClasses(IClassFileReader classFileReader1, IClassFileReader classFileReader2, IProgressMonitor monitor) { try { monitor.beginTask("", 100); //$NON-NLS-1$ // compare class names String name1 = charsToString(classFileReader1.getClassName()); String name2 = charsToString(classFileReader2.getClassName()); if (!name1.equals(name2)) { finalResult.merge(resultStatusHandler(IStatus.WARNING, IVersionCompare.PROCESS_ERROR_STATUS, NLS.bind(Messages.JavaClassVersionCompare_differentClassNameMsg, name1, name2), null)); return finalResult; } // worked 5% monitor.worked(5); // compare super classes checkSuperClasses(name1, classFileReader1.getSuperclassName(), classFileReader2.getSuperclassName()); // worked 5% monitor.worked(5); // compare interfaces checkInterfaces(name1, generateList(classFileReader1.getInterfaceNames()), generateList(classFileReader2.getInterfaceNames())); // worked 5% monitor.worked(5); // compare modifier of classes checkClassModifiers(name1, classFileReader1.getAccessFlags(), classFileReader2.getAccessFlags()); // worked 5% monitor.worked(5); // compare fields checkElements(name1, generateTable(classFileReader1.getFieldInfos()), generateTable(classFileReader2.getFieldInfos())); // worked 40% monitor.worked(40); // compare methods (40%) checkElements(name1, generateTable(classFileReader1.getMethodInfos()), generateTable(classFileReader2.getMethodInfos())); return finalResult; } finally { monitor.done(); } }
From source file:org.eclipse.pde.tools.internal.versioning.PluginVersionCompare.java
License:Open Source License
/** * compares IClassFileReader instances in <code>list1</code> to the corresponding one * in <code>list2</code>// w w w . j ava2 s.c o m * @param list1 contains IClassFileReader instances * @param list2 contains IClassFileReader instances * @param monitor IProgressMonitor instance */ private void compareClasses(List list1, List list2, IProgressMonitor monitor) { try { monitor.beginTask("", list1.size() + 1); //$NON-NLS-1$ for (Iterator classIterator1 = list1.iterator(); classIterator1.hasNext();) { if (monitor.isCanceled()) throw new OperationCanceledException(); IClassFileReader classFileReader1 = (IClassFileReader) classIterator1.next(); String className1 = charsToString(classFileReader1.getClassName()); Iterator classIterator2; boolean beCompared = false; for (classIterator2 = list2.iterator(); classIterator2.hasNext();) { IClassFileReader classFileReader2 = (IClassFileReader) classIterator2.next(); if (className1.equals(charsToString(classFileReader2.getClassName()))) { // compare two IClassFileReader instances and merge the result into finalResult try { processed(classCompare.checkJavaClassVersions(finalResult, classFileReader1, classFileReader2, new SubProgressMonitor(monitor, 1))); } catch (CoreException ce) { finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.PROCESS_ERROR_STATUS | IVersionCompare.ERROR_OCCURRED, NLS.bind(Messages.PluginVersionCompare_errorWhenCompareClassesMsg, charsToString(classFileReader1.getClassName())), null)); } list2.remove(classFileReader2); beCompared = true; break; } } if (!beCompared && shouldProcess(classFileReader1)) { // new added class finalResult.merge(resultStatusHandler(IStatus.INFO, IVersionCompare.PLUGIN_DETAIL_STATUS | IVersionCompare.MINOR_CHANGE, NLS.bind(Messages.PluginVersionCompare_destinationClassNotFoundMsg, charsToString(classFileReader1.getClassName())), null)); } } // no longer exist classes for (Iterator iterator2 = list2.iterator(); iterator2.hasNext();) { IClassFileReader classFileReader = (IClassFileReader) iterator2.next(); if (shouldProcess(classFileReader)) finalResult.merge(resultStatusHandler(IStatus.INFO, IVersionCompare.PLUGIN_DETAIL_STATUS | IVersionCompare.MAJOR_CHANGE, NLS.bind(Messages.PluginVersionCompare_sourceClassNotFoundMsg, charsToString(classFileReader.getClassName())), null)); } monitor.worked(1); } finally { monitor.done(); } }
From source file:org.eclipse.pde.tools.internal.versioning.PluginVersionCompare.java
License:Open Source License
/** * process classes indicated by URL instances in <code>classArray</code> depending on <code>flag</code> * if <code>flag</code> is NEW_CLASS, all the IClassFileReader instances in <code>classArray</code> are new added classes * if <code>flag</code> is DELETED_CLASS, all the IClassFileReader instances in <code>classArray</code> are classes no longer exist * @param classArray contains URL instances * @param flag could be NEW_CLASS or DELETED_CLASS */// ww w.java2 s . co m private void processChangedClasses(Object[] classArray, int flag) { if (classArray.length == 0) return; for (int i = 0; i < classArray.length; i++) { if (!(classArray[i] instanceof URL)) continue; try { IClassFileReader classFileReader = ClassFileHelper.getReader(classArray[i]); if (classFileReader == null) { finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.PROCESS_ERROR_STATUS | IVersionCompare.ERROR_OCCURRED, NLS.bind(Messages.PluginVersionCompare_couldNotReadClassMsg, ((URL) classArray[i]).getFile()), null)); continue; } if (shouldProcess(classFileReader) && shouldProcess(charsToString(classFileReader.getClassName()))) if (flag == NEW_CLASS) // new added class finalResult.merge(resultStatusHandler(IStatus.INFO, IVersionCompare.CLASS_OVERALL_STATUS | IVersionCompare.MINOR_CHANGE, NLS.bind(Messages.PluginVersionCompare_destinationClassNotFoundMsg, charsToString(classFileReader.getClassName())), null)); else if (flag == DELETED_CLASS) // deleted class finalResult.merge(resultStatusHandler(IStatus.INFO, IVersionCompare.CLASS_OVERALL_STATUS | IVersionCompare.MAJOR_CHANGE, NLS.bind(Messages.PluginVersionCompare_sourceClassNotFoundMsg, charsToString(classFileReader.getClassName())), null)); } catch (CoreException e) { finalResult.merge(resultStatusHandler(IStatus.ERROR, IVersionCompare.PROCESS_ERROR_STATUS | IVersionCompare.ERROR_OCCURRED, NLS.bind(Messages.PluginVersionCompare_couldNotReadClassMsg, ((URL) classArray[i]).getFile()), e)); } } }