Example usage for org.eclipse.jdt.internal.core.builder SourceFile SourceFile

List of usage examples for org.eclipse.jdt.internal.core.builder SourceFile SourceFile

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core.builder SourceFile SourceFile.

Prototype

public SourceFile(IFile resource, ClasspathMultiDirectory sourceLocation) 

Source Link

Usage

From source file:org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.java

License:Open Source License

protected void addAllSourceFiles(final ArrayList sourceFiles) throws CoreException {
    // GROOVY start
    // determine if this is a Groovy project
    final boolean isInterestingProject = LanguageSupportFactory
            .isInterestingProject(this.javaBuilder.getProject());
    // GROOVY end
    for (int i = 0, l = this.sourceLocations.length; i < l; i++) {
        final ClasspathMultiDirectory sourceLocation = this.sourceLocations[i];
        final char[][] exclusionPatterns = sourceLocation.exclusionPatterns;
        final char[][] inclusionPatterns = sourceLocation.inclusionPatterns;
        final boolean isAlsoProject = sourceLocation.sourceFolder.equals(this.javaBuilder.currentProject);
        final int segmentCount = sourceLocation.sourceFolder.getFullPath().segmentCount();
        final IContainer outputFolder = sourceLocation.binaryFolder;
        final boolean isOutputFolder = sourceLocation.sourceFolder.equals(outputFolder);
        sourceLocation.sourceFolder.accept(new IResourceProxyVisitor() {
            public boolean visit(IResourceProxy proxy) throws CoreException {
                switch (proxy.getType()) {
                case IResource.FILE:
                    // GROOVY start
                    /* old {
                    if (org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(proxy.getName())) {
                    } new *//*from  ww  w.j ava2s.  co m*/
                    // GRECLIPSE-404 must call 'isJavaLikeFile' directly in order to make the Scala-Eclipse plugin's weaving happy
                    String resourceName = proxy.getName();
                    if ((!isInterestingProject
                            && org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(resourceName)
                            && !LanguageSupportFactory.isInterestingSourceFile(resourceName))
                            || (isInterestingProject && LanguageSupportFactory.isSourceFile(resourceName,
                                    isInterestingProject))) {
                        // GROOVY end
                        IResource resource = proxy.requestResource();
                        if (exclusionPatterns != null || inclusionPatterns != null)
                            if (Util.isExcluded(resource.getFullPath(), inclusionPatterns, exclusionPatterns,
                                    false))
                                return false;
                        sourceFiles.add(new SourceFile((IFile) resource, sourceLocation));
                    }
                    return false;
                case IResource.FOLDER:
                    IPath folderPath = null;
                    if (isAlsoProject)
                        if (isExcludedFromProject(folderPath = proxy.requestFullPath()))
                            return false;
                    if (exclusionPatterns != null) {
                        if (folderPath == null)
                            folderPath = proxy.requestFullPath();
                        if (Util.isExcluded(folderPath, inclusionPatterns, exclusionPatterns, true)) {
                            // must walk children if inclusionPatterns != null, can skip them if == null
                            // but folder is excluded so do not create it in the output folder
                            return inclusionPatterns != null;
                        }
                    }
                    if (!isOutputFolder) {
                        if (folderPath == null)
                            folderPath = proxy.requestFullPath();
                        String packageName = folderPath.lastSegment();
                        if (packageName.length() > 0) {
                            String sourceLevel = AbstractImageBuilder.this.javaBuilder.javaProject
                                    .getOption(JavaCore.COMPILER_SOURCE, true);
                            String complianceLevel = AbstractImageBuilder.this.javaBuilder.javaProject
                                    .getOption(JavaCore.COMPILER_COMPLIANCE, true);
                            if (JavaConventions.validatePackageName(packageName, sourceLevel, complianceLevel)
                                    .getSeverity() != IStatus.ERROR)
                                createFolder(folderPath.removeFirstSegments(segmentCount), outputFolder);
                        }
                    }
                }
                return true;
            }
        }, IResource.NONE);
        this.notifier.checkCancel();
    }
}

From source file:org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.java

License:Open Source License

protected SourceFile findSourceFile(IFile file, boolean mustExist) {
    if (mustExist && !file.exists())
        return null;

    // assumes the file exists in at least one of the source folders & is not excluded
    ClasspathMultiDirectory md = this.sourceLocations[0];
    if (this.sourceLocations.length > 1) {
        IPath sourceFileFullPath = file.getFullPath();
        for (int j = 0, m = this.sourceLocations.length; j < m; j++) {
            if (this.sourceLocations[j].sourceFolder.getFullPath().isPrefixOf(sourceFileFullPath)) {
                md = this.sourceLocations[j];
                if (md.exclusionPatterns == null && md.inclusionPatterns == null)
                    break;
                if (!Util.isExcluded(file, md.inclusionPatterns, md.exclusionPatterns))
                    break;
            }/*  w w  w  .  jav  a  2  s .com*/
        }
    }
    return new SourceFile(file, md);
}