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:com.ecfeed.ui.common.utils.EclipsePackageFragmentGetter.java

License:Open Source License

private static IPackageFragmentRoot createNewSourceFolder(String name, IFileInfoProvider fFileInfoProvider)
        throws CoreException {

    IProject project = fFileInfoProvider.getProject();
    IJavaProject javaProject = JavaCore.create(project);
    IFolder srcFolder = project.getFolder(name);

    int i = 0;//  w w w.  j a v a2 s.  c  o  m
    while (srcFolder.exists()) {
        String newName = name + i++;
        srcFolder = project.getFolder(newName);
    }
    srcFolder.create(false, true, null);
    IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(srcFolder);

    IClasspathEntry[] entries = javaProject.getRawClasspath();
    IClasspathEntry[] updated = new IClasspathEntry[entries.length + 1];
    System.arraycopy(entries, 0, updated, 0, entries.length);
    updated[entries.length] = JavaCore.newSourceEntry(root.getPath());
    javaProject.setRawClasspath(updated, null);
    return root;
}

From source file:com.google.gdt.eclipse.appengine.rpc.util.JavaUtils.java

License:Open Source License

/**
 * Creates a package fragment root from a path. The path should be
 * pre-validated using {@link #validateContainer(String)},
 *///  w  w  w . ja  v a 2 s  .  c o  m
public static IPackageFragmentRoot createContainer(String containerPath) {
    IPath path = new Path(containerPath);
    IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
    IResource res = workspaceRoot.findMember(path);
    if (res != null) {
        int resType = res.getType();
        if (resType == IResource.PROJECT || resType == IResource.FOLDER) {
            IProject proj = res.getProject();
            IJavaProject jproject = JavaCore.create(proj);
            return jproject.getPackageFragmentRoot(res);
        }
    }
    return null;
}

From source file:com.google.gdt.eclipse.appengine.rpc.util.JavaUtils.java

License:Open Source License

public static IStatus validateContainer(String packageRootText) {
    StatusInfo status = new StatusInfo();

    String str = packageRootText;
    if (str.length() == 0) {
        status.setError("Source folder name is empty."); //$NON-NLS-1$
        return status;
    }/*  w w  w  .j  a v  a2  s  .  c  om*/
    IPath path = new Path(str);
    IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
    IResource res = workspaceRoot.findMember(path);
    if (res != null) {
        int resType = res.getType();
        if (resType == IResource.PROJECT || resType == IResource.FOLDER) {
            IProject proj = res.getProject();
            if (!proj.isOpen()) {
                status.setError(Messages.format(NewWizardMessages.NewContainerWizardPage_error_ProjectClosed,
                        BasicElementLabels.getPathLabel(proj.getFullPath(), false)));
                return status;
            }
            IJavaProject jproject = JavaCore.create(proj);
            IPackageFragmentRoot root = jproject.getPackageFragmentRoot(res);
            if (res.exists()) {
                if (isVirtual(res)) {
                    status.setError("Source folder cannot be a virtual folder."); //$NON-NLS-1$
                    return status;
                }
                try {
                    if (!proj.hasNature(JavaCore.NATURE_ID)) {
                        if (resType == IResource.PROJECT) {
                            status.setError(NewWizardMessages.NewContainerWizardPage_warning_NotAJavaProject);
                        } else {
                            status.setWarning(
                                    NewWizardMessages.NewContainerWizardPage_warning_NotInAJavaProject);
                        }
                        return status;
                    }
                    if (root.isArchive()) {
                        status.setError(Messages.format(
                                NewWizardMessages.NewContainerWizardPage_error_ContainerIsBinary,
                                BasicElementLabels.getPathLabel(path, false)));
                        return status;
                    }
                    if (root.getKind() == IPackageFragmentRoot.K_BINARY) {
                        status.setWarning(Messages.format(
                                NewWizardMessages.NewContainerWizardPage_warning_inside_classfolder,
                                BasicElementLabels.getPathLabel(path, false)));
                    } else if (!jproject.isOnClasspath(root)) {
                        status.setWarning(
                                Messages.format(NewWizardMessages.NewContainerWizardPage_warning_NotOnClassPath,
                                        BasicElementLabels.getPathLabel(path, false)));
                    }
                } catch (JavaModelException e) {
                    status.setWarning(NewWizardMessages.NewContainerWizardPage_warning_NotOnClassPath);
                } catch (CoreException e) {
                    status.setWarning(NewWizardMessages.NewContainerWizardPage_warning_NotAJavaProject);
                }
            }
            return status;
        } else {
            status.setError(Messages.format(NewWizardMessages.NewContainerWizardPage_error_NotAFolder,
                    BasicElementLabels.getPathLabel(path, false)));
            return status;
        }
    } else {
        status.setError(Messages.format(NewWizardMessages.NewContainerWizardPage_error_ContainerDoesNotExist,
                BasicElementLabels.getPathLabel(path, false)));
        return status;
    }
}

