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:at.bestsolution.efxclipse.tooling.ui.wizards.AbstractHtmlElementPage.java

License:Open Source License

private IPackageFragmentRoot choosePackageRoot() {
    IJavaElement initElement = clazz.getFragmentRoot();
    Class<?>[] acceptedClasses = new Class<?>[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        public boolean isSelectedValid(Object element) {
            try {
                if (element instanceof IJavaProject) {
                    IJavaProject jproject = (IJavaProject) element;
                    IPath path = jproject.getProject().getFullPath();
                    return (jproject.findPackageFragmentRoot(path) != null);
                } else if (element instanceof IPackageFragmentRoot) {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                }/*ww  w .  j  av a2s  .c o  m*/
                return true;
            } catch (JavaModelException e) {
                JavaPlugin.log(e.getStatus()); // just log, no UI in validation
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
        public boolean select(Viewer viewer, Object parent, Object element) {
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    JavaPlugin.log(e.getStatus()); // just log, no UI in validation
                    return false;
                }
            }
            return super.select(viewer, parent, element);
        }
    };

    StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider();
    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
    dialog.setValidator(validator);
    dialog.setComparator(new JavaElementComparator());
    dialog.setTitle(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_title);
    dialog.setMessage(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_description);
    dialog.addFilter(filter);
    dialog.setInput(JavaCore.create(fWorkspaceRoot));
    dialog.setInitialSelection(initElement);
    dialog.setHelpAvailable(false);

    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            return jproject.getPackageFragmentRoot(jproject.getProject());
        } else if (element instanceof IPackageFragmentRoot) {
            return (IPackageFragmentRoot) element;
        }
        return null;
    }
    return null;
}

From source file:at.bestsolution.efxclipse.tooling.ui.wizards.AbstractNewJDTElementWizard.java

License:Open Source License

protected IPackageFragmentRoot getFragmentRoot(IJavaElement elem) {
    IPackageFragmentRoot initRoot = null;
    if (elem != null) {
        initRoot = (IPackageFragmentRoot) elem.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
        try {// ww  w .j  a va 2  s.c o  m
            if (initRoot == null || initRoot.getKind() != IPackageFragmentRoot.K_SOURCE) {
                IJavaProject jproject = elem.getJavaProject();
                if (jproject != null) {
                    initRoot = null;
                    if (jproject.exists()) {
                        IPackageFragmentRoot[] roots = jproject.getPackageFragmentRoots();
                        for (int i = 0; i < roots.length; i++) {
                            if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) {
                                initRoot = roots[i];
                                break;
                            }
                        }
                    }
                    if (initRoot == null) {
                        initRoot = jproject.getPackageFragmentRoot(jproject.getResource());
                    }
                }
            }
        } catch (JavaModelException e) {
            // TODO
            e.printStackTrace();
        }
    }
    return initRoot;
}

From source file:at.component.newcomponentwizard.generator.NewProjectCreationOperation.java

License:Open Source License

@SuppressWarnings({ "rawtypes", "unchecked" })
private void addAllSourcePackages(IProject project, Set list) {
    try {//  ww w  .  jav  a  2s. c o  m
        IJavaProject javaProject = JavaCore.create(project);
        IClasspathEntry[] classpath = javaProject.getRawClasspath();
        for (int i = 0; i < classpath.length; i++) {
            IClasspathEntry entry = classpath[i];
            if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
                IPath path = entry.getPath().removeFirstSegments(1);
                if (path.segmentCount() > 0) {
                    IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(project.getFolder(path));
                    IJavaElement[] children = root.getChildren();
                    for (int j = 0; j < children.length; j++) {
                        IPackageFragment frag = (IPackageFragment) children[j];
                        if (frag.getChildren().length > 0 || frag.getNonJavaResources().length > 0)
                            list.add(children[j].getElementName());
                    }
                }
            }
        }
    } catch (JavaModelException e) {
    }
}

From source file:ca.ecliptical.pde.ds.search.DescriptorQueryParticipant.java

License:Open Source License

