Java Code Examples for org.eclipse.jdt.core.ToolFactory#createDefaultClassFileReader()
The following examples show how to use
org.eclipse.jdt.core.ToolFactory#createDefaultClassFileReader() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SerialVersionHashOperation.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 6 votes |
public static Long calculateSerialVersionId(ITypeBinding typeBinding, final IProgressMonitor monitor) throws CoreException, IOException { try { IFile classfileResource= getClassfile(typeBinding); if (classfileResource == null) return null; InputStream contents= classfileResource.getContents(); try { IClassFileReader cfReader= ToolFactory.createDefaultClassFileReader(contents, IClassFileReader.ALL); if (cfReader != null) { return calculateSerialVersionId(cfReader); } } finally { contents.close(); } return null; } finally { if (monitor != null) monitor.done(); } }
Example 2
Source File: ClassFileWorkingCopy.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 5 votes |
/** * @see Openable#openBuffer(IProgressMonitor, Object) */ protected IBuffer openBuffer(IProgressMonitor pm, Object info) throws JavaModelException { // create buffer IBuffer buffer = BufferManager.createBuffer(this); // set the buffer source IBuffer classFileBuffer = this.classFile.getBuffer(); if (classFileBuffer != null) { buffer.setContents(classFileBuffer.getCharacters()); } else { // Disassemble IClassFileReader reader = ToolFactory.createDefaultClassFileReader(this.classFile, IClassFileReader.ALL); Disassembler disassembler = new Disassembler(); String contents = disassembler.disassemble(reader, Util.getLineSeparator("", getJavaProject()), ClassFileBytesDisassembler.WORKING_COPY); //$NON-NLS-1$ buffer.setContents(contents); } // add buffer to buffer cache BufferManager bufManager = getBufferManager(); bufManager.addBuffer(buffer); // listen to buffer changes buffer.addBufferChangedListener(this); return buffer; }
Example 3
Source File: JavaHotCodeReplaceProvider.java From java-debug with Eclipse Public License 1.0 | 4 votes |
/** * Answers whether children should be visited. * <p> * If the associated resource is a class file which has been changed, record it. * </p> */ @Override public boolean visit(IResourceDelta delta) { if (delta == null || 0 == (delta.getKind() & IResourceDelta.CHANGED)) { return false; } IResource resource = delta.getResource(); if (resource != null) { switch (resource.getType()) { case IResource.FILE: if (0 == (delta.getFlags() & IResourceDelta.CONTENT)) { return false; } if (CLASS_FILE_EXTENSION.equals(resource.getFullPath().getFileExtension())) { IPath localLocation = resource.getLocation(); if (localLocation != null) { String path = localLocation.toOSString(); IClassFileReader reader = ToolFactory.createDefaultClassFileReader(path, IClassFileReader.CLASSFILE_ATTRIBUTES); if (reader != null) { // this name is slash-delimited String qualifiedName = new String(reader.getClassName()); boolean hasBlockingErrors = false; try { // If the user doesn't want to replace // classfiles containing // compilation errors, get the source // file associated with // the class file and query it for // compilation errors IJavaProject pro = JavaCore.create(resource.getProject()); ISourceAttribute sourceAttribute = reader.getSourceFileAttribute(); String sourceName = null; if (sourceAttribute != null) { sourceName = new String(sourceAttribute.getSourceFileName()); } IResource sourceFile = getSourceFile(pro, qualifiedName, sourceName); if (sourceFile != null) { IMarker[] problemMarkers = null; problemMarkers = sourceFile.findMarkers( IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); for (IMarker problemMarker : problemMarkers) { if (problemMarker.getAttribute(IMarker.SEVERITY, -1) == IMarker.SEVERITY_ERROR) { hasBlockingErrors = true; break; } } } } catch (CoreException e) { logger.log(Level.SEVERE, "Failed to visit classes: " + e.getMessage(), e); } if (!hasBlockingErrors) { changedFiles.add(resource); // dot-delimit the name fullyQualifiedNames.add(qualifiedName.replace('/', '.')); } } } } return false; default: return true; } } return true; }
Example 4
Source File: JarFileExportOperation.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 4 votes |
private Map<String, ArrayList<IResource>> buildJavaToClassMap(IContainer container, IProgressMonitor monitor) throws CoreException { if (container == null || !container.isAccessible()) return new HashMap<String, ArrayList<IResource>>(0); /* * XXX: Bug 6584: Need a way to get class files for a java file (or CU) */ IClassFileReader cfReader= null; IResource[] members= container.members(); Map<String, ArrayList<IResource>> map= new HashMap<String, ArrayList<IResource>>(members.length); for (int i= 0; i < members.length; i++) { if (isClassFile(members[i])) { IFile classFile= (IFile)members[i]; URI location= classFile.getLocationURI(); if (location != null) { InputStream contents= null; try { contents= EFS.getStore(location).openInputStream(EFS.NONE, monitor); cfReader= ToolFactory.createDefaultClassFileReader(contents, IClassFileReader.CLASSFILE_ATTRIBUTES); } finally { try { if (contents != null) contents.close(); } catch (IOException e) { throw new CoreException(new Status(IStatus.ERROR, JavaPlugin.getPluginId(), IStatus.ERROR, Messages.format(JarPackagerMessages.JarFileExportOperation_errorCannotCloseConnection, BasicElementLabels.getURLPart(Resources.getLocationString(classFile))), e)); } } if (cfReader != null) { ISourceAttribute sourceAttribute= cfReader.getSourceFileAttribute(); if (sourceAttribute == null) { /* * Can't fully build the map because one or more * class file does not contain the name of its * source file. */ addWarning(Messages.format( JarPackagerMessages.JarFileExportOperation_classFileWithoutSourceFileAttribute, BasicElementLabels.getURLPart(Resources.getLocationString(classFile))), null); return null; } String javaName= new String(sourceAttribute.getSourceFileName()); ArrayList<IResource> classFiles= map.get(javaName); if (classFiles == null) { classFiles= new ArrayList<IResource>(3); map.put(javaName, classFiles); } classFiles.add(classFile); } } } } return map; }