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.redhat.ceylon.eclipse.code.explorer.PackageExplorerContentProvider.java

License:Open Source License

@Override
protected Object[] getPackageFragmentRoots(IJavaProject project) throws JavaModelException {
    if (!project.getProject().isOpen())
        return NO_CHILDREN;

    List<Object> result = new ArrayList<Object>();

    IPackageFragmentRoot[] roots = project.getPackageFragmentRoots();
    for (int i = 0; i < roots.length; i++) {
        IPackageFragmentRoot root = roots[i];
        IClasspathEntry classpathEntry = root.getRawClasspathEntry();
        int entryKind = classpathEntry.getEntryKind();
        if (entryKind == IClasspathEntry.CPE_CONTAINER) {
            // all ClassPathContainers are added later
        } else if (fShowLibrariesNode
                && (entryKind == IClasspathEntry.CPE_LIBRARY || entryKind == IClasspathEntry.CPE_VARIABLE)) {
            IResource resource = root.getResource();
            if (resource != null && project.getResource().equals(resource.getParent())) {
                // show resource as child of project, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=141906
                result.add(resource);//  w w  w .j  a  v a2  s .co  m
            } else {
                // skip: will add the referenced library node later
            }
        } else {
            if (isProjectPackageFragmentRoot(root)) {
                // filter out package fragments that correspond to projects and
                // replace them with the package fragments directly
                Object[] fragments = getPackageFragmentRootContent(root);
                for (int j = 0; j < fragments.length; j++) {
                    result.add(fragments[j]);
                }
            } else {
                result.add(root);
            }
        }
    }

    if (fShowLibrariesNode) {
        result.add(new LibraryContainer(project));
    }

    // separate loop to make sure all containers are on the classpath (even empty ones)
    IClasspathEntry[] rawClasspath = project.getRawClasspath();
    for (int i = 0; i < rawClasspath.length; i++) {
        IClasspathEntry classpathEntry = rawClasspath[i];
        if (classpathEntry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
            result.add(new ClassPathContainer(project, classpathEntry));
        }
    }
    Object[] resources = project.getNonJavaResources();
    for (int i = 0; i < resources.length; i++) {
        result.add(resources[i]);
    }
    return result.toArray();
}

From source file:com.redhat.ceylon.eclipse.code.quickfix.CeylonQuickFixController.java

License:Open Source License

