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.jdt.internal.core.JavaModelManager.java

License:Open Source License

/**
 * Creates and returns a handle for the given JAR file, its project being the given project.
 * The Java model associated with the JAR's project may be
 * created as a side effect.//from  w w  w  . j  ava2s . co  m
 * Returns <code>null</code> if unable to create a JAR package fragment root.
 * (for example, if the JAR file represents a non-Java resource)
 */
public static IPackageFragmentRoot createJarPackageFragmentRootFrom(IFile file, IJavaProject project) {
    if (file == null) {
        return null;
    }
    if (project == null) {
        project = JavaCore.create(file.getProject());
    }

    // Create a jar package fragment root only if on the classpath
    IPath resourcePath = file.getFullPath();
    try {
        IClasspathEntry entry = ((JavaProject) project).getClasspathEntryFor(resourcePath);
        if (entry != null) {
            return project.getPackageFragmentRoot(file);
        }
    } catch (JavaModelException e) {
        // project doesn't exist: return null
    }
    return null;
}

From source file:org.eclipse.jdt.internal.core.JavaModelManager.java

License:Open Source License

/**
 * Returns the package fragment root represented by the resource, or
 * the package fragment the given resource is located in, or <code>null</code>
 * if the given resource is not on the classpath of the given project.
 *//*ww  w .  j a  va  2  s  .  c o  m*/
public static IJavaElement determineIfOnClasspath(IResource resource, IJavaProject project) {
    IPath resourcePath = resource.getFullPath();
    boolean isExternal = ExternalFoldersManager.isInternalPathForExternalFolder(resourcePath);
    if (isExternal)
        resourcePath = resource.getLocation();

    try {
        JavaProjectElementInfo projectInfo = (JavaProjectElementInfo) getJavaModelManager().getInfo(project);
        ProjectCache projectCache = projectInfo == null ? null : projectInfo.projectCache;
        HashtableOfArrayToObject allPkgFragmentsCache = projectCache == null ? null
                : projectCache.allPkgFragmentsCache;
        boolean isJavaLike = org.eclipse.jdt.internal.core.util.Util
                .isJavaLikeFileName(resourcePath.lastSegment());
        IClasspathEntry[] entries = isJavaLike ? project.getRawClasspath() // JAVA file can only live inside SRC folder (on the raw path)
                : ((JavaProject) project).getResolvedClasspath();

        int length = entries.length;
        if (length > 0) {
            String sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true);
            String complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
            for (int i = 0; i < length; i++) {
                IClasspathEntry entry = entries[i];
                if (entry.getEntryKind() == IClasspathEntry.CPE_PROJECT)
                    continue;
                IPath rootPath = entry.getPath();
                if (rootPath.equals(resourcePath)) {
                    if (isJavaLike)
                        return null;
                    return project.getPackageFragmentRoot(resource);
                } else if (rootPath.isPrefixOf(resourcePath)) {
                    // allow creation of package fragment if it contains a .java file that is included
                    if (!Util.isExcluded(resource, ((ClasspathEntry) entry).fullInclusionPatternChars(),
                            ((ClasspathEntry) entry).fullExclusionPatternChars())) {
                        // given we have a resource child of the root, it cannot be a JAR pkg root
                        PackageFragmentRoot root = isExternal
                                ? new ExternalPackageFragmentRoot(rootPath, (JavaProject) project)
                                : (PackageFragmentRoot) ((JavaProject) project)
                                        .getFolderPackageFragmentRoot(rootPath);
                        if (root == null)
                            return null;
                        IPath pkgPath = resourcePath.removeFirstSegments(rootPath.segmentCount());

                        if (resource.getType() == IResource.FILE) {
                            // if the resource is a file, then remove the last segment which
                            // is the file name in the package
                            pkgPath = pkgPath.removeLastSegments(1);
                        }
                        String[] pkgName = pkgPath.segments();

                        // if package name is in the cache, then it has already been validated
                        // (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=133141)
                        if (allPkgFragmentsCache != null && allPkgFragmentsCache.containsKey(pkgName))
                            return root.getPackageFragment(pkgName);

                        if (pkgName.length != 0 && JavaConventions
                                .validatePackageName(Util.packageName(pkgPath, sourceLevel, complianceLevel),
                                        sourceLevel, complianceLevel)
                                .getSeverity() == IStatus.ERROR) {
                            return null;
                        }
                        return root.getPackageFragment(pkgName);
                    }
                }
            }
        }
    } catch (JavaModelException npe) {
        return null;
    }
    return null;
}

