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:org.eclipse.ajdt.internal.ui.editor.actions.AJOrganizeImportsAction.java

License:Open Source License

private void collectCompilationUnits(IPackageFragmentRoot root, Collection result) throws JavaModelException {
    if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
        IJavaElement[] children = root.getChildren();
        for (int i = 0; i < children.length; i++) {
            collectCompilationUnits((IPackageFragment) children[i], result);
        }/*w  w  w  .j  a va 2s.  com*/
    }
}

From source file:org.eclipse.ajdt.internal.ui.editor.actions.AJOrganizeImportsAction.java

License:Open Source License

private boolean isEnabled(IStructuredSelection selection) {
    Object[] selected = selection.toArray();
    for (int i = 0; i < selected.length; i++) {
        try {//from   w ww .ja va  2  s .c  o m
            if (selected[i] instanceof IJavaElement) {
                IJavaElement elem = (IJavaElement) selected[i];
                if (elem.exists()) {
                    switch (elem.getElementType()) {
                    case IJavaElement.TYPE:
                        return elem.getParent().getElementType() == IJavaElement.COMPILATION_UNIT; // for browsing perspective
                    case IJavaElement.COMPILATION_UNIT:
                        return true;
                    case IJavaElement.IMPORT_CONTAINER:
                        return true;
                    case IJavaElement.PACKAGE_FRAGMENT:
                    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
                        IPackageFragmentRoot root = (IPackageFragmentRoot) elem
                                .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
                        return (root.getKind() == IPackageFragmentRoot.K_SOURCE);
                    case IJavaElement.JAVA_PROJECT:
                        // https://bugs.eclipse.org/bugs/show_bug.cgi?id=65638
                        return true;
                    }
                }
            } else if (selected[i] instanceof LogicalPackage) {
                return true;
            }
        } catch (JavaModelException e) {
            if (!e.isDoesNotExist()) {
                JavaPlugin.log(e);
            }
        }
    }
    return false;
}

From source file:org.eclipse.ajdt.internal.ui.wizards.exports.AJJarFileExportOperation.java

License:Open Source License

private void exportResource(IProgressMonitor progressMonitor, IPackageFragmentRoot pkgRoot,
        boolean isInJavaProject, IResource resource, IPath destinationPath, boolean isInOutputFolder) {

    // Handle case where META-INF/MANIFEST.MF is part of the exported files
    if (fJarPackage.areClassFilesExported() && destinationPath.toString().equals("META-INF/MANIFEST.MF")) {//$NON-NLS-1$
        if (fJarPackage.isManifestGenerated())
            addWarning(Messages.format(JarPackagerMessages.JarFileExportOperation_didNotAddManifestToJar,
                    resource.getFullPath()), null);
        return;/*w ww. j a  v  a  2 s  .  c o  m*/
    }

    boolean isNonJavaResource = !isInJavaProject || pkgRoot == null;
    boolean isInClassFolder = false;
    try {
        isInClassFolder = pkgRoot != null && !pkgRoot.isArchive()
                && pkgRoot.getKind() == IPackageFragmentRoot.K_BINARY;
    } catch (JavaModelException ex) {
        addWarning(Messages.format(JarPackagerMessages.JarFileExportOperation_cantGetRootKind,
                resource.getFullPath()), ex);
    }
    if ((fJarPackage.areClassFilesExported()
            && ((isNonJavaResource || (pkgRoot != null && !isJavaFile(resource) && !isClassFile(resource)))
                    || isInClassFolder && isClassFile(resource)))
            || (fJarPackage.areJavaFilesExported() && (isNonJavaResource
                    || (pkgRoot != null && !isClassFile(resource))
                    || (isInClassFolder && isClassFile(resource) && !fJarPackage.areClassFilesExported())))) {
        try {
            progressMonitor.subTask(Messages.format(JarPackagerMessages.JarFileExportOperation_exporting,
                    destinationPath.toString()));
            fJarWriter.write((IFile) resource, destinationPath);
        } catch (CoreException ex) {
            Throwable realEx = ex.getStatus().getException();
            if (realEx instanceof ZipException && realEx.getMessage() != null
                    && realEx.getMessage().startsWith("duplicate entry:")) //$NON-NLS-1$
                addWarning(ex.getMessage(), realEx);
            else
                addToStatus(ex);
        }
    }
}

From source file:org.eclipse.andmore.wizards.buildingblocks.ElementTreeValidator.java

License:Apache License

