Example usage for org.eclipse.jdt.core IPackageFragmentRoot getKind

List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getKind

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragmentRoot getKind.

Prototype

int getKind() throws JavaModelException;

Source Link

Document

Returns this package fragment root's kind encoded as an integer.

Usage

From source file:net.rim.ejde.internal.util.ProjectUtils.java

License:Open Source License

/**
 * Locates all the source folders represented by type IPackageFragmentRoot.K_SOURCE for the given project.
 *
 * @param project/*from  w w  w  . jav a 2s  .c  o m*/
 *            The IProject to search for source folders.
 * @return An IPackageFragmentRoot array containing each K_SOURCE fragment found for the given project.
 */
public static IPackageFragmentRoot[] getProjectSourceFolders(IProject project) {
    IJavaProject iJavaProject = JavaCore.create(project);
    ArrayList<IPackageFragmentRoot> sourceRoots = new ArrayList<IPackageFragmentRoot>();
    if (iJavaProject.exists() && iJavaProject.isOpen()) {
        try {
            IPackageFragmentRoot[] roots = iJavaProject.getAllPackageFragmentRoots();
            for (IPackageFragmentRoot root : roots) {
                if (IPackageFragmentRoot.K_SOURCE == root.getKind()) {
                    sourceRoots.add(root);
                }
            }
        } catch (JavaModelException e) {
            logger.error("findProjectSources: Could not retrieve project sources:", e); //$NON-NLS-1$
            return new IPackageFragmentRoot[0];
        }
    }
    return sourceRoots.toArray(new IPackageFragmentRoot[sourceRoots.size()]);
}

From source file:nz.ac.massey.cs.barrio.srcgraphbuilder.ExtractDependencyGraphJob.java

License:Apache License

@Override
protected IStatus run(IProgressMonitor monitor) {
    try {/* w  w w . j a  v  a2s . co  m*/
        int SCALE = 100000;
        monitor.beginTask("extracting dependency graph from Java project", SCALE);
        monitor.subTask("gathering classes");
        try {
            for (IJavaElement e : project.getChildren()) {
                //System.out.println("child"+e+" - "+e.getClass());
                if (e instanceof IPackageFragmentRoot) {
                    // sources
                    IPackageFragmentRoot pfr = (IPackageFragmentRoot) e;
                    if (pfr.getKind() == pfr.K_SOURCE) {
                        ContainerRef c = new ContainerRef();
                        c.setSourceContainer(true);
                        c.setName(pfr.getElementName());
                        c.setArchive(pfr.isArchive());
                        this.containers.add(c);
                        gatherSources(c, pfr);
                        // System.out.println("Added container " + c.getName() + " - contains " + c.getClassCount() + " sources");
                    } else if (pfr.getKind() == pfr.K_BINARY) {
                        ContainerRef c = new ContainerRef();
                        c.setSourceContainer(false);
                        c.setName(pfr.getElementName());
                        this.containers.add(c);
                        gatherBinaries(c, pfr);
                        // System.out.println("Added container " + c.getName() + " - contains " + c.getClassCount() + " bin classes");
                    } else {
                        System.err.println("Unhandled Java element type: " + e);
                    }
                }
            }
        } catch (Exception x) {
            x.printStackTrace();
        }
        // STEP2 - parse sources
        monitor.worked((int) (0.08 * SCALE));
        monitor.subTask("parsing classes");
        List<PackageRef> packages = new ArrayList<PackageRef>();
        for (ContainerRef c : containers) {
            if (c.isSourceContainer()) {
                for (PackageRef p : c.getPackages()) {
                    if (p.getClassCount() > 0)
                        packages.add(p);
                }
            }
        }
        monitor.internalWorked((int) (0.1 * SCALE));
        int delta = (int) (SCALE * 0.5 / packages.size());
        for (PackageRef p : packages) {
            monitor.subTask("parsing classes in package " + p.getName());

            monitor.worked(delta);
            for (ClassRef c : p.getClasses()) {
                SourceRef src = (SourceRef) c;
                ExtractTypeInfoVisitor v = new ExtractTypeInfoVisitor(src);
                ASTParser parser = ASTParser.newParser(AST.JLS3);
                parser.setSource(src.getCompilationUnit());
                parser.setResolveBindings(false);
                ASTNode node = parser.createAST(null);
                node.accept(v);
            }
        }

        // STEP3 - resolve references

        for (PackageRef p : packages) {
            monitor.subTask("resolving references " + p.getName());
            monitor.worked(delta);
            // add inner classes
            List<ClassRef> classlist = new ArrayList<ClassRef>(); // to avoid concurrent modification exception
            classlist.addAll(p.getClasses());
            for (ClassRef c : classlist) {
                addInnerClasses((SourceRef) c, p);
            }

            // resolve references
            for (ClassRef c : p.getClasses()) {
                SourceRef src = (SourceRef) c;
                resolveReferences(src);
            }
        }

        // STEP5: testing
        for (ContainerRef c : containers) {
            if (c.hasTestCases())
                c.test();
        }

        // STEP6 export graph
        monitor.subTask("exporting dependency graph");
        exportGraph();

        monitor.done();
        return Status.OK_STATUS;
    } finally {

    }
}