From source file:org.eclipse.jpt.jaxb.ui.internal.wizards.classesgen.ClassesGeneratorWizardPage.java

License:Open Source License

/** 
 * Override to allow selection of source folder in current project only
 * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer()
 * Only 1 line in this code is different from the parent
 *///from   w  w w  . j  ava 2  s  .  co  m
@Override
protected IPackageFragmentRoot chooseContainer() {
    Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        @Override
        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) {
                JptJaxbUiPlugin.instance().logError(e); // just log, no UI in validation
            }
            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) {
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    JptJaxbUiPlugin.instance().logError(e); // 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(JptJaxbUiMessages.CLASSES_GENERATOR_WIZARD_PAGE_SOURCE_FOLDER_SELECTION_DIALOG_TITLE);
    dialog.setMessage(JptJaxbUiMessages.CLASSES_GENERATOR_WIZARD_PAGE_CHOOSE_SOURCE_FOLDER_DIALOG_DESC);
    dialog.addFilter(filter);
    //set the java project as the input instead of the workspace like the NewContainerWizardPage was doing
    //******************************************************//
    dialog.setInput(this.getJavaProject()); //
    //******************************************************//
    dialog.setInitialSelection(getPackageFragmentRoot());
    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:org.eclipse.jpt.jpa.ui.internal.wizards.entity.data.model.EntityDataModelProvider.java

License:Open Source License

@Override
protected IPackageFragmentRoot getJavaPackageFragmentRoot() {
    JpaProject jpaProject = getTargetJpaProject();
    if (jpaProject != null) {
        IJavaProject javaProject = jpaProject.getJavaProject();
        // Return the source folder for the java project of the selected project
        if (javaProject != null) {
            IContainer sourceContainer = getJavaSourceContainer();
            if (sourceContainer != null) {
                return javaProject.getPackageFragmentRoot(sourceContainer);
            }// www  .  ja  v a2s .  com
        }
    }
    return null;
}

From source file:org.eclipse.jpt.jpa.ui.internal.wizards.gen.DefaultTableGenerationWizardPage.java

License:Open Source License

/** Override to allow select source folder in current project only
 * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer()
 */// w ww.  ja  v  a  2s  . co  m
@Override
protected IPackageFragmentRoot chooseContainer() {
    Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        @Override
        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 PackageFragmentRootTools.isSourceFolder((IPackageFragmentRoot) element);
                }
                return true;
            } catch (JavaModelException e) {
                JptJpaUiPlugin.instance().logError(e); // just log, no UI in validation
            }
            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) {
            if (element instanceof IPackageFragmentRoot) {
                return PackageFragmentRootTools.isSourceFolder((IPackageFragmentRoot) element);
            }
            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(jpaProject.getJavaProject());
    dialog.setInitialSelection(getPackageFragmentRoot());
    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:org.eclipse.jst.j2ee.application.internal.operations.CreateProjectWithLinkedJarOperation.java

License:Open Source License

@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
    MultiStatus status = new MultiStatus(J2EEPlugin.PLUGIN_ID, 0, NLS.bind(
            EARCreationResourceHandler.CreateProjectWithLinkedJarOperation_Creating_project_with_linked_archiv_,
            getUtilityJar().getName()), null);

    try {//from  w w w  .  j  a v a2 s.com
        IProject project = getWorkspaceRoot().getProject(getUtilityJarProjectName(getUtilityJar()));

        IDataModel createUtilityProject = DataModelFactory
                .createDataModel(new UtilityProjectCreationDataModelProvider());
        createUtilityProject.setProperty(IFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME,
                getUtilityJarProjectName(getUtilityJar()));

        if (projectRoot != null && projectRoot.length() > 0) {
            createUtilityProject.setBooleanProperty(IProjectCreationPropertiesNew.USE_DEFAULT_LOCATION, false);
            createUtilityProject.setProperty(IProjectCreationPropertiesNew.USER_DEFINED_LOCATION, projectRoot);
        }

        createUtilityProject.setProperty(IJ2EEFacetProjectCreationDataModelProperties.ADD_TO_EAR, true);
        createUtilityProject.setProperty(IJ2EEFacetProjectCreationDataModelProperties.EAR_PROJECT_NAME,
                getAssociatedEARProjectName());

        status.add(createUtilityProject.getDefaultOperation().execute(monitor, info));

        IProject utilityJarProject = getWorkspaceRoot().getProject(getUtilityJarProjectName(getUtilityJar()));

        /* Remove the default src folder */
        IJavaProject utilityJarJavaProject = JavaCore.create(utilityJarProject);
        IPackageFragmentRoot srcFolder = utilityJarJavaProject
                .getPackageFragmentRoot(utilityJarProject.getFolder("src")); //$NON-NLS-1$
        if (srcFolder.exists()) {
            srcFolder.delete(IResource.FORCE, IPackageFragmentRoot.ORIGINATING_PROJECT_CLASSPATH, monitor);
        }
        status.add(createLinkedArchive(project, getUtilityJar().getName(), getUtilityJar(), linkedPathVariable,
                monitor));

        /* Remove the /src mapping */
        IVirtualComponent utilComponent = ComponentCore.createComponent(project);
        status.add(removeRootMapping(utilComponent, "/src", monitor)); //$NON-NLS-1$

    } catch (Exception e) {
        status.add(J2EEPlugin.createErrorStatus(0,
                EARCreationResourceHandler.J2EEUtilityJarListImportOperation_UI_2, e));
    }
    return status;
}

