private static IClasspathEntry determineClassPathEntry(Object element) { if (element instanceof IJavaElement) { IPackageFragmentRoot packageFragmentRoot= (IPackageFragmentRoot) ((IJavaElement) element).getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (packageFragmentRoot != null) { try { return packageFragmentRoot.getResolvedClasspathEntry(); } catch (JavaModelException e) { return null; } } } return null; }
private static IClasspathEntry determineClassPathEntry(Object element) { if (element instanceof IJavaElement) { IPackageFragmentRoot packageFragmentRoot= (IPackageFragmentRoot) ((IJavaElement) element).getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (packageFragmentRoot != null) { try { return packageFragmentRoot.getResolvedClasspathEntry(); } catch (JavaModelException e) { return null; } } } return null; } private void decorateClassPathEntry(IClasspathEntry classpathEntry, IDecoration decoration) {
private static IClasspathEntry determineClassPathEntry(Object element) { if (element instanceof IJavaElement) { IPackageFragmentRoot packageFragmentRoot= (IPackageFragmentRoot) ((IJavaElement) element).getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (packageFragmentRoot != null) { try { return packageFragmentRoot.getResolvedClasspathEntry(); } catch (JavaModelException e) { return null; } } } return null; }
protected static IClasspathEntry determineClassPathEntry(JavaElementMatch match) { final Object element= match.getElement(); if (element instanceof IJavaElement) { IPackageFragmentRoot packageFragmentRoot= (IPackageFragmentRoot) ((IJavaElement) element).getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (packageFragmentRoot != null) { try { return packageFragmentRoot.getResolvedClasspathEntry(); } catch (JavaModelException e) { return null; } } } return null; } }
@Override protected Object[] getPackageFragmentRoots(final IJavaProject project) throws JavaModelException { final Set<IPackageFragmentRoot> set= new HashSet<>(); final IPackageFragmentRoot[] roots= project.getPackageFragmentRoots(); for (int offset= 0; offset < roots.length; offset++) { IPackageFragmentRoot root= roots[offset]; IClasspathEntry entry= root.getRawClasspathEntry(); if (JarImportWizard.isValidClassPathEntry(entry) && root.getResolvedClasspathEntry().getReferencingEntry() == null) set.add(root); } return set.toArray(); }
@Override protected Object[] getPackageFragmentRoots(final IJavaProject project) throws JavaModelException { final Set<IPackageFragmentRoot> set= new HashSet<>(); final IPackageFragmentRoot[] roots= project.getPackageFragmentRoots(); for (int offset= 0; offset < roots.length; offset++) { IPackageFragmentRoot root= roots[offset]; IClasspathEntry entry= root.getRawClasspathEntry(); if (JarImportWizard.isValidClassPathEntry(entry) && root.getResolvedClasspathEntry().getReferencingEntry() == null) set.add(root); } return set.toArray(); }
/** * @param root the package fragment root * @return array of projects that have the specified root on their classpath * @throws JavaModelException if getting the raw classpath or all Java projects fails */ public static IJavaProject[] getReferencingProjects(IPackageFragmentRoot root) throws JavaModelException { IClasspathEntry cpe= root.getRawClasspathEntry(); if (cpe.getEntryKind() == IClasspathEntry.CPE_LIBRARY) { cpe= root.getResolvedClasspathEntry(); } IJavaProject[] allJavaProjects= JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects(); List<IJavaProject> result= new ArrayList<>(allJavaProjects.length); for (int i= 0; i < allJavaProjects.length; i++) { IJavaProject project= allJavaProjects[i]; IPackageFragmentRoot[] roots= project.findPackageFragmentRoots(cpe); if (roots.length > 0) { result.add(project); } } return result.toArray(new IJavaProject[result.size()]); }
/** * @param root the package fragment root * @return array of projects that have the specified root on their classpath * @throws JavaModelException if getting the raw classpath or all Java projects fails */ public static IJavaProject[] getReferencingProjects(IPackageFragmentRoot root) throws JavaModelException { IClasspathEntry cpe= root.getRawClasspathEntry(); if (cpe.getEntryKind() == IClasspathEntry.CPE_LIBRARY) cpe= root.getResolvedClasspathEntry(); IJavaProject[] allJavaProjects= JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects(); List<IJavaProject> result= new ArrayList<>(allJavaProjects.length); for (int i= 0; i < allJavaProjects.length; i++) { IJavaProject project= allJavaProjects[i]; IPackageFragmentRoot[] roots= project.findPackageFragmentRoots(cpe); if (roots.length > 0) result.add(project); } return result.toArray(new IJavaProject[result.size()]); }
/** * @param root the package fragment root * @return array of projects that have the specified root on their classpath * @throws JavaModelException if getting the raw classpath or all Java projects fails */ public static IJavaProject[] getReferencingProjects(IPackageFragmentRoot root) throws JavaModelException { IClasspathEntry cpe= root.getRawClasspathEntry(); if (cpe.getEntryKind() == IClasspathEntry.CPE_LIBRARY) cpe= root.getResolvedClasspathEntry(); IJavaProject[] allJavaProjects= JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects(); List<IJavaProject> result= new ArrayList<>(allJavaProjects.length); for (int i= 0; i < allJavaProjects.length; i++) { IJavaProject project= allJavaProjects[i]; IPackageFragmentRoot[] roots= project.findPackageFragmentRoots(cpe); if (roots.length > 0) result.add(project); } return result.toArray(new IJavaProject[result.size()]); }
private static boolean isOnModulePath(IJavaProject javaProject, String typeToCheck) { try { IType type= javaProject.findType(typeToCheck); if (type == null) return false; IPackageFragmentRoot packageFragmentRoot= (IPackageFragmentRoot) type.getPackageFragment().getParent(); IClasspathEntry resolvedClasspathEntry= packageFragmentRoot.getResolvedClasspathEntry(); return Arrays.stream(resolvedClasspathEntry.getExtraAttributes()) .anyMatch(p -> p.getName().equals(IClasspathAttribute.MODULE) && p.getValue().equals("true")); //$NON-NLS-1$ } catch (JavaModelException e) { // if anything goes wrong, assume true (in the worst case, user get a warning because of a redundant add-opens) return true; } }
/** * Compute the fragment roots for each test source folders. * * @param project the java project. * @return the fragment roots for each test source folders. */ public static IPackageFragmentRoot[] getTestPackageFragmentRoots(IJavaProject project) { try { IPackageFragmentRoot[] packageFragmentRoot = project.getPackageFragmentRoots(); List<IPackageFragmentRoot> sources = new ArrayList<>(); for (int i = 0; i < packageFragmentRoot.length; i++) { if (packageFragmentRoot[i].getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT && packageFragmentRoot[i].getKind() == IPackageFragmentRoot.K_SOURCE) { IClasspathEntry cpe = packageFragmentRoot[i].getResolvedClasspathEntry(); if (isTest(cpe)) { sources.add(packageFragmentRoot[i]); } } } return sources.toArray(new IPackageFragmentRoot[0]); } catch (JavaModelException e) { // ignore return new IPackageFragmentRoot[0]; } }
static boolean hasAnnotationPathInWorkspace(IJavaProject javaProject, ICompilationUnit cu) { IPackageFragmentRoot root= (IPackageFragmentRoot) cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (root != null) { try { IClasspathEntry resolvedClasspathEntry= root.getResolvedClasspathEntry(); for (IClasspathAttribute cpa : resolvedClasspathEntry.getExtraAttributes()) { if (IClasspathAttribute.EXTERNAL_ANNOTATION_PATH.equals(cpa.getName())) { Path annotationPath= new Path(cpa.getValue()); IProject project= javaProject.getProject(); if (project.exists(annotationPath)) return true; IWorkspaceRoot wsRoot= project.getWorkspace().getRoot(); return wsRoot.exists(annotationPath); } } } catch (JavaModelException jme) { return false; } } return false; }
static boolean hasAnnotationPathInWorkspace(IJavaProject javaProject, ICompilationUnit cu) { IPackageFragmentRoot root= (IPackageFragmentRoot) cu.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (root != null) { try { IClasspathEntry resolvedClasspathEntry= root.getResolvedClasspathEntry(); for (IClasspathAttribute cpa : resolvedClasspathEntry.getExtraAttributes()) { if (IClasspathAttribute.EXTERNAL_ANNOTATION_PATH.equals(cpa.getName())) { Path annotationPath= new Path(cpa.getValue()); IProject project= javaProject.getProject(); if (project.exists(annotationPath)) return true; IWorkspaceRoot wsRoot= project.getWorkspace().getRoot(); return wsRoot.exists(annotationPath); } } } catch (JavaModelException jme) { return false; } } return false; }
@Override public void init(final IWorkbench workbench, final IStructuredSelection selection) { if (selection != null && selection.size() == 1) { final Object element= selection.getFirstElement(); if (element instanceof IPackageFragmentRoot) { final IPackageFragmentRoot root= (IPackageFragmentRoot) element; try { final IClasspathEntry entry= root.getRawClasspathEntry(); if (isValidClassPathEntry(entry) && root.getResolvedClasspathEntry().getReferencingEntry() == null) fImportData.setPackageFragmentRoot(root); } catch (JavaModelException exception) { JavaPlugin.log(exception); } } } }
@Override public void init(final IWorkbench workbench, final IStructuredSelection selection) { if (selection != null && selection.size() == 1) { final Object element= selection.getFirstElement(); if (element instanceof IPackageFragmentRoot) { final IPackageFragmentRoot root= (IPackageFragmentRoot) element; try { final IClasspathEntry entry= root.getRawClasspathEntry(); if (isValidClassPathEntry(entry) && root.getResolvedClasspathEntry().getReferencingEntry() == null) fImportData.setPackageFragmentRoot(root); } catch (JavaModelException exception) { JavaPlugin.log(exception); } } } }
protected URL getJavadocBaseLocation() throws JavaModelException { IPackageFragmentRoot root= (IPackageFragmentRoot) getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (root == null) { return null; } if (root.getKind() == IPackageFragmentRoot.K_BINARY) { IClasspathEntry entry= null; try { entry= root.getResolvedClasspathEntry(); URL url = getLibraryJavadocLocation(entry); if (url != null) { return url; } } catch(JavaModelException jme) { // Proceed with raw classpath } entry= root.getRawClasspathEntry(); switch (entry.getEntryKind()) { case IClasspathEntry.CPE_LIBRARY: case IClasspathEntry.CPE_VARIABLE: return getLibraryJavadocLocation(entry); default: return null; } } return null; }
@Override public void selectionChanged(final IAction action, final ISelection selection) { fSelection= null; if (selection instanceof IStructuredSelection) { final IStructuredSelection structured= (IStructuredSelection) selection; if (structured.size() == 1) { final Object element= structured.getFirstElement(); if (element instanceof IPackageFragmentRoot) { final IPackageFragmentRoot root= (IPackageFragmentRoot) element; try { final IClasspathEntry entry= root.getRawClasspathEntry(); if (JarImportWizard.isValidClassPathEntry(entry) && JarImportWizard.isValidJavaProject(root.getJavaProject()) && root.getResolvedClasspathEntry().getReferencingEntry() == null) { fSelection= structured; } } catch (JavaModelException exception) { JavaPlugin.log(exception); } } } } action.setEnabled(fSelection != null); }
@Override public void selectionChanged(final IAction action, final ISelection selection) { fSelection= null; if (selection instanceof IStructuredSelection) { final IStructuredSelection structured= (IStructuredSelection) selection; if (structured.size() == 1) { final Object element= structured.getFirstElement(); if (element instanceof IPackageFragmentRoot) { final IPackageFragmentRoot root= (IPackageFragmentRoot) element; try { final IClasspathEntry entry= root.getRawClasspathEntry(); if (JarImportWizard.isValidClassPathEntry(entry) && JarImportWizard.isValidJavaProject(root.getJavaProject()) && root.getResolvedClasspathEntry().getReferencingEntry() == null) { fSelection= structured; } } catch (JavaModelException exception) { JavaPlugin.log(exception); } } } } action.setEnabled(fSelection != null); }
public static URL getJavadocBaseLocation(IJavaElement element) throws JavaModelException { if (element.getElementType() == IJavaElement.JAVA_PROJECT) { return getProjectJavadocLocation((IJavaProject) element); } IPackageFragmentRoot root = JavaModelUtil.getPackageFragmentRoot(element); if (root == null) { return null; } if (root.getKind() == IPackageFragmentRoot.K_BINARY) { IClasspathEntry entry = root.getResolvedClasspathEntry(); URL javadocLocation = getLibraryJavadocLocation(entry); if (javadocLocation != null) { return getLibraryJavadocLocation(entry); } entry = root.getRawClasspathEntry(); switch (entry.getEntryKind()) { case IClasspathEntry.CPE_LIBRARY: case IClasspathEntry.CPE_VARIABLE: return getLibraryJavadocLocation(entry); default: return null; } } else { return getProjectJavadocLocation(root.getJavaProject()); } }
public static URL getJavadocBaseLocation(IJavaElement element) throws JavaModelException { if (element.getElementType() == IJavaElement.JAVA_PROJECT) { return getProjectJavadocLocation((IJavaProject) element); } IPackageFragmentRoot root= JavaModelUtil.getPackageFragmentRoot(element); if (root == null) { return null; } if (root.getKind() == IPackageFragmentRoot.K_BINARY) { IClasspathEntry entry= root.getResolvedClasspathEntry(); URL javadocLocation= getLibraryJavadocLocation(entry); if (javadocLocation != null) { return getLibraryJavadocLocation(entry); } entry= root.getRawClasspathEntry(); switch (entry.getEntryKind()) { case IClasspathEntry.CPE_LIBRARY: case IClasspathEntry.CPE_VARIABLE: return getLibraryJavadocLocation(entry); default: return null; } } else { return getProjectJavadocLocation(root.getJavaProject()); } }