Example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoots

List of usage examples for org.eclipse.jdt.core IJavaProject getPackageFragmentRoots

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoots.

Prototype

IPackageFragmentRoot[] getPackageFragmentRoots() throws JavaModelException;

Source Link

Document

Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath.

Usage

From source file:com.ecfeed.ui.editor.ModelEditor.java

License:Open Source License

@Override
public IPackageFragmentRoot getPackageFragmentRoot() {
    if (!isProjectAvailable()) {
        return null;
    }/*from  w  ww .j  a va2 s.co m*/
    try {
        if (getProject().hasNature(JavaCore.NATURE_ID)) {
            IJavaProject javaProject = JavaCore.create(getProject());
            IPath path = getPath();
            if (javaProject != null) {
                for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
                    if (root.getPath().isPrefixOf(path)) {
                        return root;
                    }
                }
            }
        }
    } catch (CoreException e) {
        SystemLogger.logCatch(e.getMessage());
    }
    return null;
}

From source file:com.github.ko2ic.plugin.eclipse.taggen.core.ui.components.combo.OutputFolderCombo.java

License:Open Source License

public OutputFolderCombo(Composite parent, int style) {
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    IProject[] projects = root.getProjects();

    for (IProject project : projects) {
        try {//  ww w.  java2 s.  c o  m
            IJavaProject javaProject = JavaCore.create(project);
            IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots();
            for (IPackageFragmentRoot pRoot : roots) {
                if (pRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
                    outputFolders.add(pRoot.getPath().removeFirstSegments(1).toOSString());
                }
            }
        } catch (JavaModelException e) {
            throw Throwables.propagate(new SystemException(e));
        }
    }

    outputFolderCombo = new Combo(parent, style);
}

From source file:com.google.gdt.eclipse.appengine.rpc.util.JavaUtils.java

License:Open Source License

/**
 * Get the source folder for this project. If there is a source folder called
 * "src" it will be returned. If not, the first source folder found will be
 * returned (or <code>null</code> if none is found).
 *//*from w  w w  .j av a  2 s.c  om*/
public static IPackageFragmentRoot getSourcePackageFragmentRoot(IJavaProject javaProject)
        throws JavaModelException {

    IPackageFragmentRoot firstSourceFolder = null;
    for (IPackageFragmentRoot fragmentRoot : javaProject.getPackageFragmentRoots()) {
        if (fragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
            // prefer "src"
            if (fragmentRoot.getElementName().equals("src")) { //$NON-NLS-1$
                return fragmentRoot;
            }
            // cache first found
            if (firstSourceFolder != null) {
                firstSourceFolder = fragmentRoot;
            }
        }
    }
    // fall back on first
    return firstSourceFolder;
}

From source file:com.google.gdt.eclipse.appengine.rpc.util.RequestFactoryUtils.java

License:Open Source License

/**
 * Find all the relevant request factory types in the project and populate the
 * given lists/hashmap//w  ww  .j ava2  s  .c  o m
 * 
 * @param project IJavaProject
 * @param entities List<IType>
 * @param proxys List<IType>
 * @param requests HaspMap<String,ITYpe>
 * @throws JavaModelException
 */
public static void findAllTypes(IJavaProject project, List<IType> entities, List<IType> proxys,
        HashMap<String, IType> requests) throws JavaModelException {

    for (IPackageFragmentRoot pkgRoot : project.getPackageFragmentRoots()) {
        if (pkgRoot.isArchive()) {
            continue;
        }

        for (IJavaElement fragment : pkgRoot.getChildren()) {
            IJavaElement[] children = ((IPackageFragment) fragment).getChildren();

            for (IJavaElement child : children) {
                if (child instanceof ICompilationUnit) {
                    IType[] topLevelTypes = ((ICompilationUnit) child).getTypes();

                    for (IType t : topLevelTypes) {

                        determineType(t, entities, proxys, requests);
                    }
                }
            }
        }
    }
}

From source file:com.google.gdt.eclipse.appengine.rpc.util.RequestFactoryUtils.java

License:Open Source License