From source file:org.apache.felix.sigil.eclipse.ui.internal.editors.project.ProjectLabelProvider.java

License:Apache License

public Image getImage(Object element) {
    Image result = null;/*from  ww  w .  jav  a2s .c  om*/
    if (element instanceof ISigilBundle || element instanceof IRequiredBundle
            || element instanceof IBundleModelElement) {
        result = findBundle();
    } else if (element instanceof IPackageImport) {
        if (checker != null) {
            result = checker.isSatisfied((IPackageImport) element) ? findPackage() : findPackageError();
        } else {
            result = findPackage();
        }
    } else if (element instanceof IPackageExport) {
        result = findPackage();
    } else if (element instanceof IPackageFragmentRoot) {
        IPackageFragmentRoot root = (IPackageFragmentRoot) element;
        try {
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                result = findPackage();
            } else {
                result = findBundle();
            }
        } catch (JavaModelException e) {
            SigilCore.error("Failed to inspect package fragment root", e);
        }
    } else if (element instanceof IClasspathEntry) {
        result = findPackage();
    }

    return result;
}

From source file:org.apache.felix.sigil.eclipse.ui.util.ModelLabelProvider.java

License:Apache License

public Image getImage(Object element) {
    boolean unresolved = (unresolvedElements == null) ? false : unresolvedElements.contains(element);

    if (element instanceof ISigilBundle || element instanceof IBundleModelElement) {
        return findBundle();
    } else if (element instanceof IRequiredBundle) {
        boolean optional = ((IRequiredBundle) element).isOptional();
        return findRequiredBundle(optional, unresolved);
    } else if (element instanceof IPackageImport) {
        boolean optional = ((IPackageImport) element).isOptional();
        return findPackageImport(optional, unresolved);
    } else if (element instanceof IPackageExport) {
        return findPackageExport();
    } else if (element instanceof IPackageFragmentRoot) {
        IPackageFragmentRoot root = (IPackageFragmentRoot) element;
        try {/*from   www.  ja v  a2  s  . co  m*/
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                return findPackage();
            } else {
                return findBundle();
            }
        } catch (JavaModelException e) {
            SigilCore.error("Failed to inspect package fragment root", e);
        }
    } else if (element instanceof IClasspathEntry) {
        return findPackage();
    } else if (element instanceof IBundleRepository) {
        IBundleRepository rep = (IBundleRepository) element;
        IRepositoryModel config = SigilCore.getRepositoryModel(rep);
        return config.getType().getIcon();
    } else if (element instanceof Throwable) {
        return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
    }

    return null;
}

From source file:org.apache.felix.sigil.ui.eclipse.ui.util.ModelLabelProvider.java

License:Apache License