From source file:org.eclipse.jst.j2ee.internal.common.operations.NewJavaClassDataModelProvider.java

License:Open Source License

/**
 * Subclasses may extend this method to perform their own retrieval mechanism. This
 * implementation simply returns the JDT package fragment root for the selected source folder.
 * This method may return null.//from w w  w  .  j  av  a  2  s .c o m
 * 
 * @see IJavaProject#getPackageFragmentRoot(org.eclipse.core.resources.IResource)
 * 
 * @return IPackageFragmentRoot
 */
protected IPackageFragmentRoot getJavaPackageFragmentRoot() {
    IProject project = getTargetProject();
    if (project != null) {
        IJavaProject aJavaProject = JemProjectUtilities.getJavaProject(project);
        // Return the source folder for the java project of the selected project
        if (aJavaProject != null) {
            IFolder sourcefolder = (IFolder) getProperty(JAVA_SOURCE_FOLDER);
            if (sourcefolder != null)
                return aJavaProject.getPackageFragmentRoot(sourcefolder);
        }
    }
    return null;
}

From source file:org.eclipse.jst.jsf.common.ui.internal.dialogfield.SourceFolderButtonDialogField.java

License:Open Source License

/**
 * choose source container dialog// w  w w . j  a va 2  s  . c  om
 * 
 * @param initElement
 * @return
 */
private IPackageFragmentRoot chooseSourceContainer(IJavaElement initElement) {
    Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class, };

    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        // TODO: never used
        //         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) {
        //               _log.error("JavaModelException"); // 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) {
                    _log.error(e); // 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());
    // HibernateWizardPage.ChooseSourceContainerDialog.Title = Folder
    // Selection
    dialog.setTitle(DialogFieldResources.getInstance()
            .getString("SourceFolderButtonDialogField.ChooseSourceContainerDialog.Title")); //$NON-NLS-1$
    // HibernateWizardPage.ChooseSourceContainerDialog.Description = Choose
    // a folder:
    dialog.setMessage(DialogFieldResources.getInstance()
            .getString("SourceFolderButtonDialogField.ChooseSourceContainerDialog.Description")); //$NON-NLS-1$
    dialog.addFilter(filter);
    if (_project != null) {
        dialog.setInput(JavaCore.create(_project));
    } else {
        dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
    }
    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;
}

From source file:org.eclipse.jst.jsf.common.ui.internal.dialogfield.SourceFolderButtonDialogField.java

License:Open Source License

/**
 * This method updates the model and returns an error status. The underlying
 * model is only valid if the returned status is OK.
 * // w  ww .  j a va2s .  co  m
 * @return the model's error status
 */