From source file:com.google.gdt.eclipse.appengine.rpc.wizards.RPCWizardUISupport.java

License:Open Source License

public IPackageFragmentRoot chooseContainer(IType type) {

    Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        @Override//from  w ww. ja  v a  2s. co m
        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);
                }
                return true;
            } catch (JavaModelException e) {
                AppEngineRPCPlugin.log(e);
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
        @Override
        public boolean select(Viewer viewer, Object parent, Object element) {

            // only show appengine projects
            if (element instanceof IJavaProject) {
                IJavaProject jp = (IJavaProject) element;
                return isAppEngineProject(jp.getProject());
            }

            // only show source folders
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    AppEngineRPCPlugin.log(e);
                    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("Source Folder Selection"); //$NON-NLS-1$
    dialog.setMessage("&Choose a source folder:"); //$NON-NLS-1$
    dialog.addFilter(filter);
    dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
    if (type != null) {
        dialog.setInitialSelection(JavaUtils.getPackageFragmentRoot(type));
    }
    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:com.google.gdt.eclipse.core.java.ClasspathResourceUtilities.java

License:Open Source License

private static IPackageFragmentRoot getPackageFragmentRootForResource(IResource resource,
        IJavaProject javaProject) throws JavaModelException {

    while (resource != null) {
        IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(resource);
        /*// w ww.  jav a2s .  co m
         * Not using JavaModelSearch.isValidElement since checking for exclusions
         * from the buildpath is the caller's responsibility.
         */
        if (root != null && root.exists()) {
            return root;
        }

        resource = resource.getParent();
    }

    return null;
}

From source file:com.google.gwt.eclipse.core.speedtracer.ViewSourceServlet.java

License:Open Source License

private IPackageFragmentRoot getPackageFragmentRoot(String jarPathString, String preferredProjectName)
        throws IOException {
    try {//w w  w.  j a  v a  2 s  . c  o  m
        IFile jarIFile = getFile(jarPathString);

        // The JAR is in the workspace
        return JavaCore.createJarPackageFragmentRootFrom(jarIFile);
    } catch (IOException e) {
        // JAR must not be in the workspace (or is not a file), continue..
    }

    File jarFile = new File(jarPathString);

    // Iterate projects to find the external JAR
    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    List<IProject> projects = new ArrayList<IProject>(Arrays.asList(root.getProjects()));
    IProject preferredProject = preferredProjectName != null ? root.getProject(preferredProjectName) : null;
    if (preferredProject != null && preferredProject.exists()) {
        // Search the preferred project first
        projects.remove(preferredProject);
        projects.add(0, preferredProject);
    }

    for (IProject project : projects) {
        IJavaProject javaProject = JavaCore.create(project);
        if (!javaProject.exists()) {
            continue;
        }

        try {
            IClasspathEntry[] classpathEntries = javaProject.getResolvedClasspath(true);
            for (IClasspathEntry classpathEntry : classpathEntries) {
                IPath path = classpathEntry.getPath();
                if (jarFile.equals(path.toFile())) {
                    return javaProject.getPackageFragmentRoot(path.toOSString());
                }
            }

        } catch (JavaModelException e) {
            GWTPluginLog.logWarning(e, "Could not check " + project.getName() + " for JAR file");
            continue;
        }
    }

    return null;
}

From source file:com.ibm.xsp.extlib.designer.relational.utils.ProjectUtils.java

License:Open Source License

public static void writeJavaFile(final IProject project, final String folder, final String packageName,
        final String name, final String content) throws Exception {
    try {//from w w  w.  j  a va  2 s .c om
        IJavaProject javaProject = JavaCore.create(project);
        IFolder sourceFolder = project.getFolder(folder);
        IPackageFragment pack = javaProject.getPackageFragmentRoot(sourceFolder)
                .createPackageFragment(packageName, true, null);
        pack.createCompilationUnit(name, content, true, null);
    } catch (Exception e) {
        String msg = StringUtil.format("Could not create the Java file \"{0}\"", name); // $NLX-ProjectUtils.CouldnotcreatetheJavafile0-1$
        throw new Exception(msg, e);
    }
}

From source file:com.ifedorenko.m2e.sourcelookup.internal.JavaProjectSources.java

License:Open Source License

static ISourceContainer getProjectSourceContainer(IJavaProject javaProject) {
    List<ISourceContainer> containers = new ArrayList<ISourceContainer>();

    boolean hasSources = false;

    try {/*  ww  w  . j av a2s  .  c  o  m*/
        for (IClasspathEntry cpe : javaProject.getRawClasspath()) {
            switch (cpe.getEntryKind()) {
            case IClasspathEntry.CPE_SOURCE:
                hasSources = true;
                break;
            case IClasspathEntry.CPE_LIBRARY:
                IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
                IResource lib = workspaceRoot.findMember(cpe.getPath());
                IPackageFragmentRoot fragmentRoot;
                if (lib != null) {
                    fragmentRoot = javaProject.getPackageFragmentRoot(lib);
                } else {
                    fragmentRoot = javaProject.getPackageFragmentRoot(cpe.getPath().toOSString());
                }
                containers.add(new PackageFragmentRootSourceContainer(fragmentRoot));
                break;
            }
        }
    } catch (JavaModelException e) {
        // ignore... maybe log
    }

    if (hasSources) {
        containers.add(0, new JavaProjectSourceContainer(javaProject));
    }

    if (containers.isEmpty()) {
        return null;
    }

    if (containers.size() == 1) {
        return containers.get(0);
    }

    return new CompositeSourceContainer(containers);
}

From source file:com.iw.plugins.spindle.ui.wizards.fields.ContainerDialogField.java

License:Mozilla Public License

public void init(IJavaElement elem, IRunnableContext context) {
    super.init(context);

    setButtonLabel(UIPlugin.getString(fName + ".button"));

    IPackageFragmentRoot initRoot = null;
    if (elem != null) {
        initRoot = CoreUtils.getPackageFragmentRoot(elem);
        if (initRoot == null) {
            IJavaProject jproject = elem.getJavaProject();
            try {
                initRoot = null;/* w w  w  . j  ava2  s .c om*/
                IPackageFragmentRoot[] roots = jproject.getPackageFragmentRoots();
                for (int i = 0; i < roots.length; i++) {
                    if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) {
                        initRoot = roots[i];
                        break;
                    }
                }
            } catch (JavaModelException e) {
                UIPlugin.log(e);
            }
            if (initRoot == null) {
                initRoot = jproject.getPackageFragmentRoot("");
            }
        }
        setPackageFragmentRoot(initRoot, true);
    }
}

From source file:com.iw.plugins.spindle.ui.wizards.fields.ContainerDialogField.java

License:Mozilla Public License

private IPackageFragmentRoot chooseSourceContainer(IJavaElement initElement) {
    final IJavaProject thisProject = initElement.getJavaProject();
    Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    ISelectionStatusValidator validator = new TypeSelectionValidator(acceptedClasses, false) {
        public boolean isSelectedValid(Object element) {
            try {
                boolean accepted = false;
                if (fThisProjectOnly) {
                    accepted = element instanceof IJavaProject && thisProject.equals((IJavaProject) element);
                } else {
                    accepted = element instanceof IJavaProject;
                }//from   w  ww. ja  v  a  2  s  .  c om
                if (accepted) {

                    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);
                }
                return true;
            } catch (JavaModelException e) {
                UIPlugin.log(e); // just log, no ui in validation
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypeFilter(acceptedClasses) {
        public boolean select(Viewer viewer, Object parent, Object element) {

            if (fThisProjectOnly && thisProject == null)
                return false;

            if (element instanceof IJavaProject) {

                return thisProject.equals((IJavaProject) element);

            }
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    UIPlugin.log(e);
                    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.setSorter(new JavaElementSorter());
    dialog.setTitle(UIPlugin.getString(fName + ".ChooseSourceContainerDialog.title"));
    dialog.setMessage(UIPlugin.getString(fName + ".ChooseSourceContainerDialog.description"));
    dialog.addFilter(filter);
    dialog.setInput(JavaCore.create(fWorkspaceRoot));
    dialog.setInitialSelection(initElement);

    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;

}