private void searchBundle(final IPluginModelBase model, IJavaProject javaProject, IProgressMonitor monitor)
        throws CoreException {
    // note: there's no getBundleDescription().getBundle() so we have to parse the manifest ourselves
    Map<String, String> headers = ManifestUtils.loadManifest(new File(model.getInstallLocation()));
    String header = headers.get(SERVICE_COMPONENT_HEADER);
    if (header == null) {
        if (debug.isDebugging())
            debug.trace(String.format("No Service-Component header in bundle: %s", //$NON-NLS-1$
                    model.getUnderlyingResource().getFullPath()));

        return;/*  w  ww. j av  a  2 s  . co  m*/
    }

    File bundleRoot = new File(model.getInstallLocation());
    IPackageFragmentRoot packageRoot = javaProject.getPackageFragmentRoot(bundleRoot.getAbsolutePath());
    final HashSet<IStorage> files = new HashSet<IStorage>();

    String[] elements = header.split("\\s*,\\s*"); //$NON-NLS-1$
    for (String element : elements) {
        if (element.length() == 0)
            continue;

        final IPath path = new Path(element).makeRelative();
        String lastSegment = path.lastSegment();
        if (lastSegment.indexOf('*') >= 0) {
            // wildcard path; get all entries in directory
            final Filter filter;
            try {
                filter = FrameworkUtil.createFilter("(filename=" + sanitizeFilterValue(lastSegment) + ")"); //$NON-NLS-1$ //$NON-NLS-2$
            } catch (InvalidSyntaxException e) {
                // ignore
                continue;
            }

            IPath folderPath = path.removeLastSegments(1);

            if (packageRoot.exists()) {
                IJarEntryResource folderEntry = findJarEntry(packageRoot, folderPath);
                if (folderEntry != null) {
                    IJarEntryResource[] fileEntries = findMatchingJarEntries(folderEntry, filter);
                    for (IJarEntryResource fileEntry : fileEntries) {
                        files.add(fileEntry);
                    }
                }
            } else {
                File entryDir = folderPath.isEmpty() ? bundleRoot : new File(bundleRoot, folderPath.toString());
                entryDir.listFiles(new FileFilter() {
                    public boolean accept(File pathname) {
                        if (filter.matches(Collections.singletonMap("filename", pathname.getName()))) { //$NON-NLS-1$
                            try {
                                files.add(new ExternalDescriptorFile(path, pathname.toURI().toURL()));
                            } catch (MalformedURLException e) {
                                if (debug.isDebugging())
                                    debug.trace(String.format("Unable to create URL for file: %s", pathname), //$NON-NLS-1$
                                            e);
                            }
                        }

                        return false;
                    }
                });
            }
        } else {
            if (packageRoot.exists()) {
                IJarEntryResource jarEntry = findJarEntry(packageRoot, path);
                if (jarEntry != null)
                    files.add(jarEntry);
            } else {
                URL url;
                try {
                    if (bundleRoot.isDirectory())
                        url = new File(bundleRoot, path.toString()).toURI().toURL();
                    else
                        url = new URL("jar:" + bundleRoot.toURI() + "!/" + path); //$NON-NLS-1$ //$NON-NLS-2$
                } catch (IOException e) {
                    if (debug.isDebugging())
                        debug.trace(String.format("Error creating JAR URL for file '%s' in bundle '%s'.", path, //$NON-NLS-1$
                                bundleRoot), e);

                    continue;
                }

                files.add(new ExternalDescriptorFile(path, url));
            }
        }
    }

    // process each descriptor file
    monitor.beginTask(model.getBundleDescription().getSymbolicName(), files.size());
    try {
        for (IStorage file : files) {
            if (monitor.isCanceled())
                throw new OperationCanceledException();

            searchFile(file, javaProject, new SubProgressMonitor(monitor, 1));
        }
    } finally {
        monitor.done();
    }
}

From source file:com.aerospike.project.wizards.NewAerospikeProjectWizard.java

License:Apache License

