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:org.eclipse.pde.internal.launching.launcher.LaunchArgumentsHelper.java

License:Open Source License

private static String getStartupJarPath() throws CoreException {
    IPluginModelBase model = PluginRegistry.findModel("org.eclipse.platform"); //$NON-NLS-1$
    if (model != null && model.getUnderlyingResource() != null) {
        IProject project = model.getUnderlyingResource().getProject();
        if (project.hasNature(JavaCore.NATURE_ID)) {
            IJavaProject jProject = JavaCore.create(project);
            IPackageFragmentRoot[] roots = jProject.getPackageFragmentRoots();
            for (int i = 0; i < roots.length; i++) {
                if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE
                        && roots[i].getPackageFragment("org.eclipse.core.launcher").exists()) { //$NON-NLS-1$
                    IPath path = jProject.getOutputLocation().removeFirstSegments(1);
                    return project.getLocation().append(path).toOSString();
                }//from  w w  w.jav a 2 s  . com
            }
        }
        if (project.getFile("startup.jar").exists()) //$NON-NLS-1$
            return project.getFile("startup.jar").getLocation().toOSString(); //$NON-NLS-1$
    }
    File startupJar = new Path(TargetPlatform.getLocation()).append("startup.jar").toFile(); //$NON-NLS-1$

    // if something goes wrong with the preferences, fall back on the startup.jar 
    // in the running eclipse.  
    if (!startupJar.exists())
        startupJar = new Path(TargetPlatform.getDefaultLocation()).append("startup.jar").toFile(); //$NON-NLS-1$

    return startupJar.exists() ? startupJar.getAbsolutePath() : null;
}

From source file:org.eclipse.pde.internal.ui.editor.build.RuntimeInfoSection.java

License:Open Source License

private IPackageFragmentRoot[] computeSourceFolders() {
    ArrayList<IPackageFragmentRoot> folders = new ArrayList<IPackageFragmentRoot>();
    IBuildModel buildModel = getBuildModel();
    IProject project = buildModel.getUnderlyingResource().getProject();
    try {//from  w  w  w. java 2 s .c  om
        if (project.hasNature(JavaCore.NATURE_ID)) {
            IJavaProject jProject = JavaCore.create(project);
            IPackageFragmentRoot[] roots = jProject.getPackageFragmentRoots();
            for (int i = 0; i < roots.length; i++)
                if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE)
                    folders.add(roots[i]);
        }
    } catch (JavaModelException e) {
        PDEPlugin.logException(e);
    } catch (CoreException e) {
        PDEPlugin.logException(e);
    }
    return folders.toArray(new IPackageFragmentRoot[folders.size()]);
}

From source file:org.eclipse.pde.internal.ui.editor.plugin.ImportPackageSection.java

License:Open Source License