public Image getImage(Object element) {
    boolean unresolved = (unresolvedElements == null) ? false : unresolvedElements.contains(element);

    if (element instanceof ISigilBundle || element instanceof IBundleModelElement) {
        return findBundle();
    } else if (element instanceof IRequiredBundle) {
        boolean optional = ((IRequiredBundle) element).isOptional();
        return findRequiredBundle(optional, unresolved);
    } else if (element instanceof IPackageImport) {
        boolean optional = ((IPackageImport) element).isOptional();
        return findPackageImport(optional, unresolved);
    } else if (element instanceof IPackageExport) {
        return findPackageExport();
    } else if (element instanceof IPackageFragmentRoot) {
        IPackageFragmentRoot root = (IPackageFragmentRoot) element;
        try {/* w w  w.j ava 2s  . c o m*/
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                return findPackage();
            } else {
                return findBundle();
            }
        } catch (JavaModelException e) {
            SigilCore.error("Failed to inspect package fragment root", e);
        }
    } else if (element instanceof IClasspathEntry) {
        return findPackage();
    }
    if (element instanceof IBundleRepository) {
        IBundleRepository rep = (IBundleRepository) element;
        IRepositoryModel config = SigilCore.getRepositoryConfiguration().findRepository(rep.getId());
        return config.getType().getIcon();
    }

    return null;
}

From source file:org.codehaus.groovy.eclipse.launchers.GroovyConsoleLineTracker.java

License:Apache License

/**
 * @param groovyFileName//  w  w w.j a v  a 2 s. co m
 * @return
 * @throws JavaModelException
 */
private IFile[] searchForFileInLaunchConfig(String groovyFileName) throws JavaModelException {
    List<IFile> files = new LinkedList<IFile>();
    IJavaProject[] projects = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProjects();
    for (IJavaProject javaProject : projects) {
        if (GroovyNature.hasGroovyNature(javaProject.getProject())) {
            for (IPackageFragmentRoot root : javaProject.getAllPackageFragmentRoots()) {
                if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                    IResource resource = root.getResource();
                    if (resource.isAccessible() && resource.getType() != IResource.FILE) {
                        IFile file = ((IContainer) resource).getFile(new Path(groovyFileName));
                        if (file.isAccessible()) {
                            files.add(file);
                        }
                    }
                }
            }
        }
    }
    return files.toArray(new IFile[files.size()]);
}

From source file:org.eclim.plugin.jdt.command.src.NewCommand.java

License:Open Source License

@Override
public Object execute(CommandLine commandLine) throws Exception {
    String projectName = commandLine.getValue(Options.PROJECT_OPTION);
    String type = commandLine.getValue(Options.TYPE_OPTION);
    String name = commandLine.getValue(Options.NAME_OPTION);
    String srcRoot = commandLine.getValue(Options.ROOT_OPTION);

    // handle someone typing a file path instead of a fully qualified class name
    if (name.endsWith(".java")) {
        name = name.substring(0, name.length() - 5);
    }/*  w ww .j  a v  a2  s  .c  om*/
    name = name.replace('/', '.');

    int classStart = name.lastIndexOf('.');
    final String packageName = classStart >= 0 ? name.substring(0, classStart) : name;
    final String typeName = classStart >= 0 ? name.substring(classStart + 1) : name;
    final String fileName = typeName + ".java";

    IJavaProject javaProject = JavaUtils.getJavaProject(projectName);

    ArrayList<IPackageFragmentRoot> roots = new ArrayList<IPackageFragmentRoot>();

    // find all roots the requested package is found in.
    for (IPackageFragment f : javaProject.getPackageFragments()) {
        if (f.getElementName().equals(packageName)) {
            IJavaElement parent = f.getParent();
            while (parent != null) {
                if (parent instanceof IPackageFragmentRoot) {
                    IPackageFragmentRoot root = (IPackageFragmentRoot) parent;
                    if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                        roots.add(root);
                    }
                    break;
                }
                parent = parent.getParent();
            }
        }
    }

    // the package isn't found in any roots
    if (roots.size() == 0) {
        // no root supplied, so we have to add all src roots to a list for the
        // user to choose from.
        for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                roots.add(root);
            }
        }
    }

    // still no source roots, so we have to fail
    if (roots.size() == 0) {
        throw new RuntimeException("No project source directories found.");
    }

    if (roots.size() > 1) {
        // user chosen root supplied, so grab that one.
        if (srcRoot != null) {
            roots.clear();
            for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
                if (root.getKind() == IPackageFragmentRoot.K_SOURCE && getPath(root).equals(srcRoot)) {
                    roots.add(root);
                    break;
                }
            }

            if (roots.size() == 0) {
                throw new RuntimeException("Unable to find project source directory: " + srcRoot);
            }
        }

        if (roots.size() > 1) {
            ArrayList<String> srcRoots = new ArrayList<String>();
            for (IPackageFragmentRoot root : roots) {
                srcRoots.add(getPath(root));
            }
            return srcRoots;
        }
    }

    IPackageFragmentRoot root = roots.get(0);
    IPackageFragment fragment = root.createPackageFragment(packageName, false, null);

    // locate the to-be created file
    File fragmentPath = fragment.getUnderlyingResource().getLocation().toFile();
    final File file = new File(fragmentPath, fileName);

    // make sure eclipse is up to date, in case the user
    //  deleted the file outside of eclipse's knowledge
    fragment.getUnderlyingResource().refreshLocal(IResource.DEPTH_ONE, new NullProgressMonitor());

    // create!
    final String content = String.format(TEMPLATE, packageName, getType(type), typeName);

    // NB: If we delete the file outside of Eclipse'
    //  awareness, it will whine if we then try to
    //  recreate it. So, if we *know* the file doesn't
    //  exist, force it.
    ICompilationUnit unit = fragment.createCompilationUnit(fileName, content, false, new NullProgressMonitor());

    if (unit == null || !file.exists()) {
        throw new RuntimeException("Could not create " + file);
    }

    JavaUtils.format(unit, CodeFormatter.K_COMPILATION_UNIT, 0, unit.getBuffer().getLength());

    return file.getAbsolutePath();
}