protected boolean generateJavaProject() {
    URL url = this.getClass().getResource("project.stg");
    final STGroup projectSTG = new STGroupFile(url.getPath());
    final String projectName = page.getProjectName();
    final String author = page.getAuthor();
    final String email = page.getEmail();
    final String artifactId = page.getArtifiactId();
    final String version = page.getVersion();
    final String packageString = page.getPackage();
    final String mainClass = page.getMainClassName();
    final String seedNode = page.getSeedNode();
    final String port = page.getPortString();
    final boolean generateMain = page.getGenerateMain();
    final boolean generateJUnit = page.getGenerateJUnit();
    IRunnableWithProgress op = new IRunnableWithProgress() {
        public void run(IProgressMonitor monitor) throws InvocationTargetException {
            try {
                //Create the project
                IProject project = createProject(projectName, monitor);
                project.setPersistentProperty(CoreActivator.SEED_NODE_PROPERTY, seedNode);
                project.setPersistentProperty(CoreActivator.PORT_PROPERTY, port);
                project.setPersistentProperty(CoreActivator.UDF_DIRECTORY, null);
                project.setPersistentProperty(CoreActivator.AQL_GENERATION_DIRECTORY, null);
                //make a java project
                IJavaProject javaProject = JavaCore.create(project);
                // create the classpath entries
                List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>();
                IExecutionEnvironmentsManager executionEnvironmentsManager = JavaRuntime
                        .getExecutionEnvironmentsManager();
                IExecutionEnvironment[] executionEnvironments = executionEnvironmentsManager
                        .getExecutionEnvironments();
                for (IExecutionEnvironment iExecutionEnvironment : executionEnvironments) {
                    // We will look for JavaSE-1.6 as the JRE container to add to our classpath
                    if ("JavaSE-1.6".equals(iExecutionEnvironment.getId())) {
                        entries.add(JavaCore
                                .newContainerEntry(JavaRuntime.newJREContainerPath(iExecutionEnvironment)));
                        break;
                    } else if ("JavaSE-1.5".equals(iExecutionEnvironment.getId())) {
                        entries.add(JavaCore
                                .newContainerEntry(JavaRuntime.newJREContainerPath(iExecutionEnvironment)));
                        break;
                    }/*from ww  w  .ja v  a 2  s. co  m*/
                }
                IClasspathEntry mavenEntry = JavaCore.newContainerEntry(
                        new Path("org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"), new IAccessRule[0],
                        new IClasspathAttribute[] { JavaCore.newClasspathAttribute(
                                "org.eclipse.jst.component.dependency", "/WEB-INF/lib") },
                        false);
                entries.add(mavenEntry);
                javaProject.setRawClasspath(entries.toArray(new IClasspathEntry[entries.size()]), null);
                // create source folders
                IFolder srcMainJava = project.getFolder("src/main/java");
                createFolder(srcMainJava);
                IFolder srcMainResource = project.getFolder("src/main/resource");
                createFolder(srcMainResource);
                IFolder srcTestJava = project.getFolder("src/test/java");
                createFolder(srcTestJava);
                IFolder srcTestResource = project.getFolder("src/test/resource");
                createFolder(srcTestResource);
                // create aerospike folders
                IFolder srcUDF = project.getFolder(store.getString(PreferenceConstants.UDF_PATH));
                createFolder(srcUDF);
                IFolder srcGenerated = project.getFolder(store.getString(PreferenceConstants.GENERATION_PATH));
                createFolder(srcGenerated);
                IFolder srcAql = project.getFolder("aql");
                createFolder(srcAql);
                //
                IPackageFragmentRoot mainJava = javaProject.getPackageFragmentRoot(srcMainJava);
                IPackageFragmentRoot mainResource = javaProject.getPackageFragmentRoot(srcMainResource);
                IPackageFragmentRoot testJava = javaProject.getPackageFragmentRoot(srcTestJava);
                IPackageFragmentRoot testResource = javaProject.getPackageFragmentRoot(srcTestResource);
                IPackageFragmentRoot mainGenerated = javaProject.getPackageFragmentRoot(srcGenerated);
                IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
                IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 5];
                System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);
                newEntries[oldEntries.length] = JavaCore.newSourceEntry(mainJava.getPath());
                newEntries[oldEntries.length + 1] = JavaCore.newSourceEntry(mainResource.getPath());
                newEntries[oldEntries.length + 2] = JavaCore.newSourceEntry(testJava.getPath());
                newEntries[oldEntries.length + 3] = JavaCore.newSourceEntry(testResource.getPath());
                newEntries[oldEntries.length + 4] = JavaCore.newSourceEntry(mainGenerated.getPath());
                javaProject.setRawClasspath(newEntries, monitor);
                // create the pom.xml
                ST template = projectSTG.getInstanceOf("pom");
                template.add("name", projectName);
                template.add("artifactId", artifactId);
                template.add("version", version);
                template.add("author", author);
                template.add("email", email);
                template.add("mainClass", mainClass);
                template.add("package", packageString);
                createFile(project, null, "pom.xml", monitor, template);
                // create the log4J.properties
                template = projectSTG.getInstanceOf("log4J");
                template.add("package", packageString);
                template.add("mainClass", mainClass);
                createFile(project, srcMainJava, "log4j.properties", monitor, template);
                // create the .gitignore
                template = projectSTG.getInstanceOf("ignore");
                createFile(project, null, ".gitignore", monitor, template);
                // create the README
                template = projectSTG.getInstanceOf("readme");
                template.add("name", projectName);
                createFile(project, null, "README.md", monitor, template);
                // create package
                // create JUnit
                if (generateJUnit) {
                    IPackageFragment pack = javaProject.getPackageFragmentRoot(srcTestJava)
                            .createPackageFragment(packageString, false, null);
                    template = projectSTG.getInstanceOf("junit");
                    template.add("name", mainClass + "Test");
                    template.add("package", packageString);
                    template.add("classUnderTest", mainClass);
                    pack.createCompilationUnit(mainClass + "Test" + ".java", template.render(), false, monitor);
                }
                // create main class
                IPackageFragment pack = javaProject.getPackageFragmentRoot(srcMainJava)
                        .createPackageFragment(packageString, false, null);
                template = projectSTG.getInstanceOf("mainClass");
                template.add("name", mainClass);
                template.add("package", packageString);
                template.add("author", author);
                template.add("seedNode", seedNode);
                template.add("port", port);
                final ICompilationUnit cu = pack.createCompilationUnit(mainClass + ".java", template.render(),
                        false, monitor);
                // open editor on main class
                monitor.setTaskName("Opening file for editing...");
                getShell().getDisplay().asyncExec(new Runnable() {
                    public void run() {
                        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
                                .getActivePage();
                        try {
                            IEditorPart editor = IDE.openEditor(page, (IFile) cu.getResource(), true);
                        } catch (PartInitException e) {
                        }
                    }
                });

            } catch (CoreException e) {
                throw new InvocationTargetException(e);
            } finally {
                monitor.done();
            }
        }
    };
    try {
        getContainer().run(true, false, op);
    } catch (InterruptedException e) {
        return false;
    } catch (InvocationTargetException e) {
        Throwable realException = e.getTargetException();
        MessageDialog.openError(getShell(), "Error", realException.getMessage());
        return false;
    }
    return true;
}

