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

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

Introduction

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

Prototype

int K_SOURCE

To view the source code for org.eclipse.jdt.core IPackageFragmentRoot K_SOURCE.

Click Source Link

Document

Kind constant for a source path root.

Usage

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).
 *//*  w  w w.j  a va 2 s.  co  m*/
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.wizards.helpers.RpcServiceLayerCreator.java

License:Open Source License

/**
 * Compute a package name/*from www  .jav  a 2s  .  c o m*/
 * 
 * @throws JavaModelException
 */
private String inferPackageName(IJavaProject gaeJavaProject) throws JavaModelException {
    for (IPackageFragment pf : gaeJavaProject.getPackageFragments()) {
        if (pf.getKind() == IPackageFragmentRoot.K_SOURCE && pf.getElementName().contains("server")) //$NON-NLS-N$
            return pf.getElementName();
    }
    // TODO: find a better story for selecting package
    return "com.google.rpc"; //$NON-NLS-N$
}

From source file:com.google.gdt.eclipse.appengine.rpc.wizards.RPCWizardUISupport.java

License:Open Source License

public IPackageFragmentRoot chooseContainer(IType type) {

    Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        @Override/*from   w  ww  .  ja v  a2s .  co m*/
        public boolean isSelectedValid(Object element) {
            try {
                if (element instanceof IJavaProject) {
                    IJavaProject jproject = (IJavaProject) element;
                    IPath path = jproject.getProject().getFullPath();
                    return (jproject.findPackageFragmentRoot(path) != null);
                } else if (element instanceof IPackageFragmentRoot) {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                }
                return true;
            } catch (JavaModelException e) {
                AppEngineRPCPlugin.log(e);
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
        @Override
        public boolean select(Viewer viewer, Object parent, Object element) {

            // only show appengine projects
            if (element instanceof IJavaProject) {
                IJavaProject jp = (IJavaProject) element;
                return isAppEngineProject(jp.getProject());
            }

            // only show source folders
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    AppEngineRPCPlugin.log(e);
                    return false;
                }
            }
            return super.select(viewer, parent, element);
        }
    };

    StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider();
    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
    dialog.setValidator(validator);
    dialog.setComparator(new JavaElementComparator());
    dialog.setTitle("Source Folder Selection"); //$NON-NLS-1$
    dialog.setMessage("&Choose a source folder:"); //$NON-NLS-1$
    dialog.addFilter(filter);
    dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
    if (type != null) {
        dialog.setInitialSelection(JavaUtils.getPackageFragmentRoot(type));
    }
    dialog.setHelpAvailable(false);

    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            return jproject.getPackageFragmentRoot(jproject.getProject());
        } else if (element instanceof IPackageFragmentRoot) {
            return (IPackageFragmentRoot) element;
        }
        return null;
    }
    return null;
}

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.
 *//*ww w  .j a va 2s . 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.
 *///w  w  w .  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.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 w w. ja v  a 2  s. c  om
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 .j  a  v a2  s .c om*/
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;
}

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

License:Open Source License

/**
 * @return all module files in given {@link IJavaProject}.
 *//*from www  . ja v a2 s .c o  m*/
private static List<IFile> getModuleFiles(IJavaProject javaProject) throws Exception {
    List<IFile> moduleFiles = Lists.newArrayList();
    for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
        // check only in source folders
        if (packageFragmentRoot.getKind() != IPackageFragmentRoot.K_SOURCE) {
            continue;
        }
        // check packages
        for (IJavaElement rootChild : packageFragmentRoot.getChildren()) {
            // check only packages
            if (rootChild instanceof IPackageFragment) {
                IPackageFragment pkg = (IPackageFragment) rootChild;
                for (Object object : pkg.getNonJavaResources()) {
                    // check only files
                    if (object instanceof IFile) {
                        IFile file = (IFile) object;
                        // check that file is GWT module file
                        if (isModuleFile(file)) {
                            moduleFiles.add(file);
                        }
                    }
                }
            }
        }
    }
    return moduleFiles;
}

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

License:Open Source License

/**
 * Appends source {@link IPackageFragmentRoot}'s, because {@link DefaultResourcesProvider} should
 * provide access not only to the binary resources (i.e. just resources in classpath), but also to
 * the source resources./*from w w  w  . j a va2 s .  c o m*/
 */
private static void addSourceFolders(Set<IProject> visitedProjects, List<String> entries, IProject project)
        throws Exception {
    // may be not exists
    if (!project.exists()) {
        return;
    }
    // may be already visited
    if (visitedProjects.contains(project)) {
        return;
    }
    visitedProjects.add(project);
    // add source folders for IJavaProject
    {
        IJavaProject javaProject = JavaCore.create(project);
        if (javaProject.exists()) {
            for (IPackageFragmentRoot packageFragmentRoot : javaProject.getPackageFragmentRoots()) {
                if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
                    entries.add(packageFragmentRoot.getResource().getLocation().toPortableString());
                }
            }
        }
    }
    // process required projects
    for (IProject referencedProject : project.getReferencedProjects()) {
        addSourceFolders(visitedProjects, entries, referencedProject);
    }
}

From source file:com.iw.plugins.spindle.ant.AntScriptGenerator.java

License:Mozilla Public License

/**
 * @param monitor/*from  www  . ja v  a 2  s .c om*/
 */
private void harvestBinaryLibrariesAndSourceFolders(IProgressMonitor monitor) {
    try {
        IJavaProject jproject = fTapestryProject.getJavaProject();
        if (jproject == null)
            return;

        IPackageFragmentRoot[] allRoots = jproject.getAllPackageFragmentRoots();
        for (int i = 0; i < allRoots.length; i++) {

            int kind = allRoots[i].getKind();
            switch (kind) {
            case IPackageFragmentRoot.K_BINARY:
                if (!fServletAPIRoots.contains(allRoots[i]))
                    fBinaryLibraries.add(allRoots[i]);
                break;
            case IPackageFragmentRoot.K_SOURCE:
                fSourceFolders.add(allRoots[i]);
                break;

            default:
                break;
            }
        }
    } catch (CoreException e) {
        UIPlugin.log(e);
    }
}