public IStatus getChangedStatus() {
    StatusInfo status = new StatusInfo();

    _fCurrRoot = null;
    String str = getPackageFragmentRootText();
    if (str.length() == 0) {
        // SourceFolderButtonDialogField.error.EnterContainerName = Folder
        // name is empty.
        status.setError(DialogFieldResources.getInstance()
                .getString("SourceFolderButtonDialogField.error.EnterContainerName")); //$NON-NLS-1$
        return status;
    }
    IPath path = new Path(str);
    IResource res = ResourcesPlugin.getWorkspace().getRoot().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(DialogFieldResources.getInstance().getString(
                        "SourceFolderButtonDialogField.error.ProjectClosed", proj.getFullPath().toString())); //$NON-NLS-1$
                return status;
            }
            if (_project != null && proj != _project) {
                // HibernateWizardPage.error.NotSameProject = The project
                // should be \''{0}\''.
                status.setError(DialogFieldResources.getInstance()
                        .getString("SourceFolderButtonDialogField.error.NotSameProject", _project.getName())); //$NON-NLS-1$
                return status;
            }
            IJavaProject jproject = JavaCore.create(proj);
            _fCurrRoot = jproject.getPackageFragmentRoot(res);
            if (res.exists()) {
                try {
                    if (!proj.hasNature(JavaCore.NATURE_ID)) {
                        if (resType == IResource.PROJECT) {
                            status.setError(DialogFieldResources.getInstance().getString(
                                    "SourceFolderButtonDialogField.warning.NotAJavaProject", proj.getName())); //$NON-NLS-1$
                        } else {
                            status.setWarning(DialogFieldResources.getInstance().getString(
                                    "SourceFolderButtonDialogField.warning.NotInAJavaProject", proj.getName())); //$NON-NLS-1$
                        }
                        return status;
                    }
                } catch (CoreException e) {
                    status.setWarning(DialogFieldResources.getInstance().getString(
                            "SourceFolderButtonDialogField.warning.NotAJavaProject", proj.getName())); //$NON-NLS-1$
                }
                if (!jproject.isOnClasspath(_fCurrRoot)) {
                    status.setWarning(DialogFieldResources.getInstance()
                            .getString("SourceFolderButtonDialogField.warning.NotOnClassPath", str)); //$NON-NLS-1$
                }
                if (_fCurrRoot.isArchive()) {
                    status.setError(DialogFieldResources.getInstance()
                            .getString("SourceFolderButtonDialogField.error.ContainerIsBinary", str)); //$NON-NLS-1$
                    return status;
                }
            }
            return status;
        }
        status.setError(DialogFieldResources.getInstance()
                .getString("SourceFolderButtonDialogField.error.NotAFolder", str)); //$NON-NLS-1$
        return status;
    }
    status.setError(DialogFieldResources.getInstance()
            .getString("SourceFolderButtonDialogField.error.ContainerDoesNotExist", str)); //$NON-NLS-1$
    return status;
}

From source file:org.eclipse.jst.jsp.ui.tests.contentassist.BeanInfoProviderTest.java

License:Open Source License

private void openPath(IJavaProject javaProj) {
    try {//  w  ww  .j  av a2 s  . c  o  m
        if (javaProj.exists() && !javaProj.isOpen()) {
            javaProj.open(null);
        }
        IPackageFragmentRoot root = javaProj.getPackageFragmentRoot(fResource.getProject());
        if (!root.isOpen())
            root.open(null);
        IPackageFragment frag = getPackageFragment(root, "BEAN_TESTS");
        openAll(frag);
        frag = getPackageFragment(root, "org");
        if (frag != null && !frag.isOpen())
            openAll(frag);
        frag = getPackageFragment(root, "org.eclipse");
        if (frag != null && !frag.isOpen())
            openAll(frag);
        frag = getPackageFragment(root, "org.eclipse.jst");
        if (frag != null && !frag.isOpen())
            openAll(frag);
        frag = getPackageFragment(root, "org.eclipse.jst.jsp");
        if (frag != null && !frag.isOpen())
            openAll(frag);
        frag = getPackageFragment(root, "org.eclipse.jst.jsp.ui");
        if (frag != null && !frag.isOpen())
            openAll(frag);
        frag = getPackageFragment(root, "org.eclipse.jst.jsp.ui.tests");
        if (frag != null && !frag.isOpen())
            openAll(frag);
    } catch (JavaModelException e) {
        e.printStackTrace();
    }
}