public CeylonQuickFixController(IMarker marker) {
    assistant = new CeylonQuickFixAssistant();
    IFileEditorInput input = MarkerUtils.getInput(marker);
    if (input != null) {
        file = input.getFile();/*from  w ww  .j ava2 s .co  m*/
        IProject project = file.getProject();
        IJavaProject javaProject = JavaCore.create(project);
        TypeChecker tc = getProjectTypeChecker(project);
        if (tc != null) {
            try {
                for (IPackageFragmentRoot pfr : javaProject.getPackageFragmentRoots()) {
                    if (pfr.getPath().isPrefixOf(file.getFullPath())) {
                        IPath relPath = file.getFullPath().makeRelativeTo(pfr.getPath());
                        model = tc.getPhasedUnitFromRelativePath(relPath.toString()).getCompilationUnit();
                    }
                }
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        }
    }
    setQuickAssistProcessor(this);
}

From source file:com.redhat.ceylon.eclipse.core.classpath.CeylonClasspathContainer.java

License:Apache License

public static boolean isProjectModule(IJavaProject javaProject, Module module) throws JavaModelException {
    boolean isSource = false;
    for (IPackageFragmentRoot s : javaProject.getPackageFragmentRoots()) {
        if (s.getKind() == IPackageFragmentRoot.K_SOURCE
                && s.getPackageFragment(module.getNameAsString()).exists()) {
            isSource = true;//from w w  w .  j  a  v a 2 s . co  m
            break;
        }
    }
    return isSource;
}

From source file:com.redhat.ceylon.eclipse.core.classpath.CeylonProjectModulesContainer.java

License:Apache License

public static boolean isProjectModule(IJavaProject javaProject, Module module) throws JavaModelException {
    boolean isSource = false;
    for (IPackageFragmentRoot s : javaProject.getPackageFragmentRoots()) {
        if (s.exists() && javaProject.isOnClasspath(s) && s.getKind() == IPackageFragmentRoot.K_SOURCE
                && s.getPackageFragment(module.getNameAsString()).exists()) {
            isSource = true;//from w w  w .  j  a  v  a  2 s. c  o m
            break;
        }
    }
    return isSource;
}

From source file:com.redhat.ceylon.eclipse.core.model.JDTModule.java

License:Open Source License

public synchronized List<IPackageFragmentRoot> getPackageFragmentRoots() {
    if (packageFragmentRoots.isEmpty() && !moduleManager.isExternalModuleLoadedFromSource(getNameAsString())) {
        IJavaProject javaProject = moduleManager.getJavaProject();
        if (javaProject != null) {
            if (this.equals(getLanguageModule())) {
                IClasspathEntry runtimeClasspathEntry = null;

                try {
                    for (IClasspathEntry entry : javaProject.getRawClasspath()) {
                        if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && entry.getPath().segment(0)
                                .equals(CeylonLanguageModuleContainer.CONTAINER_ID)) {
                            runtimeClasspathEntry = entry;
                            break;
                        }//from w  w w  . java2s.  co m
                    }

                    if (runtimeClasspathEntry != null) {
                        for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
                            if (root.exists() && javaProject.isOnClasspath(root)
                                    && root.getRawClasspathEntry().equals(runtimeClasspathEntry)) {
                                packageFragmentRoots.add(root);
                            }
                        }
                    }
                } catch (JavaModelException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                File jarToSearch = null;
                try {
                    jarToSearch = returnCarFile();
                    if (jarToSearch == null) {
                        RepositoryManager repoMgr = CeylonBuilder
                                .getProjectRepositoryManager(javaProject.getProject());
                        if (repoMgr != null) {
                            jarToSearch = CeylonProjectModulesContainer.getModuleArtifact(repoMgr, this);
                        }
                    }

                    if (jarToSearch != null) {
                        IPackageFragmentRoot root = moduleManager.getJavaProject()
                                .getPackageFragmentRoot(jarToSearch.toString());
                        if (root instanceof JarPackageFragmentRoot) {
                            JarPackageFragmentRoot jarRoot = (JarPackageFragmentRoot) root;
                            if (jarRoot.getJar().getName().equals(jarToSearch.getPath())) {
                                packageFragmentRoots.add(root);
                            }
                        }
                    }
                } catch (CoreException e) {
                    if (jarToSearch != null) {
                        System.err.println("Exception trying to get Jar file '" + jarToSearch + "' :");
                    }
                    e.printStackTrace();
                }
            }
        }
    }
    return packageFragmentRoots;
}

From source file:com.redhat.ceylon.eclipse.core.model.JDTModuleManager.java

License:Open Source License