private void setElements(ConditionalListSelectionDialog dialog) {
    Set<String> forbidden = getForbiddenIds();
    boolean allowJava = "true".equals(getBundle().getHeader(ICoreConstants.ECLIPSE_JREBUNDLE)); //$NON-NLS-1$

    ArrayList<ImportItemWrapper> elements = new ArrayList<ImportItemWrapper>();
    ArrayList<ImportItemWrapper> conditional = new ArrayList<ImportItemWrapper>();
    IPluginModelBase[] models = PluginRegistry.getActiveModels();
    Set<NameVersionDescriptor> nameVersions = new HashSet<NameVersionDescriptor>(); // Set of NameVersionDescriptors, used to remove duplicate entries

    for (int i = 0; i < models.length; i++) {
        BundleDescription desc = models[i].getBundleDescription();

        // If the current model is a fragment, it can export packages only if its parent has hasExtensibleAPI set
        if (isFragmentThatCannotExportPackages(models[i]))
            continue;

        String id = desc == null ? null : desc.getSymbolicName();
        if (id == null || forbidden.contains(id))
            continue;

        ExportPackageDescription[] exported = desc.getExportPackages();
        for (int j = 0; j < exported.length; j++) {
            String name = exported[j].getName();
            NameVersionDescriptor nameVersion = new NameVersionDescriptor(exported[j].getName(),
                    exported[j].getVersion().toString(), NameVersionDescriptor.TYPE_PACKAGE);
            if (("java".equals(name) || name.startsWith("java.")) && !allowJava) //$NON-NLS-1$ //$NON-NLS-2$
                continue;
            if (nameVersions.add(nameVersion) && (fHeader == null || !fHeader.hasPackage(name)))
                elements.add(new ImportItemWrapper(exported[j]));
        }// ww w.j  a v a 2 s . c  o  m
        IPluginModelBase model = (IPluginModelBase) getPage().getPDEEditor().getAggregateModel();
        if (model instanceof IBundlePluginModelBase) {
            IBundleModel bmodel = ((IBundlePluginModelBase) model).getBundleModel();
            if (bmodel != null) {
                ExportPackageHeader header = (ExportPackageHeader) bmodel.getBundle()
                        .getManifestHeader(Constants.EXPORT_PACKAGE);
                if (header != null) {
                    ExportPackageObject[] pkgs = header.getPackages();
                    for (int j = 0; j < pkgs.length; j++) {
                        String name = pkgs[j].getName();
                        String version = pkgs[j].getVersion();
                        NameVersionDescriptor nameVersion = new NameVersionDescriptor(name, version,
                                NameVersionDescriptor.TYPE_PACKAGE);
                        if (nameVersions.add(nameVersion) && (fHeader == null || !fHeader.hasPackage(name)))
                            elements.add(new ImportItemWrapper(pkgs[j]));
                    }
                }
            }

        }
    }
    for (int i = 0; i < models.length; i++) {
        try {
            // add un-exported packages in workspace non-binary plug-ins
            IResource resource = models[i].getUnderlyingResource();
            IProject project = resource != null ? resource.getProject() : null;
            if (project == null || !project.hasNature(JavaCore.NATURE_ID)
                    || WorkspaceModelManager.isBinaryProject(project)
                    || !PDEProject.getManifest(project).exists())
                continue;

            // If the current model is a fragment, it can export packages only if its parent has hasExtensibleAPI set
            if (isFragmentThatCannotExportPackages(models[i]))
                continue;

            IJavaProject jp = JavaCore.create(project);
            IPackageFragmentRoot[] roots = jp.getPackageFragmentRoots();
            for (int j = 0; j < roots.length; j++) {
                if (roots[j].getKind() == IPackageFragmentRoot.K_SOURCE
                        || (roots[j].getKind() == IPackageFragmentRoot.K_BINARY && !roots[j].isExternal())) {
                    IJavaElement[] children = roots[j].getChildren();
                    for (int k = 0; k < children.length; k++) {
                        IPackageFragment f = (IPackageFragment) children[k];
                        String name = f.getElementName();
                        NameVersionDescriptor nameVersion = new NameVersionDescriptor(name, null,
                                NameVersionDescriptor.TYPE_PACKAGE);
                        if (name.equals("")) //$NON-NLS-1$
                            name = "."; //$NON-NLS-1$
                        if (nameVersions.add(nameVersion)
                                && (f.hasChildren() || f.getNonJavaResources().length > 0))
                            conditional.add(new ImportItemWrapper(f));
                    }
                }
            }
        } catch (CoreException e) {
        }
    }
    dialog.setElements(elements.toArray());
    dialog.setConditionalElements(conditional.toArray());
}

From source file:org.eclipse.pde.launching.PDESourcePathProvider.java

License:Open Source License

/**
 * Adds runtime classpath entries for binary package fragment roots contained within
 * the project// w  ww .  ja va2 s.c o m
 * 
 * @param jProject
 *          the Java project whose roots are to be enumerated
 * @param all
 *          a list of accumulated runtime classpath entries
 * @throws CoreException
 *          if unable to evaluate the package fragment roots
 */
private void addBinaryPackageFragmentRoots(IJavaProject jProject, List<IRuntimeClasspathEntry> all)
        throws CoreException {
    IPackageFragmentRoot[] roots = jProject.getPackageFragmentRoots();
    for (int j = 0; j < roots.length; j++) {
        if (roots[j].getKind() == IPackageFragmentRoot.K_BINARY && !PDEJavaHelper.isJRELibrary(roots[j])) {
            IRuntimeClasspathEntry rte = JavaRuntime.newArchiveRuntimeClasspathEntry(roots[j].getPath());
            IPath path = roots[j].getSourceAttachmentPath();
            if (path != null) {
                rte.setSourceAttachmentPath(path);
                rte.setSourceAttachmentRootPath(roots[j].getSourceAttachmentRootPath());
            }
            if (!all.contains(rte))
                all.add(rte);
        }
    }

}

From source file:org.eclipse.pde.ui.tests.imports.BaseImportTestCase.java

License:Open Source License

