Example usage for org.eclipse.jdt.core.util ISourceAttribute getSourceFileName

List of usage examples for org.eclipse.jdt.core.util ISourceAttribute getSourceFileName

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.util ISourceAttribute getSourceFileName.

Prototype

char[] getSourceFileName();

Source Link

Document

Answer back the source file name of this attribute.

Usage

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;/*from w  w w . jav a 2s . c  o  m*/
        InputStream content = null;
        try {
            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:de.tud.cs.st.vespucci.diagram.dnd.JavaType.ElementNameVisitor.java

License:Open Source License

@Override
public Object visit(final ISourceAttribute sourceAttribute) {
    return sourceAttribute.getSourceFileName().toString();
}

From source file:org.eclipse.ajdt.internal.ui.wizards.exports.AJJarFileExportOperation.java

License:Open Source License

private Map<String, ArrayList<IFile>> buildJavaToClassMap(IContainer container) throws CoreException {
    if (container == null || !container.isAccessible())
        return new HashMap<String, ArrayList<IFile>>(0);
    /*/*from   w ww  .j av  a2s  . c o m*/
     * 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<IFile>> map = new HashMap<String, ArrayList<IFile>>(members.length);
    for (int i = 0; i < members.length; i++) {
        if (isClassFile(members[i])) {
            IFile classFile = (IFile) members[i];
            IPath location = classFile.getLocation();
            if (location != null) {
                File file = location.toFile();
                cfReader = ToolFactory.createDefaultClassFileReader(location.toOSString(),
                        IClassFileReader.CLASSFILE_ATTRIBUTES);
                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,
                                file), null);
                        return null;
                    }
                    String javaName = new String(sourceAttribute.getSourceFileName());
                    ArrayList<IFile> classFiles = map.get(javaName);
                    if (classFiles == null) {
                        classFiles = new ArrayList<IFile>(3);
                        map.put(javaName, classFiles);
                    }
                    classFiles.add(classFile);
                }
            }
        }
    }
    return map;
}