/**
 * Find types in a project that satisfy a certain selection criteria
 * /*from   w  w w  .j  a  va 2  s .c o m*/
 * RPC_ENTITY : Find types annotated with the <code>@Entity</code> or
 * <code>@PersistenceCapable</code> annotations, less all framework-specific
 * entities (identified by {@link #isFrameworkClass(IType)})
 * 
 * RPC_PROXY : Find types that extend
 * com.google.web.bindery.requestfactory.shared.ValueProxy or
 * com.google.web.bindery.requestfactory.shared.EntityProxy
 * 
 * RPC_REQUEST : Find types that extend
 * com.google.web.bindery.requestfactory.shared.RequestContext
 * 
 */
public static List<IType> findTypes(IJavaProject project, RpcType type) throws JavaModelException {

    List<IType> types = new ArrayList<IType>();
    for (IPackageFragmentRoot pkgRoot : project.getPackageFragmentRoots()) {
        if (pkgRoot.isArchive()) {
            continue;
        }
        for (IJavaElement elem : pkgRoot.getChildren()) {
            collectTypes(types, (IPackageFragment) elem, type);
        }
    }

    return types;
}

From source file:com.google.gdt.eclipse.designer.actions.deploy.DeployModuleAction.java

License:Open Source License

/**
 * Returns ANT code for creating jar's for given project itself, coping its jar's from classpath
 * and calls itself for required projects.
 *//*w w  w .j  a  v  a2  s .  c  o m*/
private static String prepareJars(IProject project, String targetModulePath, boolean addRuntimeJars)
        throws Exception {
    String script = "";
    //
    IJavaProject javaProject = JavaCore.create(project);
    IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots();
    // add <jar> task for creating jar from project source and output folders
    {
        List<String> sourceLocations = Lists.newArrayList();
        List<String> binaryLocations = Lists.newArrayList();
        for (IPackageFragmentRoot packageFragmentRoot : roots) {
            if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
                // add source location
                sourceLocations.add(packageFragmentRoot.getResource().getLocation().toPortableString());
                // add output location
                {
                    // prepare output location
                    IPath location;
                    {
                        IClasspathEntry cpEntry = packageFragmentRoot.getRawClasspathEntry();
                        location = cpEntry.getOutputLocation();
                        if (location == null) {
                            location = javaProject.getOutputLocation();
                        }
                    }
                    // add absolute location
                    {
                        // remove first segment (project)
                        location = location.removeFirstSegments(1);
                        // prepare absolute location
                        IPath absoluteLocation = project.getLocation().append(location);
                        binaryLocations.add(absoluteLocation.toPortableString());
                    }
                }
            }
        }
        //
        script += "\t\t<!--=== " + project.getName() + " ===-->\n";
        script += "\t\t<jar destfile='" + targetModulePath + "/WEB-INF/lib/" + project.getName() + ".jar'>\n";
        script += prepareFileSets(sourceLocations, "**");
        script += prepareFileSets(binaryLocations, "**/*.class");
        script += "\t\t</jar>\n";
    }
    // add <copy> task for coping required runtime jar's
    if (addRuntimeJars) {
        String jars = "";
        IRuntimeClasspathEntry[] classpathEntries = JavaRuntime.computeUnresolvedRuntimeClasspath(javaProject);
        for (int entryIndex = 0; entryIndex < classpathEntries.length; entryIndex++) {
            IRuntimeClasspathEntry entry = classpathEntries[entryIndex];
            IRuntimeClasspathEntry[] resolvedEntries = JavaRuntime.resolveRuntimeClasspathEntry(entry,
                    javaProject);
            for (int resolvedEntryIndex = 0; resolvedEntryIndex < resolvedEntries.length; resolvedEntryIndex++) {
                IRuntimeClasspathEntry resolvedEntry = resolvedEntries[resolvedEntryIndex];
                if (resolvedEntry.getClasspathProperty() == IRuntimeClasspathEntry.USER_CLASSES
                        && resolvedEntry.getType() == IRuntimeClasspathEntry.ARCHIVE) {
                    String location = resolvedEntry.getLocation();
                    // exclude gwt-user.jar, it is in classpath, but it has Servlet class, so can not be in application
                    if (location.endsWith("gwt-user.jar")) {
                        continue;
                    }
                    // add jar file in fileset
                    jars += "\t\t\t<fileset file=\"" + location + "\"/>\n";
                }
            }
        }
        //
        if (jars.length() != 0) {
            script += "\t\t<copy todir='" + targetModulePath + "/WEB-INF/lib'>\n";
            script += jars;
            script += "\t\t</copy>\n";
        }
    }
    // add required projects
    {
        IProject[] referencedProjects = project.getReferencedProjects();
        for (int i = 0; i < referencedProjects.length; i++) {
            IProject referencedProject = referencedProjects[i];
            script += prepareJars(referencedProject, targetModulePath, false);
        }
    }
    //
    return script;
}

From source file:com.google.gdt.eclipse.designer.launch.AbstractGwtLaunchConfigurationDelegate.java

License:Open Source License

/**
 * GWT requires source folders in classpath (because it has its own compiler), so we should add
 * all source folders for given project and its required projects.
 *///from   w  ww  . j  a v a2s .c  o  m
public static void addSourceFolders(Set<IProject> visitedProjects, List<String> entries, IProject project)
        throws CoreException {
    // HACK: see above
    if (project.getName().endsWith("-design")) {
        return;
    }
    // check for recursion
    if (visitedProjects.contains(project)) {
        return;
    }
    visitedProjects.add(project);
    //
    IJavaProject javaProject = JavaCore.create(project);
    // add source folders for given project
    {
        IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots();
        for (int i = 0; i < packageFragmentRoots.length; i++) {
            IPackageFragmentRoot packageFragmentRoot = packageFragmentRoots[i];
            if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
                entries.add(packageFragmentRoot.getResource().getLocation().toPortableString());
            }
        }
    }
    // process required projects
    {
        IProject[] referencedProjects = project.getReferencedProjects();
        for (int i = 0; i < referencedProjects.length; i++) {
            IProject referencedProject = referencedProjects[i];
            addSourceFolders(visitedProjects, entries, referencedProject);
        }
    }
}

