Example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoot

List of usage examples for org.eclipse.jdt.core IJavaProject getPackageFragmentRoot

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoot.

Prototype

IPackageFragmentRoot getPackageFragmentRoot(IResource resource);

Source Link

Document

Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a ZIP archive (e.g.

Usage

From source file:org.eclipse.jst.servlet.ui.internal.wizard.NewWebArtifactWizard.java

License:Open Source License

protected void openJavaClass() {
    try {/*from   www  . jav a2  s  .c om*/
        String className;
        if (getDataModel().getBooleanProperty(USE_EXISTING_CLASS)) {
            className = getDataModel().getStringProperty(CLASS_NAME);
        } else {
            className = getDataModel().getStringProperty(QUALIFIED_CLASS_NAME);
        }
        IProject p = (IProject) getDataModel().getProperty(PROJECT);
        IJavaProject javaProject = J2EEEditorUtility.getJavaProject(p);
        IType type = javaProject.findType(className);
        IFile file = null;

        if (type != null) {
            file = (IFile) type.getResource();
        } else if (!getDataModel().getBooleanProperty(USE_EXISTING_CLASS)) {
            // If we could not find the type, the class might be in a folder that is not part of the build path. 
            // Let's look for it using the class name and source folder (this does not work when using existing class, but
            // should not be a problem, because the wizard to select the existing class will not let you select class that 
            // is not in the build path)
            IFolder sourceFolder = (IFolder) getDataModel().getProperty(JAVA_SOURCE_FOLDER);
            String packageName = getDataModel().getStringProperty(JAVA_PACKAGE);
            IPackageFragmentRoot packageFragmentRoot = javaProject.getPackageFragmentRoot(sourceFolder);
            IPackageFragment packageFragment = null;
            if (packageFragmentRoot != null) {
                packageFragment = packageFragmentRoot.getPackageFragment(packageName);
            }
            if (packageFragment != null) {
                ICompilationUnit cu = packageFragment.getCompilationUnit(
                        getDataModel().getStringProperty(CLASS_NAME) + JavaModelUtil.DEFAULT_CU_SUFFIX);
                IResource resource = cu.getResource();
                if (resource.exists() && resource instanceof IFile) {
                    file = (IFile) resource;
                }
            }
        }
        if (file != null) {
            openEditor(file);
        }
    } catch (Exception cantOpen) {
        ServletUIPlugin.log(cantOpen);
    }
}

From source file:org.eclipse.objectteams.otdt.tests.AbstractJavaModelTests.java

License:Open Source License

/**
 * Returns the specified package fragment root in the given project, or
 * <code>null</code> if it does not exist.
 * If relative, the rootPath must be specified as a project relative path.
 * The empty path refers to the package fragment root that is the project
 * folder iteslf./*from www .j a  v  a 2 s . c  o  m*/
 * If absolute, the rootPath refers to either an external jar, or a resource
 * internal to the workspace
 */
public IPackageFragmentRoot getPackageFragmentRoot(String projectName, String rootPath)
        throws JavaModelException {

    IJavaProject project = getJavaProject(projectName);
    if (project == null) {
        return null;
    }
    IPath path = new Path(rootPath);
    if (path.isAbsolute()) {
        IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
        IResource resource = workspaceRoot.findMember(path);
        IPackageFragmentRoot root;
        if (resource == null) {
            // external jar
            root = project.getPackageFragmentRoot(rootPath);
        } else {
            // resource in the workspace
            root = project.getPackageFragmentRoot(resource);
        }
        return root;
    } else {
        IPackageFragmentRoot[] roots = project.getPackageFragmentRoots();
        if (roots == null || roots.length == 0) {
            return null;
        }
        for (int i = 0; i < roots.length; i++) {
            IPackageFragmentRoot root = roots[i];
            if (!root.isExternal() && root.getUnderlyingResource().getProjectRelativePath().equals(path)) {
                return root;
            }
        }
    }
    return null;
}

From source file:org.eclipse.objectteams.otdt.ui.tests.core.CompletionTestSetup.java

License:Open Source License

public static IPackageFragment getAbsoluteTestPackage(IJavaProject project, String packageName)
        throws CoreException {
    IPackageFragmentRoot root = project.getPackageFragmentRoot("src");
    if (!root.exists())
        root = JavaProjectHelper.addSourceContainer(project, "src");

    IPackageFragment fragment = root.getPackageFragment(packageName);
    if (!fragment.exists())
        fragment = root.createPackageFragment(packageName, false, null);

    return fragment;
}

From source file:org.eclipse.objectteams.otdt.ui.tests.core.CompletionTestSetup.java

License:Open Source License

public static IPackageFragment getAnonymousTestPackage(IJavaProject project) throws CoreException {
    String sourceFolder = "src" + fAnonymousSoureFolderCounter++;
    IPackageFragmentRoot root = project.getPackageFragmentRoot(sourceFolder);
    if (!root.exists())
        root = JavaProjectHelper.addSourceContainer(project, sourceFolder);

    IPackageFragment fragment = root.getPackageFragment("test1");
    if (!fragment.exists())
        fragment = root.createPackageFragment("test1", false, null);

    return fragment;
}

From source file:org.eclipse.pde.api.tools.tests.AbstractApiTest.java

License:Open Source License

/**
 * Creates a project with the given name and adds the default 'src' folder
 * // w w  w .j ava  2  s.c om
 * @param name
 * @param packages an optional list of packages to add to the project when
 *            it is created
 * @throws Exception
 */
protected void createProject(final String name, String[] packages) throws Exception {
    if (name == null) {
        return;
    }

    // create project and import source
    IJavaProject jproject = ProjectUtils.createPluginProject(name,
            new String[] { PDE.PLUGIN_NATURE, ApiPlugin.NATURE_ID });
    assertNotNull("The java project must have been created", jproject); //$NON-NLS-1$

    IPackageFragmentRoot root = jproject
            .getPackageFragmentRoot(jproject.getProject().getFolder(ProjectUtils.SRC_FOLDER));
    assertTrue("the src root must have been created", root.exists()); //$NON-NLS-1$
    if (packages != null) {
        IPackageFragment fragment = null;
        for (int i = 0; i < packages.length; i++) {
            fragment = root.createPackageFragment(packages[i], true, new NullProgressMonitor());
            assertNotNull("the package fragment " + packages[i] + " cannot be null", fragment); //$NON-NLS-1$ //$NON-NLS-2$
        }
    }

    PluginRegistry.getWorkspaceModels();

    IApiBaseline baseline = getWorkspaceBaseline();
    assertNotNull("the workspace baseline cannot be null", baseline); //$NON-NLS-1$

    // This assertion caused intermittant failures, skipping it hasn't
    // caused any problems in the tests (Bug 368458)
    // IApiComponent component = baseline.getApiComponent(name);
    // assertNotNull("the test project api component must exist in the workspace baseline",
    // component);

}

From source file:org.eclipse.pde.api.tools.tests.util.ProjectUtils.java

License:Open Source License

/**
 * Adds a new source container specified by the container name to the source
 * path of the specified project/*from   www  .  ja  va2  s . c  o m*/
 * 
 * @param jproject
 * @param containerName
 * @return the package fragment root of the container name
 * @throws CoreException
 */
public static IPackageFragmentRoot addSourceContainer(IJavaProject jproject, String containerName)
        throws CoreException {
    IProject project = jproject.getProject();
    IPackageFragmentRoot root = jproject.getPackageFragmentRoot(addFolderToProject(project, containerName));
    IClasspathEntry cpe = JavaCore.newSourceEntry(root.getPath());
    addToClasspath(jproject, cpe);
    return root;
}

From source file:org.eclipse.pde.api.tools.util.tests.ApiBaselineManagerTests.java

License:Open Source License

/**
 * Tests that the output folder settings for a source folder cause the class
 * file containers to be updated/* ww  w.j a v a  2 s  . c  om*/
 */
public void testWPUpdateOutputFolderSrcFolderChanged() throws Exception {
    IJavaProject project = getTestingProject();
    IApiComponent component = getWorkspaceBaseline().getApiComponent(project.getElementName());
    assertNotNull("the workspace component must exist", component); //$NON-NLS-1$
    int before = component.getApiTypeContainers().length;

    ProjectUtils.addFolderToProject(project.getProject(), "bin3"); //$NON-NLS-1$
    IContainer container = ProjectUtils.addFolderToProject(project.getProject(), "src2"); //$NON-NLS-1$
    // add to bundle class path
    IBundleProjectService service = ProjectUtils.getBundleProjectService();
    IBundleClasspathEntry next = service.newBundleClasspathEntry(new Path("src2"), new Path("bin3"), //$NON-NLS-1$//$NON-NLS-2$
            new Path("next.jar")); //$NON-NLS-1$
    ProjectUtils.addBundleClasspathEntry(project.getProject(), next);
    waitForAutoBuild();

    // retrieve updated component
    component = getWorkspaceBaseline().getApiComponent(project.getElementName());
    assertTrue("there must be one more container after the change", //$NON-NLS-1$
            before < component.getApiTypeContainers().length);
    IPackageFragmentRoot root = project.getPackageFragmentRoot(container);
    assertTrue("the class file container for src2 must be 'bin3'", //$NON-NLS-1$
            "bin3".equals(root.getRawClasspathEntry().getOutputLocation().toFile().getName())); //$NON-NLS-1$
}

From source file:org.eclipse.pde.api.tools.util.tests.ProjectCreationTests.java

License:Open Source License

/**
 * Tests importing the java source for the Javadoc tag update tests
 *//*  w w  w .  j  a v a 2s. c  om*/
public void testImportJavadocTestSource() {
    try {
        File dest = new File(JAVADOC_SRC_DIR);
        assertTrue("the source dir must exist", dest.exists()); //$NON-NLS-1$
        assertTrue("the source dir must be a directory", dest.isDirectory()); //$NON-NLS-1$
        IJavaProject project = getTestingJavaProject(TESTING_PROJECT_NAME);
        IPackageFragmentRoot srcroot = project.getPackageFragmentRoot(ProjectUtils.SRC_FOLDER);
        assertNotNull("the srcroot for the test java project must not be null", srcroot); //$NON-NLS-1$
        FileUtils.importFilesFromDirectory(dest, project.getPath().append(srcroot.getPath()).append("javadoc"), //$NON-NLS-1$
                new NullProgressMonitor());
        // try to look up a file to test if it worked
        IType type = project.findType("javadoc.JavadocTestClass1", new NullProgressMonitor()); //$NON-NLS-1$
        assertNotNull("the JavadocTestClass1 type should exist in the javadoc package", type); //$NON-NLS-1$
    } catch (Exception e) {
        fail(e.getMessage());
    }
}

From source file:org.eclipse.pde.api.tools.util.tests.ProjectCreationTests.java

License:Open Source License

/**
 * Tests importing the java source for the javadoc tag reading tests
 *//*from w w  w . ja  v a 2  s  .co m*/
public void testImportClassesTestSource() {
    try {
        File dest = new File(JAVADOC_READ_SRC_DIR);
        assertTrue("the source dir must exist", dest.exists()); //$NON-NLS-1$
        assertTrue("the source dir must be a directory", dest.isDirectory()); //$NON-NLS-1$
        IJavaProject project = getTestingJavaProject(TESTING_PROJECT_NAME);
        IPackageFragmentRoot srcroot = project.getPackageFragmentRoot(ProjectUtils.SRC_FOLDER);
        assertNotNull("the srcroot for the test java project must not be null", srcroot); //$NON-NLS-1$
        FileUtils.importFilesFromDirectory(dest,
                project.getPath().append(srcroot.getPath()).append("a").append("b").append("c"), //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
                new NullProgressMonitor());
    } catch (Exception e) {
        fail(e.getMessage());
    }
}

From source file:org.eclipse.pde.internal.core.util.ManifestUtils.java

License:Open Source License

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

    String[] libs;/*from   w  w  w.j a 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<IPackageFragmentRoot> pkgFragRoots = new LinkedList<IPackageFragmentRoot>();
    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 pkgFragRoots.toArray(new IPackageFragmentRoot[pkgFragRoots.size()]);
}