From source file:org.eclipse.ajdt.core.tests.model.AspectJMemberElementTest.java

License:Open Source License

public void testGetSignature() throws Exception {
    IPackageFragmentRoot[] roots = jProject.getAllPackageFragmentRoots();
    for (int i = 0; i < roots.length; i++) {
        IPackageFragmentRoot root = roots[i];
        if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
            doVisit(root);/*  w  w w  .ja v  a2s . c om*/
        }
    }
}

From source file:org.eclipse.ajdt.internal.ui.ajdocexport.AJdocOptionsManager.java

License:Open Source License

private boolean containsCompilationUnits(IPackageFragmentRoot root) throws JavaModelException {
    if (root.getKind() != IPackageFragmentRoot.K_SOURCE) {
        return false;
    }/*from ww w. j av a2s .c om*/

    IJavaElement[] elements = root.getChildren();
    for (int i = 0; i < elements.length; i++) {
        if (elements[i] instanceof IPackageFragment) {
            IPackageFragment fragment = (IPackageFragment) elements[i];
            if (containsCompilationUnits(fragment)) {
                return true;
            }
        }
    }
    return false;
}

From source file:org.eclipse.ajdt.internal.ui.ajdocexport.AJdocTreeWizardPage.java

License:Open Source License

private IPath[] getSourcePath(IJavaProject[] projects) {
    HashSet res = new HashSet();
    //loops through all projects and gets a list if of thier sourpaths
    for (int k = 0; k < projects.length; k++) {
        IJavaProject iJavaProject = projects[k];

        try {/* ww w  . j  av  a 2s. c o m*/
            IPackageFragmentRoot[] roots = iJavaProject.getPackageFragmentRoots();
            for (int i = 0; i < roots.length; i++) {
                IPackageFragmentRoot curr = roots[i];
                if (curr.getKind() == IPackageFragmentRoot.K_SOURCE) {
                    IResource resource = curr.getResource();
                    if (resource != null) {
                        IPath p = resource.getLocation();
                        if (p != null) {
                            res.add(p);
                        }
                    }
                }
            }
        } catch (JavaModelException e) {
            JavaPlugin.log(e);
        }
    }
    return (IPath[]) res.toArray(new IPath[res.size()]);
}