From source file:com.google.gdt.eclipse.designer.uibinder.editor.UiBinderPairResourceProvider.java

License:Open Source License

/**
 * @return the ui.xml {@link IFile} for given Java one.
 *//* w w  w . ja  va2  s  .  com*/
private IFile getUIFile(IFile javaFile) throws Exception {
    IProject project = javaFile.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    // prepare form name
    String javaFormName = StringUtils.removeEnd(javaFile.getName(), ".java");
    // prepare package name
    String packageName;
    {
        IFolder folder = (IFolder) javaFile.getParent();
        IPackageFragment packageFragmentJava = (IPackageFragment) JavaCore.create(folder);
        packageName = packageFragmentJava.getElementName();
    }
    // try to find ui.xml file in package with same name
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName);
        if (packageFragment.exists()) {
            for (Object object : packageFragment.getNonJavaResources()) {
                if (object instanceof IFile) {
                    IFile uiFile = (IFile) object;
                    String uiFileName = uiFile.getName();
                    if (StringUtils.endsWithIgnoreCase(uiFileName, ".ui.xml")) {
                        String uiFormName = StringUtils.removeEndIgnoreCase(uiFileName, ".ui.xml");
                        if (uiFormName.equals(javaFormName)) {
                            return uiFile;
                        }
                    }
                }
            }
        }
    }
    // no ui.xml file
    return null;
}

From source file:com.google.gdt.eclipse.designer.util.DefaultModuleProvider.java

License:Open Source License

/**
 * @return the module files to which belongs given {@link IResource}, may be <code>null</code> if
 *         no module found. Climbs up by {@link IPackageFragment}'s hierarchy, good for (Case
 *         33265), i.e. Maven-like source folder structure.
 *//* w ww. j a v  a 2  s. c  o m*/
private static List<IFile> getModuleFiles_java(IResource resource) throws Exception {
    IProject project = resource.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    // prepare package name
    String packageName;
    {
        // prepare folder
        IFolder folder;
        if (resource instanceof IFolder) {
            folder = (IFolder) resource;
        } else if (resource.getParent() instanceof IFolder) {
            folder = (IFolder) resource.getParent();
        } else {
            return ImmutableList.of();
        }
        // prepare package fragment
        IJavaElement javaElement = JavaCore.create(folder);
        if (javaElement instanceof IPackageFragment) {
            IPackageFragment pkgFragment = (IPackageFragment) javaElement;
            packageName = pkgFragment.getElementName();
        } else {
            return ImmutableList.of();
        }
    }
    // prepare source folders
    List<IPackageFragmentRoot> sourceFolders = Lists.newArrayList();
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
            sourceFolders.add(packageFragmentRoot);
        }
    }
    // search in this package and packages above
    for (; packageName.length() != 0; packageName = CodeUtils.getPackage(packageName)) {
        for (IPackageFragmentRoot packageFragmentRoot : sourceFolders) {
            IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName);
            if (packageFragment.exists()) {
                IResource underlyingResource = packageFragment.getUnderlyingResource();
                if (underlyingResource instanceof IFolder) {
                    IFolder folder = (IFolder) underlyingResource;
                    List<IFile> moduleFiles = getModuleFiles(folder, false);
                    if (!moduleFiles.isEmpty()) {
                        return moduleFiles;
                    }
                }
            }
        }
    }
    // no modules
    return ImmutableList.of();
}

From source file:com.google.gdt.eclipse.designer.util.DefaultModuleProvider.java

License:Open Source License

/**
 * @return the module {@link IFile} with given id, may be <code>null</code>.
 *//*from  w w w .  jav  a 2  s.co  m*/
private static IFile getModuleFile(IJavaProject javaProject, String moduleId) throws Exception {
    String moduleFileName = moduleId.replace('.', '/') + ".gwt.xml";
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        // check only in source folders
        if (packageFragmentRoot.getKind() != IPackageFragmentRoot.K_SOURCE) {
            continue;
        }
        // check IFolder of source folder
        IContainer sourceFolder = (IContainer) packageFragmentRoot.getUnderlyingResource();
        IFile moduleFile = sourceFolder.getFile(new Path(moduleFileName));
        if (moduleFile.exists()) {
            return moduleFile;
        }
    }
    // not found
    return null;
}