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:com.codenvy.ide.ext.java.server.internal.core.JavaElement.java

License:Open Source License

protected URL getJavadocBaseLocation() throws JavaModelException {
    IPackageFragmentRoot root = (IPackageFragmentRoot) getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
    if (root == null) {
        return null;
    }//w ww .ja  v a  2  s .  c  o m

    if (root.getKind() == IPackageFragmentRoot.K_BINARY) {
        IClasspathEntry entry = null;
        try {
            entry = root.getResolvedClasspathEntry();
            URL url = getLibraryJavadocLocation(entry);
            if (url != null) {
                return url;
            }
        } catch (JavaModelException jme) {
            // Proceed with raw classpath
        }

        entry = root.getRawClasspathEntry();
        switch (entry.getEntryKind()) {
        case IClasspathEntry.CPE_LIBRARY:
        case IClasspathEntry.CPE_VARIABLE:
            return getLibraryJavadocLocation(entry);
        default:
            return null;
        }
    }
    return null;
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.HierarchyScope.java

License:Open Source License

private IPath[] computeProjectsAndJars(IType type) throws JavaModelException {
    HashSet set = new HashSet();
    IPackageFragmentRoot root = (IPackageFragmentRoot) type.getPackageFragment().getParent();
    if (root.isArchive()) {
        // add the root
        set.add(root.getPath());/*from   ww  w . j a  va  2 s  .  c o m*/
        // add all projects that reference this archive and their dependents
        IPath rootPath = root.getPath();
        IJavaModel model = JavaModelManager.getJavaModelManager().getJavaModel();
        IJavaProject[] projects = model.getJavaProjects();
        HashSet visited = new HashSet();
        for (int i = 0; i < projects.length; i++) {
            JavaProject project = (JavaProject) projects[i];
            IClasspathEntry entry = project.getClasspathEntryFor(rootPath);
            if (entry != null) {
                // add the project and its binary pkg fragment roots
                IPackageFragmentRoot[] roots = project.getAllPackageFragmentRoots();
                set.add(project.getPath());
                for (int k = 0; k < roots.length; k++) {
                    IPackageFragmentRoot pkgFragmentRoot = roots[k];
                    if (pkgFragmentRoot.getKind() == IPackageFragmentRoot.K_BINARY) {
                        set.add(pkgFragmentRoot.getPath());
                    }
                }
                // add the dependent projects
                computeDependents(project, set, visited);
            }
        }
    } else {
        // add all the project's pkg fragment roots
        IJavaProject project = (IJavaProject) root.getParent();
        IPackageFragmentRoot[] roots = project.getAllPackageFragmentRoots();
        for (int i = 0; i < roots.length; i++) {
            IPackageFragmentRoot pkgFragmentRoot = roots[i];
            if (pkgFragmentRoot.getKind() == IPackageFragmentRoot.K_BINARY) {
                set.add(pkgFragmentRoot.getPath());
            } else {
                set.add(pkgFragmentRoot.getParent().getPath());
            }
        }
        // add the dependent projects
        computeDependents(project, set, new HashSet());
    }
    IPath[] result = new IPath[set.size()];
    set.toArray(result);
    return result;
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavaDocLocations.java

License:Open Source License

/**
 * Returns the reason for why the Javadoc of the Java element could not be retrieved.
 *
 * @param element whose Javadoc could not be retrieved
 * @param root the root of the Java element
 * @return the String message for why the Javadoc could not be retrieved for the Java element or
 *         <code>null</code> if the Java element is from a source container
 * @since 3.9/*from   w  w  w .  j a v  a2  s  .co m*/
 */
public static String getExplanationForMissingJavadoc(IJavaElement element, IPackageFragmentRoot root) {
    String message = null;
    try {
        boolean isBinary = (root.exists() && root.getKind() == IPackageFragmentRoot.K_BINARY);
        if (isBinary) {
            boolean hasAttachedJavadoc = JavaDocLocations.getJavadocBaseLocation(element) != null;
            boolean hasAttachedSource = root.getSourceAttachmentPath() != null;
            IOpenable openable = element.getOpenable();
            boolean hasSource = openable.getBuffer() != null;

            // Provide hint why there's no Java doc
            if (!hasAttachedSource && !hasAttachedJavadoc)
                message = CorextMessages.JavaDocLocations_noAttachments;
            else if (!hasAttachedJavadoc && !hasSource)
                message = CorextMessages.JavaDocLocations_noAttachedJavadoc;
            else if (!hasAttachedSource)
                message = CorextMessages.JavaDocLocations_noAttachedSource;
            else if (!hasSource)
                message = CorextMessages.JavaDocLocations_noInformation;

        }
    } catch (JavaModelException e) {
        message = CorextMessages.JavaDocLocations_error_gettingJavadoc;
        LOG.error(message, e);
    }
    return message;
}

From source file:com.drgarbage.bytecodevisualizer.editors.NoSourceViewer.java

License:Apache License

private void createSourceAttachmentControls(Composite composite, IPackageFragmentRoot root)
        throws JavaModelException {
    IClasspathEntry entry;//www .  j  a va2s  . c om
    try {
        entry = root.getRawClasspathEntry();
    } catch (JavaModelException ex) {
        if (ex.isDoesNotExist())
            entry = null;
        else
            throw ex;
    }
    IPath containerPath = null;

    if (entry == null || root.getKind() != IPackageFragmentRoot.K_BINARY) {
        String s = CoreMessages.SourceAttachmentForm_message_noSource;
        createLabel(composite, MessageFormat.format(s, new Object[] { fFile.getElementName() }));
        return;
    }

    IJavaProject jproject = root.getJavaProject();
    if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
        containerPath = entry.getPath();
        ClasspathContainerInitializer initializer = JavaCore
                .getClasspathContainerInitializer(containerPath.segment(0));
        IClasspathContainer container = JavaCore.getClasspathContainer(containerPath, jproject);
        if (initializer == null || container == null) {
            createLabel(composite, MessageFormat.format(CoreMessages.SourceAttachmentForm_cannotconfigure,
                    new Object[] { containerPath.toString() }));
            return;
        }
        String containerName = container.getDescription();
        IStatus status = initializer.getSourceAttachmentStatus(containerPath, jproject);
        if (status.getCode() == ClasspathContainerInitializer.ATTRIBUTE_NOT_SUPPORTED) {
            createLabel(composite, MessageFormat.format(CoreMessages.SourceAttachmentForm_notsupported,
                    new Object[] { containerName }));
            return;
        }
        if (status.getCode() == ClasspathContainerInitializer.ATTRIBUTE_READ_ONLY) {
            createLabel(composite, MessageFormat.format(CoreMessages.SourceAttachmentForm_readonly,
                    new Object[] { containerName }));
            return;
        }
        entry = JavaModelUtil.findEntryInContainer(container, root.getPath());
        Assert.isNotNull(entry);
    }

    Button button;

    String msg = null;
    String btnText = null;

    IPath path = entry.getSourceAttachmentPath();
    if (path == null || path.isEmpty()) {
        msg = MessageFormat.format(CoreMessages.SourceAttachmentForm_message_noSourceAttachment,
                new Object[] { root.getElementName() });
        btnText = CoreMessages.SourceAttachmentForm_button_attachSource;
    } else {
        msg = MessageFormat.format(CoreMessages.SourceAttachmentForm_message_noSourceInAttachment,
                new Object[] { fFile.getElementName() });
        btnText = CoreMessages.SourceAttachmentForm_button_changeAttachedSource;
    }

    createLabel(composite, msg);
    createLabel(composite, CoreMessages.SourceAttachmentForm_message_pressButtonToAttach);
    createLabel(composite, null);

    button = createButton(composite, btnText);
    button.addSelectionListener(createButtonListener(entry, containerPath, jproject));
}

From source file:com.ebmwebsourcing.petals.common.internal.projectscnf.JarFragmentFilter.java

License:Open Source License

@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {

    IPackageFragmentRoot fragmentRoot = null;
    if (element instanceof IPackageFragmentRoot) {
        fragmentRoot = (IPackageFragmentRoot) element;
    } else if (element instanceof TreePath) {
        Object o = ((TreePath) element).getFirstSegment();
        if (o instanceof IPackageFragmentRoot)
            fragmentRoot = (IPackageFragmentRoot) o;
    }//  w w w  .j a  v  a  2s.c  om

    boolean result = true;
    try {
        if (fragmentRoot != null) {
            result = fragmentRoot.getKind() != IPackageFragmentRoot.K_BINARY;
        }

    } catch (JavaModelException e) {
        PetalsCommonPlugin.log(e, IStatus.ERROR);
    }

    return result;
}

From source file:com.ebmwebsourcing.petals.common.internal.provisional.projectscnf.PetalsProjectsSorter.java

License:Open Source License

/**
 * Compares Java elements./*from  w w w.  jav a  2 s .  c  o  m*/
 * @param j1
 * @param j2
 * @return an integer for sorting (0 if equivalent, <0 to display j1 first, >0 to display j2 first)
 */
private int compareJavaElements(IJavaElement j1, IJavaElement j2) {

    // Fragment roots have a special treatment
    if (j1 instanceof IPackageFragmentRoot && j2 instanceof IPackageFragmentRoot) {
        IPackageFragmentRoot p1 = (IPackageFragmentRoot) j1;
        IPackageFragmentRoot p2 = (IPackageFragmentRoot) j2;

        try {
            if (p1.getKind() == p2.getKind())
                return p1.getElementName().compareTo(p2.getElementName());
            else if (p1.getKind() == IPackageFragmentRoot.K_SOURCE)
                return -1;
            else
                return 1;

        } catch (JavaModelException e) {
            PetalsCommonPlugin.log(e, IStatus.ERROR);
        }

        return p1.getElementName().compareTo(p2.getElementName());
    }

    // Otherwise, it depends on the element type
    if (j1.getElementType() == j2.getElementType())
        return j1.getElementName().compareTo(j2.getElementName());
    else
        return j1.getElementType() - j2.getElementType();
}

From source file:com.ecfeed.ui.common.utils.EclipsePackageFragmentGetter.java

License:Open Source License

private static IPackageFragmentRoot getAnySourceFolder(IFileInfoProvider fFileInfoProvider)
        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;
            }/* w ww. j  av a2  s .  c  o  m*/
        }
    }
    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 {/* w w  w.  j  a  v  a 2 s  .com*/
            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.appengine.eclipse.core.properties.GaeProjectProperties.java

License:Open Source License

public static List<IPath> getOrmEnhancementInclusionPatterns(IProject project) {
    List<IPath> patterns = new ArrayList<IPath>();

    IEclipsePreferences prefs = getProjectProperties(project);
    String rawPropVal = prefs.get(ORM_ENHANCEMENT_INCLUSIONS, null);
    if (rawPropVal == null) {
        // If we haven't set this property yet, default to including all Java src
        IJavaProject javaProject = JavaCore.create(project);
        try {//from  w  w  w.j  a  v  a  2s . c  om
            for (IPackageFragmentRoot pkgRoot : javaProject.getAllPackageFragmentRoots()) {
                if (pkgRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
                    // Only include src roots in this project
                    if (javaProject.equals(pkgRoot.getAncestor(IJavaElement.JAVA_PROJECT))) {
                        // Get project-relative path to source root
                        IPath pattern = pkgRoot.getPath().removeFirstSegments(1).makeRelative()
                                .addTrailingSeparator();
                        patterns.add(pattern);
                    }
                }
            }
        } catch (JavaModelException e) {
            AppEngineCorePluginLog.logError(e);
        }
    } else {
        patterns = PropertiesUtilities.deserializePaths(rawPropVal);
    }

    return patterns;
}

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  .ja v  a2 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;
}