@Override
public boolean isSelectedValid(Object element) {
    boolean isValid = false;
    try {/*from   w w w . j  a  va  2s.  c  o  m*/
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            IPath path = jproject.getProject().getFullPath();
            isValid = (jproject.findPackageFragmentRoot(path) != null);
        } else if (element instanceof IPackageFragmentRoot) {
            IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) element;

            boolean isSrc = (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE);
            boolean isGen = packageFragmentRoot.getElementName().equals(IAndroidConstants.GEN_SRC_FOLDER)
                    && (packageFragmentRoot.getParent() instanceof IJavaProject);

            isValid = isSrc && !isGen;
        } else {
            isValid = true;
        }
    } catch (JavaModelException e) {
        AndmoreLogger.error(ElementTreeValidator.class, e.getLocalizedMessage(), e);
    }
    return isValid;
}

From source file:org.eclipse.andmore.wizards.buildingblocks.NewBuildingBlocksWizardPage.java

License:Apache License

/**
 * Checks for cross package/class collision among source folders
 * //w w  w. java  2s  .  co  m
 * @return true if there is any collision or false otherwise
 */
private boolean packageAndClassExist() {
    boolean exists = false;

    try {
        if ((getJavaProject() != null) && getJavaProject().isOpen()) {
            IPackageFragmentRoot[] roots = getJavaProject().getPackageFragmentRoots();

            if (roots != null) {
                for (IPackageFragmentRoot root : roots) {
                    if ((root.getKind() & IPackageFragmentRoot.K_SOURCE) == IPackageFragmentRoot.K_SOURCE) {
                        IPackageFragment pack = root.getPackageFragment(getPackageText());

                        if ((pack != null) && pack.exists()) {
                            IJavaElement classes[] = pack.getChildren();

                            if (classes != null) {
                                for (IJavaElement clazz : classes) {
                                    if (clazz.getElementName().equals(getTypeName() + JAVA_EXTENSION)) {
                                        exists = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    if (exists) {
                        break;
                    }
                }
            }
        }
    } catch (JavaModelException e) {
        // Do nothing
        AndmoreLogger.error(NewBuildingBlocksWizardPage.class, e.getLocalizedMessage(), e);
    }

    return exists;
}

From source file:org.eclipse.buildship.ui.launch.TestLaunchShortcutValidator.java

License:Open Source License

private static boolean isInSourceFolder(IType type) {
    // if the type is not defined in a source folder or the source folder
    // type can't be determined, then return false
    IJavaElement fragmentRoot = type.getPackageFragment().getParent();
    if (fragmentRoot instanceof IPackageFragmentRoot) {
        IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) fragmentRoot;
        try {//ww w  .j ava  2  s. c o m
            return packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE;
        } catch (JavaModelException e) {
            return false;
        }
    } else {
        return false;
    }
}

From source file:org.eclipse.che.jdt.javadoc.JavadocContentAccess2.java

License:Open Source License

/**
 * Returns the Javadoc for a package which could be present in package.html, package-info.java
 * or from an attached Javadoc.//from   w w w.  j av a 2 s.c om
 *
 * @param packageFragment the package which is requesting for the document
 * @param urlPrefix
 * @return the document content in HTML format or <code>null</code> if there is no associated
 *         Javadoc
 * @throws CoreException if the Java element does not exists or an exception occurs while
 *             accessing the file containing the package Javadoc
 * @since 3.9
 */
public static String getHTMLContent(IPackageFragment packageFragment, String urlPrefix) throws CoreException {
    IPackageFragmentRoot root = (IPackageFragmentRoot) packageFragment
            .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);

    //1==> Handle the case when the documentation is present in package-info.java or package-info.class file
    ITypeRoot packageInfo;
    boolean isBinary = root.getKind() == IPackageFragmentRoot.K_BINARY;
    if (isBinary) {
        packageInfo = packageFragment.getClassFile(JavaModelUtil.PACKAGE_INFO_CLASS);
    } else {
        packageInfo = packageFragment.getCompilationUnit(JavaModelUtil.PACKAGE_INFO_JAVA);
    }
    if (packageInfo != null && packageInfo.exists()) {
        String cuSource = packageInfo.getSource();
        //the source can be null for some of the class files
        if (cuSource != null) {
            Javadoc packageJavadocNode = getPackageJavadocNode(packageFragment, cuSource);
            if (packageJavadocNode != null) {
                IJavaElement element;
                if (isBinary) {
                    element = ((IClassFile) packageInfo).getType();
                } else {
                    element = packageInfo.getParent(); // parent is the IPackageFragment
                }
                return new JavadocContentAccess2(element, packageJavadocNode, cuSource, urlPrefix).toHTML();
            }
        }
    }

    // 2==> Handle the case when the documentation is done in package.html file. The file can be either in normal source folder or
    // coming from a jar file
    else {
        Object[] nonJavaResources = packageFragment.getNonJavaResources();
        // 2.1 ==>If the package.html file is present in the source or directly in the binary jar
        for (Object nonJavaResource : nonJavaResources) {
            if (nonJavaResource instanceof IFile) {
                IFile iFile = (IFile) nonJavaResource;
                if (iFile.exists() && JavaModelUtil.PACKAGE_HTML.equals(iFile.getName())) {
                    return getIFileContent(iFile);
                }
            }
        }

        // 2.2==>The file is present in a binary container
        if (isBinary) {
            for (Object nonJavaResource : nonJavaResources) {
                // The content is from an external binary class folder
                if (nonJavaResource instanceof IJarEntryResource) {
                    IJarEntryResource jarEntryResource = (IJarEntryResource) nonJavaResource;
                    String encoding = getSourceAttachmentEncoding(root);
                    if (JavaModelUtil.PACKAGE_HTML.equals(jarEntryResource.getName())
                            && jarEntryResource.isFile()) {
                        return getHTMLContent(jarEntryResource, encoding);
                    }
                }
            }
            //2.3 ==>The file is present in the source attachment path.
            String contents = getHTMLContentFromAttachedSource(root, packageFragment, urlPrefix);
            if (contents != null)
                return contents;
        }
    }

    //3==> Handle the case when the documentation is coming from the attached Javadoc
    if ((root.isArchive() || root.isExternal())) {
        return packageFragment.getAttachedJavadoc(null);

    }

    return null;
}

From source file:org.eclipse.che.jdt.search.JavaElementToDtoConverter.java

License:Open Source License

private List<PackageFragmentRoot> getPackageFragmentRoots(Object parent, String projectPath)
        throws JavaModelException {
    List<PackageFragmentRoot> result = new ArrayList<>();
    Set<Object> objects = childrens.get(parent);
    if (objects == null) {
        return result;
    }/*w w  w .j  av a2s. c  o m*/
    for (Object object : objects) {
        if (object instanceof IPackageFragmentRoot) {
            PackageFragmentRoot root = DtoFactory.newDto(PackageFragmentRoot.class);
            IPackageFragmentRoot fragmentRoot = (IPackageFragmentRoot) object;
            root.setProjectPath(projectPath);
            root.setKind(fragmentRoot.getKind());
            root.setPath(fragmentRoot.getPath().toOSString());
            root.setElementName(fragmentRoot.getElementName());
            root.setHandleIdentifier(fragmentRoot.getHandleIdentifier());
            root.setPackageFragments(getPackageFragments(fragmentRoot, projectPath));
            result.add(root);
        }
    }

    return result;
}

From source file:org.eclipse.che.jdt.util.JavaModelUtil.java

License:Open Source License

private static void addAllCus(HashSet<ICompilationUnit> collector, IJavaElement javaElement)
        throws JavaModelException {
    switch (javaElement.getElementType()) {
    case IJavaElement.JAVA_PROJECT:
        IJavaProject javaProject = (IJavaProject) javaElement;
        IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots();
        for (int i = 0; i < packageFragmentRoots.length; i++)
            addAllCus(collector, packageFragmentRoots[i]);
        return;/*from  w  w w . ja  va  2 s.c  o m*/

    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
        IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) javaElement;
        if (packageFragmentRoot.getKind() != IPackageFragmentRoot.K_SOURCE)
            return;
        IJavaElement[] packageFragments = packageFragmentRoot.getChildren();
        for (int j = 0; j < packageFragments.length; j++)
            addAllCus(collector, packageFragments[j]);
        return;

    case IJavaElement.PACKAGE_FRAGMENT:
        IPackageFragment packageFragment = (IPackageFragment) javaElement;
        collector.addAll(Arrays.asList(packageFragment.getCompilationUnits()));
        return;

    case IJavaElement.COMPILATION_UNIT:
        collector.add((ICompilationUnit) javaElement);
        return;

    default:
        IJavaElement cu = javaElement.getAncestor(IJavaElement.COMPILATION_UNIT);
        if (cu != null)
            collector.add((ICompilationUnit) cu);
    }
}

From source file:org.eclipse.che.plugin.java.server.JavaNavigation.java

License:Open Source License

private List<PackageFragmentRoot> toPackageRoots(IJavaProject javaProject, boolean includePackages)
        throws JavaModelException {
    IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots();
    List<PackageFragmentRoot> result = new ArrayList<>();
    for (IPackageFragmentRoot packageFragmentRoot : packageFragmentRoots) {
        if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
            PackageFragmentRoot root = DtoFactory.newDto(PackageFragmentRoot.class);
            root.setPath(packageFragmentRoot.getPath().toOSString());
            root.setProjectPath(packageFragmentRoot.getJavaProject().getPath().toOSString());
            if (includePackages) {
                root.setPackageFragments(toPackageFragments(packageFragmentRoot));
            }//  ww w  .  ja  v  a2 s. c om
            result.add(root);
        }
    }
    return result;
}