private static boolean moduleFileInProject(String moduleName, IJavaProject p) {
    if (p == null) {
        return false;
    }//from   www  .  j a  va2  s .c o m
    try {
        for (IPackageFragmentRoot sourceFolder : p.getPackageFragmentRoots()) {
            if (!sourceFolder.isArchive() && sourceFolder.exists()
                    && sourceFolder.getKind() == IPackageFragmentRoot.K_SOURCE
                    && sourceFolder.getPackageFragment(moduleName).exists()) {
                return true;
            }
            /*IPath moduleFile = sourceFolder.append(moduleName.replace('.', '/') + 
                "/module.ceylon").makeRelativeTo(p.getFullPath());
            if (p.getFile(moduleFile).exists()) {
            return true;
            }*/
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
    }
    return false;
}

From source file:com.redhat.ceylon.eclipse.core.model.loader.JDTModuleManager.java

License:Open Source License

private boolean moduleFileInProject(String moduleName, IJavaProject p) {
    try {//from w  w  w.j a v  a2s.  c om
        for (IPackageFragmentRoot sourceFolder : p.getPackageFragmentRoots()) {
            if (sourceFolder.getKind() == IPackageFragmentRoot.K_SOURCE && !sourceFolder.isArchive()
                    && sourceFolder.getPackageFragment(moduleName).exists()) {
                return true;
            }
            /*IPath moduleFile = sourceFolder.append(moduleName.replace('.', '/') + 
                  "/module.ceylon").makeRelativeTo(p.getFullPath());
            if (p.getFile(moduleFile).exists()) {
                return true;
            }*/
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
    }
    return false;
}

From source file:com.redhat.ceylon.eclipse.ui.test.headless.ModelAndPhasedUnitsTests.java

License:Open Source License

@Test
public void checkJavaLibrayrUnits() throws CoreException {
    if (compilationError != null) {
        throw compilationError;
    }/*  ww w . j av a  2s  .  c o m*/

    IJavaProject javaProject = JavaCore.create(mainProject);

    String jarName = null;
    IClassFile javaElement = null;
    for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
        if (root instanceof JarPackageFragmentRoot) {
            JarPackageFragmentRoot jarRoot = (JarPackageFragmentRoot) root;
            IPackageFragment pkg = root.getPackageFragment("java.util.logging");
            if (pkg.exists()) {
                javaElement = pkg.getClassFile("Logger.class");
                jarName = jarRoot.getJar().getName();
                break;
            }
        }
    }

    Module module = modelLoader.findModule(AbstractModelLoader.JAVA_BASE_MODULE_NAME, JDKUtils.jdk.version);

    JavaClassFile javaClass = checkDeclarationUnit(module, "java.util.logging.Logger", JavaClassFile.class,
            jarName + "!/" + "java/util/logging/Logger.class", "java/util/logging/Logger.class",
            "Logger.class");
    Assert.assertEquals("Wrong Java Element : ", javaElement, javaClass.getTypeRoot());
    Assert.assertNull("Project Resource should be null :", javaClass.getProjectResource());
    Assert.assertNull("Root Folder Resource should be null :", javaClass.getRootFolderResource());
    Assert.assertNull("File Resource should be null :", javaClass.getFileResource());
}

From source file:com.redhat.ceylon.eclipse.ui.test.headless.ModelAndPhasedUnitsTests.java

License:Open Source License

@Test
public void checkMainProjectJavaCeylonUnits() throws CoreException {
    if (compilationError != null) {
        throw compilationError;
    }/*from   w  ww  .  jav a2  s . c o m*/

    IJavaProject javaProject = JavaCore.create(mainProject);

    String rootPath = null;
    ICompilationUnit javaClassElement = null;
    ICompilationUnit javaObjectElement = null;
    ICompilationUnit javaMethodElement = null;
    for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
        IPackageFragment pkg = root.getPackageFragment("mainModule");
        if (pkg.exists()
                && pkg.getCompilationUnit("JavaCeylonTopLevelClass_Main_Ceylon_Project.java").exists()) {
            javaClassElement = pkg.getCompilationUnit("JavaCeylonTopLevelClass_Main_Ceylon_Project.java");
            javaObjectElement = pkg.getCompilationUnit("javaCeylonTopLevelObject_Main_Ceylon_Project_.java");
            javaMethodElement = pkg.getCompilationUnit("javaCeylonTopLevelMethod_Main_Ceylon_Project_.java");
            rootPath = root.getPath().toOSString();
            break;
        }
    }

    Module module = modelLoader.findModule("mainModule", "1.0.0");
    JavaCompilationUnit javaClassCompilationUnit = checkDeclarationUnit(module,
            "mainModule.JavaCeylonTopLevelClass_Main_Ceylon_Project", JavaCompilationUnit.class,
            rootPath + "/" + "mainModule/JavaCeylonTopLevelClass_Main_Ceylon_Project.java",
            "mainModule/JavaCeylonTopLevelClass_Main_Ceylon_Project.java",
            "JavaCeylonTopLevelClass_Main_Ceylon_Project.java");
    Assert.assertEquals("Wrong Java Element for Class : ", javaClassElement,
            javaClassCompilationUnit.getTypeRoot());
    Assert.assertNotNull("Project Resource  for Class should not be null :",
            javaClassCompilationUnit.getProjectResource());
    Assert.assertNotNull("Root Folder Resource  for Class should not be null :",
            javaClassCompilationUnit.getRootFolderResource());
    Assert.assertNotNull("File Resource should  for Class not be null :",
            javaClassCompilationUnit.getFileResource());

    JavaCompilationUnit javaObjectCompilationUnit = checkDeclarationUnit(module,
            "mainModule.javaCeylonTopLevelObject_Main_Ceylon_Project", JavaCompilationUnit.class,
            rootPath + "/" + "mainModule/javaCeylonTopLevelObject_Main_Ceylon_Project_.java",
            "mainModule/javaCeylonTopLevelObject_Main_Ceylon_Project_.java",
            "javaCeylonTopLevelObject_Main_Ceylon_Project_.java");
    Assert.assertEquals("Wrong Java Element for Object : ", javaObjectElement,
            javaObjectCompilationUnit.getTypeRoot());
    Assert.assertNotNull("Project Resource  for Object should not be null :",
            javaObjectCompilationUnit.getProjectResource());
    Assert.assertNotNull("Root Folder Resource  for Object should not be null :",
            javaObjectCompilationUnit.getRootFolderResource());
    Assert.assertNotNull("File Resource should  for Object not be null :",
            javaObjectCompilationUnit.getFileResource());

    JavaCompilationUnit javaMethodCompilationUnit = checkDeclarationUnit(module,
            "mainModule.javaCeylonTopLevelMethod_Main_Ceylon_Project_", JavaCompilationUnit.class,
            rootPath + "/" + "mainModule/javaCeylonTopLevelMethod_Main_Ceylon_Project_.java",
            "mainModule/javaCeylonTopLevelMethod_Main_Ceylon_Project_.java",
            "javaCeylonTopLevelMethod_Main_Ceylon_Project_.java");
    Assert.assertEquals("Wrong Java Element for Method : ", javaMethodElement,
            javaMethodCompilationUnit.getTypeRoot());
    Assert.assertNotNull("Project Resource  for Method should not be null :",
            javaMethodCompilationUnit.getProjectResource());
    Assert.assertNotNull("Root Folder Resource  for Method should not be null :",
            javaMethodCompilationUnit.getRootFolderResource());
    Assert.assertNotNull("File Resource should  for Method not be null :",
            javaMethodCompilationUnit.getFileResource());
}