From source file:com.amazonaws.eclipse.lambda.project.wizard.NewLambdaJavaFunctionProjectWizard.java

License:Open Source License

private static void addTestDirectoryToClasspath(IProject project) {

    try {/*  w w w. ja  va2s .  co m*/
        IJavaProject javaProj = JavaCore.create(project);
        IFolder tstFolder = project.getFolder("tst");

        IPackageFragmentRoot tstRoot = javaProj.getPackageFragmentRoot(tstFolder);

        IClasspathEntry[] originalCp = javaProj.getRawClasspath();
        IClasspathEntry[] augmentedCp = new IClasspathEntry[originalCp.length + 1];
        System.arraycopy(originalCp, 0, augmentedCp, 0, originalCp.length);

        augmentedCp[originalCp.length] = JavaCore.newSourceEntry(tstRoot.getPath());

        javaProj.setRawClasspath(augmentedCp, null);

    } catch (Exception e) {
        LambdaPlugin.getDefault().warn("Failed to add tst directory to the classpath", e);
    }
}

From source file:com.amazonaws.eclipse.lambda.project.wizard.util.FunctionProjectUtil.java

License:Open Source License

private static void addTestDirectoryToClasspath(IProject project) {

    try {/*from w  w  w .  j a v a  2s  . c om*/
        IJavaProject javaProj = JavaCore.create(project);
        IFolder tstFolder = project.getFolder("tst");

        IPackageFragmentRoot tstRoot = javaProj.getPackageFragmentRoot(tstFolder);

        if (javaProj.isOnClasspath(tstRoot))
            return;

        IClasspathEntry[] originalCp = javaProj.getRawClasspath();
        IClasspathEntry[] augmentedCp = new IClasspathEntry[originalCp.length + 1];
        System.arraycopy(originalCp, 0, augmentedCp, 0, originalCp.length);

        augmentedCp[originalCp.length] = JavaCore.newSourceEntry(tstRoot.getPath());
        javaProj.setRawClasspath(augmentedCp, null);

    } catch (Exception e) {
        LambdaPlugin.getDefault().warn("Failed to add tst directory to the classpath", e);
    }
}

