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.siteview.mde.internal.core.search.PluginJavaSearchUtil.java

License:Open Source License

public static IJavaSearchScope createSeachScope(IJavaProject jProject) throws JavaModelException {
    IPackageFragmentRoot[] roots = jProject.getPackageFragmentRoots();
    ArrayList filteredRoots = new ArrayList();
    for (int i = 0; i < roots.length; i++) {
        if (roots[i].getResource() != null
                && roots[i].getResource().getProject().equals(jProject.getProject())) {
            filteredRoots.add(roots[i]);
        }/*from w ww.  ja  v  a2 s. c  o m*/
    }
    return SearchEngine.createJavaSearchScope(
            (IJavaElement[]) filteredRoots.toArray(new IJavaElement[filteredRoots.size()]));
}

From source file:com.siteview.mde.internal.core.util.ManifestUtils.java

License:Open Source License

public static IPackageFragmentRoot[] findPackageFragmentRoots(IManifestHeader header, IProject project) {
    IJavaProject javaProject = JavaCore.create(project);

    String[] libs;/*www .  ja  v a2s  . c o  m*/
    if (header == null || header.getValue() == null)
        libs = new String[] { "." }; //$NON-NLS-1$
    else
        libs = header.getValue().split(","); //$NON-NLS-1$

    IBuild build = getBuild(project);
    if (build == null) {
        try {
            return javaProject.getPackageFragmentRoots();
        } catch (JavaModelException e) {
            return new IPackageFragmentRoot[0];
        }
    }
    List pkgFragRoots = new LinkedList();
    for (int j = 0; j < libs.length; j++) {
        String lib = libs[j];
        //https://bugs.eclipse.org/bugs/show_bug.cgi?id=230469           
        IPackageFragmentRoot root = null;
        if (!lib.equals(".")) { //$NON-NLS-1$
            try {
                root = javaProject.getPackageFragmentRoot(project.getFile(lib));
            } catch (IllegalArgumentException e) {
                return new IPackageFragmentRoot[0];
            }
        }
        if (root != null && root.exists()) {
            pkgFragRoots.add(root);
        } else {
            IBuildEntry entry = build.getEntry("source." + lib); //$NON-NLS-1$
            if (entry == null)
                continue;
            String[] tokens = entry.getTokens();
            for (int i = 0; i < tokens.length; i++) {
                IResource resource = project.findMember(tokens[i]);
                if (resource == null)
                    continue;
                root = javaProject.getPackageFragmentRoot(resource);
                if (root != null && root.exists())
                    pkgFragRoots.add(root);
            }
        }
    }
    return (IPackageFragmentRoot[]) pkgFragRoots.toArray(new IPackageFragmentRoot[pkgFragRoots.size()]);
}

From source file:com.siteview.mde.internal.core.util.PDEJavaHelper.java

License:Open Source License

private static IPackageFragmentRoot[] getRoots(IJavaProject jProject) {
    ArrayList result = new ArrayList();
    try {/*  ww  w  .  j ava2  s .c  om*/
        IPackageFragmentRoot[] roots = jProject.getPackageFragmentRoots();
        for (int i = 0; i < roots.length; i++) {
            if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE
                    || jProject.getProject().equals(roots[i].getCorrespondingResource())
                    || (roots[i].isArchive() && !roots[i].isExternal())) {
                result.add(roots[i]);
            }
        }
    } catch (JavaModelException e) {
    }
    return (IPackageFragmentRoot[]) result.toArray(new IPackageFragmentRoot[result.size()]);
}

From source file:com.siteview.mde.internal.launching.launcher.LaunchArgumentsHelper.java

License:Open Source License

private static String getStartupJarPath() throws CoreException {
    IMonitorModelBase model = MonitorRegistry.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();
                }//  w  ww  .j  a  v  a 2 s.c om
            }
        }
        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:com.siteview.mde.internal.ui.editor.build.RuntimeInfoSection.java

License:Open Source License