From source file:com.redhat.ceylon.eclipse.ui.test.headless.ModelAndPhasedUnitsTests.java

License:Open Source License

@Test
public void checkMainProjectPureJavaUnits() throws CoreException {
    if (compilationError != null) {
        throw compilationError;
    }/*  ww  w.  ja v  a  2  s  . c om*/

    IJavaProject javaProject = JavaCore.create(mainProject);

    String rootPath = null;
    ICompilationUnit javaElement = null;
    for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
        IPackageFragment pkg = root.getPackageFragment("mainModule");
        if (pkg.exists()
                && pkg.getCompilationUnit("JavaClassInCeylonModule_Main_Ceylon_Project.java").exists()) {
            javaElement = pkg.getCompilationUnit("JavaClassInCeylonModule_Main_Ceylon_Project.java");
            rootPath = root.getPath().toOSString();
            break;
        }
    }

    Module module = modelLoader.findModule("mainModule", "1.0.0");

    JavaCompilationUnit javaClassCompilationUnit = checkDeclarationUnit(module,
            "mainModule.JavaClassInCeylonModule_Main_Ceylon_Project", JavaCompilationUnit.class,
            rootPath + "/" + "mainModule/JavaClassInCeylonModule_Main_Ceylon_Project.java",
            "mainModule/JavaClassInCeylonModule_Main_Ceylon_Project.java",
            "JavaClassInCeylonModule_Main_Ceylon_Project.java");
    Assert.assertEquals("Wrong Java Element for Pure Java Class : ", javaElement,
            javaClassCompilationUnit.getTypeRoot());
    Assert.assertNotNull("Project Resource  for Pure Java Class should not be null :",
            javaClassCompilationUnit.getProjectResource());
    Assert.assertNotNull("Root Folder Resource  Pure Java for Class should not be null :",
            javaClassCompilationUnit.getRootFolderResource());
    Assert.assertNotNull("File Resource should  Pure Java for Class not be null :",
            javaClassCompilationUnit.getFileResource());
}