From source file:com.android.ide.eclipse.adt.internal.editors.manifest.ManifestInfo.java

License:Open Source License

/**
 * Returns the first package root for the given java project
 *
 * @param javaProject the project to search in
 * @return the first package root, or null
 *///www .j a  v a  2 s. c  o  m
@Nullable
public static IPackageFragmentRoot getSourcePackageRoot(IJavaProject javaProject) {
    IPackageFragmentRoot packageRoot = null;
    List<IPath> sources = BaseProjectHelper.getSourceClasspaths(javaProject);

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    for (IPath path : sources) {
        IResource firstSource = workspace.getRoot().findMember(path);
        if (firstSource != null) {
            packageRoot = javaProject.getPackageFragmentRoot(firstSource);
            if (packageRoot != null) {
                break;
            }
        }
    }
    return packageRoot;
}

From source file:com.centurylink.mdw.plugin.WizardPage.java

License:Apache License

public void determinePackageFragmentRoot(WorkflowProject workflowProject) {
    IPackageFragmentRoot oldPackageFragmentRoot = getPackageFragmentRoot();

    if (workflowProject != null && workflowProject.isLocalJavaSupported()) {
        try {/*from w w w  . j a v  a  2  s.  c  o m*/
            IPackageFragmentRoot tempRoot = null;
            IPackageFragmentRoot srcRoot = null;
            IJavaProject javaProject = workflowProject == null ? null : workflowProject.getSourceJavaProject();
            if (javaProject != null) {
                for (IPackageFragmentRoot pfr : javaProject.getPackageFragmentRoots()) {
                    if (pfr.getKind() == IPackageFragmentRoot.K_SOURCE) {
                        if (pfr.getElementName().equals(MdwPlugin.getSettings().getTempResourceLocation())) {
                            tempRoot = pfr;
                        } else {
                            srcRoot = pfr;
                            break;
                        }
                    }
                }
                if (srcRoot == null && tempRoot == null)
                    srcRoot = javaProject.getPackageFragmentRoot(javaProject.getResource());
                setPackageFragmentRoot(srcRoot == null ? tempRoot : srcRoot, true);
            }
        } catch (JavaModelException ex) {
            PluginMessages.log(ex);
        }
    } else {
        setPackageFragmentRoot(getPackageFragmentRoot(), true);
    }
    if (oldPackageFragmentRoot == null || !oldPackageFragmentRoot.equals(getPackageFragmentRoot()))
        setPackageFragment(null, true);
}

From source file:com.centurylink.mdw.plugin.WizardPage.java

License:Apache License

/**
 * Override to prefer non-temp package root.
 *///from  ww w.ja  v a 2 s  .c o m
@SuppressWarnings("restriction")
@Override
protected void initContainerPage(IJavaElement elem) {
    IPackageFragmentRoot tempRoot = null; // only as fallback
    IPackageFragmentRoot initRoot = null;
    if (elem != null) {
        initRoot = org.eclipse.jdt.internal.corext.util.JavaModelUtil.getPackageFragmentRoot(elem);
        try {
            if (initRoot == null || initRoot.getKind() != IPackageFragmentRoot.K_SOURCE) {
                IJavaProject jproject = elem.getJavaProject();
                if (jproject != null) {
                    initRoot = null;
                    if (jproject.exists()) {
                        IPackageFragmentRoot[] roots = jproject.getPackageFragmentRoots();
                        for (int i = 0; i < roots.length; i++) {
                            if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) {
                                if (roots[i].getElementName()
                                        .equals(MdwPlugin.getSettings().getTempResourceLocation())) {
                                    tempRoot = roots[i];
                                } else {
                                    initRoot = roots[i];
                                    break;
                                }
                            }
                        }
                    }
                    if (initRoot == null && tempRoot == null) {
                        initRoot = jproject.getPackageFragmentRoot(jproject.getResource());
                    }
                }
            }
        } catch (JavaModelException e) {
            org.eclipse.jdt.internal.ui.JavaPlugin.log(e);
        }
    }
    setPackageFragmentRoot(initRoot == null ? tempRoot : initRoot, true);
}