private IPackageFragmentRoot[] computeSourceFolders() {
    ArrayList folders = new ArrayList();
    IBuildModel buildModel = getBuildModel();
    IProject project = buildModel.getUnderlyingResource().getProject();
    try {// w  w  w  .j a v  a 2 s.co  m
        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) {
        MDEPlugin.logException(e);
    } catch (CoreException e) {
        MDEPlugin.logException(e);
    }
    return (IPackageFragmentRoot[]) folders.toArray(new IPackageFragmentRoot[folders.size()]);
}

From source file:com.siteview.mde.internal.ui.editor.monitor.ImportPackageSection.java

License:Open Source License

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

    ArrayList elements = new ArrayList();
    ArrayList conditional = new ArrayList();
    IMonitorModelBase[] models = MonitorRegistry.getActiveModels();
    Set nameVersions = new HashSet(); // 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]));
        }/*from   www  .  j  a va  2s.  c  om*/
        IMonitorModelBase model = (IMonitorModelBase) getPage().getMDEEditor().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:com.siteview.mde.internal.ui.editor.schema.NewClassCreationWizard.java

License:Open Source License

private void initializeValues(IProject project, String value) throws JavaModelException {
    value = TextUtil.trimNonAlphaChars(value);
    IJavaProject javaProject = JavaCore.create(project);
    IPackageFragmentRoot srcEntryDft = null;
    IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots();
    for (int i = 0; i < roots.length; i++) {
        if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) {
            srcEntryDft = roots[i];//from w w w. ja va2  s  .co m
            break;
        }
    }
    if (srcEntryDft != null)
        packageRoot = srcEntryDft;
    else
        packageRoot = javaProject.getPackageFragmentRoot(javaProject.getResource());

    String packageNameString = null;
    int index = value.lastIndexOf("."); //$NON-NLS-1$
    if (index == -1) {
        className = value;
    } else {
        className = value.substring(index + 1);
        packageNameString = value.substring(0, index);
    }
    if (packageNameString != null && packageRoot != null) {
        IFolder packageFolder = project.getFolder(packageNameString);
        packageName = packageRoot.getPackageFragment(packageFolder.getProjectRelativePath().toOSString());
    }
}

From source file:com.siteview.mde.launching.PDESourcePathProvider.java

License:Open Source License

/**
 * Adds runtime classpath entries for binary package fragment roots contained within
 * the project// w w w.j av  a 2  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 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:com.technophobia.substeps.step.ProjectStepImplementationLoader.java

License:Open Source License

private String[] findDependenciesFor(final IJavaProject javaProject) {
    try {/*from w  w w.j ava  2s .  c  o  m*/
        final IPackageFragmentRoot[] fragmentRoots = javaProject.getPackageFragmentRoots();
        final Collection<String> rootPaths = new ArrayList<String>(fragmentRoots.length);
        for (int i = 0; i < fragmentRoots.length; i++) {
            if (fragmentRoots[i].getKind() == IPackageFragmentRoot.K_BINARY) {
                final String path = getPathFor(fragmentRoots[i]);
                if (path != null) {
                    rootPaths.add(path);
                }
            }
        }
        return rootPaths.toArray(new String[rootPaths.size()]);
    } catch (final JavaModelException ex) {
        FeatureEditorPlugin.instance()
                .warn("Could not get package fragment roots for project " + javaProject.getProject().getName());
        return new String[0];
    }
}

From source file:com.testify.ecfeed.ui.common.EclipseModelImplementer.java

License:Open Source License

private IPackageFragmentRoot getAnySourceFolder() throws CoreException {
    if (fFileInfoProvider.getProject().hasNature(JavaCore.NATURE_ID)) {
        IJavaProject project = JavaCore.create(fFileInfoProvider.getProject());
        for (IPackageFragmentRoot packageFragmentRoot : project.getPackageFragmentRoots()) {
            if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
                return packageFragmentRoot;
            }/*from w  w  w . j a  v a2s .c o m*/
        }
    }
    return null;
}