protected boolean checkSourceAttached(IJavaProject jProject) throws CoreException {
    IPackageFragmentRoot[] roots = jProject.getPackageFragmentRoots();
    for (int i = 0; i < roots.length; i++) {
        IClasspathEntry entry = roots[i].getRawClasspathEntry();
        if (entry.getEntryKind() != IClasspathEntry.CPE_LIBRARY
                || entry.getEntryKind() != IClasspathEntry.CPE_CONTAINER
                || !entry.getPath().equals(PDECore.REQUIRED_PLUGINS_CONTAINER_PATH))
            continue;
        if (roots[i].getSourceAttachmentPath() == null)
            return false;
    }/*  w w w  .j a  v  a  2s.com*/
    return true;
}

From source file:org.eclipse.recommenders.jdt.JavaElementsFinder.java

License:Open Source License

public static ImmutableList<IPackageFragmentRoot> findSourceRoots(IJavaProject project) {
    Builder<IPackageFragmentRoot> b = ImmutableList.builder();
    try {//from ww w  . j  ava2  s  .co  m
        for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) {
            if (K_SOURCE == root.getKind()) {
                b.add(root);
            }
        }
    } catch (Exception e) {
        log(ERROR_CANNOT_FETCH_PACKAGE_FRAGMENT_ROOTS, e, project);
    }
    return b.build();
}

From source file:org.eclipse.recommenders.jdt.JavaElementsFinder.java

License:Open Source License

public static ImmutableList<IPackageFragmentRoot> findPackageRootsWithSources(IJavaProject project) {
    Builder<IPackageFragmentRoot> b = ImmutableList.builder();
    try {/*  w  w w .j  a v  a2  s  . c o  m*/
        for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) {
            if (K_SOURCE == root.getKind()) {
                b.add(root);
            } else if (K_BINARY == root.getKind()) {
                if (hasSourceAttachment(root)) {
                    b.add(root);
                }
            }
        }
    } catch (Exception e) {
        log(ERROR_CANNOT_FETCH_PACKAGE_FRAGMENT_ROOTS, e, project);
    }
    return b.build();
}

From source file:org.eclipse.recommenders.jdt.JavaElementsFinder.java

License:Open Source License

public static ImmutableList<IPackageFragmentRoot> findPackageFragmentRoots(IJavaProject project) {
    Builder<IPackageFragmentRoot> b = ImmutableList.builder();
    try {// ww w.  j  a  v  a  2  s .com
        for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) {
            b.add(root);
        }
    } catch (JavaModelException e) {
        log(ERROR_CANNOT_FETCH_PACKAGE_FRAGMENT_ROOTS, e, project);
    }
    return b.build();
}

From source file:org.eclipse.sapphire.java.jdt.ui.internal.JavaTypeCreateActionHandler.java

License:Open Source License

private final IPackageFragmentRoot src(final IJavaProject project) throws JavaModelException {
    for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) {
        if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
            return root;
        }//w  w  w  .  j av  a  2 s  .  co  m
    }

    return null;
}

From source file:org.eclipse.viatra.query.patternlanguage.emf.ui.util.JavaProjectExpectedPackageNameProvider.java

License:Open Source License

/**
 * Based on org.eclipse.xtend.ide.validator.XtendUIValidator.java
 *///from w  ww  .ja  v a2  s  . c  om
@Override
public String getExpectedPackageName(PatternModel model) {
    URI fileURI = model.eResource().getURI();
    for (Pair<IStorage, IProject> storage : storage2UriMapper.getStorages(fileURI)) {
        if (storage.getFirst() instanceof IFile) {
            IPath fileWorkspacePath = storage.getFirst().getFullPath();
            IJavaProject javaProject = JavaCore.create(storage.getSecond());
            if (javaProject != null && javaProject.exists() && javaProject.isOpen()) {
                try {
                    for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
                        if (!root.isArchive() && !root.isExternal()) {
                            IResource resource = root.getResource();
                            if (resource != null) {
                                IPath sourceFolderPath = resource.getFullPath();
                                if (sourceFolderPath.isPrefixOf(fileWorkspacePath)) {
                                    IPath classpathRelativePath = fileWorkspacePath
                                            .makeRelativeTo(sourceFolderPath);
                                    return classpathRelativePath.removeLastSegments(1).toString().replace("/",
                                            ".");
                                }
                            }
                        }
                    }
                } catch (JavaModelException e) {
                    logger.error("Error resolving package declaration for Pattern Model", e);
                }
            }
        }
    }
    return null;
}