List of usage examples for org.eclipse.jdt.core IPackageFragment getAncestor
IJavaElement getAncestor(int ancestorType);
From source file:at.bestsolution.fxide.jdt.text.javadoc.JavadocContentAccess2.java
License:Open Source License
/** * Returns the Javadoc for a package which could be present in package.html, package-info.java * or from an attached Javadoc.// w ww. j a va 2s . c o m * * @param packageFragment the package which is requesting for the document * @return the document content in HTML format or <code>null</code> if there is no associated * Javadoc * @throws CoreException if the Java element does not exists or an exception occurs while * accessing the file containing the package Javadoc * @since 3.9 */ public static String getHTMLContent(IPackageFragment packageFragment) throws CoreException { IPackageFragmentRoot root = (IPackageFragmentRoot) packageFragment .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); //1==> Handle the case when the documentation is present in package-info.java or package-info.class file ITypeRoot packageInfo; boolean isBinary = root.getKind() == IPackageFragmentRoot.K_BINARY; if (isBinary) { packageInfo = packageFragment.getClassFile(JavaModelUtil.PACKAGE_INFO_CLASS); } else { packageInfo = packageFragment.getCompilationUnit(JavaModelUtil.PACKAGE_INFO_JAVA); } if (packageInfo != null && packageInfo.exists()) { String cuSource = packageInfo.getSource(); //the source can be null for some of the class files if (cuSource != null) { Javadoc packageJavadocNode = getPackageJavadocNode(packageFragment, cuSource); if (packageJavadocNode != null) { IJavaElement element; if (isBinary) { element = ((IClassFile) packageInfo).getType(); } else { element = packageInfo.getParent(); // parent is the IPackageFragment } return new JavadocContentAccess2(element, packageJavadocNode, cuSource).toHTML(); } } } // 2==> Handle the case when the documentation is done in package.html file. The file can be either in normal source folder or coming from a jar file else { Object[] nonJavaResources = packageFragment.getNonJavaResources(); // 2.1 ==>If the package.html file is present in the source or directly in the binary jar for (Object nonJavaResource : nonJavaResources) { if (nonJavaResource instanceof IFile) { IFile iFile = (IFile) nonJavaResource; if (iFile.exists() && JavaModelUtil.PACKAGE_HTML.equals(iFile.getName())) { return getIFileContent(iFile); } } } // 2.2==>The file is present in a binary container if (isBinary) { for (Object nonJavaResource : nonJavaResources) { // The content is from an external binary class folder if (nonJavaResource instanceof IJarEntryResource) { IJarEntryResource jarEntryResource = (IJarEntryResource) nonJavaResource; String encoding = getSourceAttachmentEncoding(root); if (JavaModelUtil.PACKAGE_HTML.equals(jarEntryResource.getName()) && jarEntryResource.isFile()) { return getHTMLContent(jarEntryResource, encoding); } } } //2.3 ==>The file is present in the source attachment path. String contents = getHTMLContentFromAttachedSource(root, packageFragment); if (contents != null) return contents; } } //3==> Handle the case when the documentation is coming from the attached Javadoc if ((root.isArchive() || root.isExternal())) { return packageFragment.getAttachedJavadoc(null); } return null; }
From source file:com.codenvy.ide.ext.java.server.internal.core.ClassFile.java
License:Open Source License
public IJavaElement getElementAtConsideringSibling(int position) throws JavaModelException { IPackageFragment fragment = (IPackageFragment) getParent(); PackageFragmentRoot root = (PackageFragmentRoot) fragment.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); SourceMapper mapper = root.getSourceMapper(); if (mapper == null) { return null; } else {//ww w . j a v a2 s . co m int index = this.name.indexOf('$'); int prefixLength = index < 0 ? this.name.length() : index; IType type = null; int start = -1; int end = Integer.MAX_VALUE; IJavaElement[] children = fragment.getChildren(); for (int i = 0; i < children.length; i++) { String childName = children[i].getElementName(); int childIndex = childName.indexOf('$'); int childPrefixLength = childIndex < 0 ? childName.indexOf('.') : childIndex; if (prefixLength == childPrefixLength && this.name.regionMatches(0, childName, 0, prefixLength)) { IClassFile classFile = (IClassFile) children[i]; // ensure this class file's buffer is open so that source ranges are computed classFile.getBuffer(); SourceRange range = mapper.getSourceRange(classFile.getType()); if (range == SourceMapper.UNKNOWN_RANGE) continue; int newStart = range.getOffset(); int newEnd = newStart + range.getLength() - 1; if (newStart > start && newEnd < end && newStart <= position && newEnd >= position) { type = classFile.getType(); start = newStart; end = newEnd; } } } if (type != null) { return findElement(type, position, mapper); } return null; } }
From source file:com.codenvy.ide.ext.java.server.internal.core.search.TypeNameMatchRequestorWrapper.java
License:Open Source License
private IType createTypeFromJar(String resourcePath, int separatorIndex) throws JavaModelException { // path to a class file inside a jar // Optimization: cache package fragment root handle and package handles if (this.lastPkgFragmentRootPath == null || this.lastPkgFragmentRootPath.length() > resourcePath.length() || !resourcePath.startsWith(this.lastPkgFragmentRootPath)) { String jarPath = resourcePath.substring(0, separatorIndex); IPackageFragmentRoot root = ((AbstractJavaSearchScope) this.scope).packageFragmentRoot(resourcePath, separatorIndex, jarPath); if (root == null) return null; this.lastPkgFragmentRootPath = jarPath; this.lastPkgFragmentRoot = root; this.packageHandles = new HashtableOfArrayToObject(5); }//from w w w.j av a2 s .c o m // create handle String classFilePath = resourcePath.substring(separatorIndex + 1); String[] simpleNames = new Path(classFilePath).segments(); String[] pkgName; int length = simpleNames.length - 1; if (length > 0) { pkgName = new String[length]; System.arraycopy(simpleNames, 0, pkgName, 0, length); } else { pkgName = CharOperation.NO_STRINGS; } IPackageFragment pkgFragment = (IPackageFragment) this.packageHandles.get(pkgName); if (pkgFragment == null) { pkgFragment = ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName); // filter org.apache.commons.lang.enum package for projects above 1.5 // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264 if (length == 5 && pkgName[4].equals("enum")) { //$NON-NLS-1$ IJavaProject proj = (IJavaProject) pkgFragment.getAncestor(IJavaElement.JAVA_PROJECT); if (!proj.equals(this.lastProject)) { String complianceStr = proj.getOption(CompilerOptions.OPTION_Source, true); this.complianceValue = CompilerOptions.versionToJdkLevel(complianceStr); this.lastProject = proj; } if (this.complianceValue >= ClassFileConstants.JDK1_5) return null; } this.packageHandles.put(pkgName, pkgFragment); } return pkgFragment.getClassFile(simpleNames[length]).getType(); }
From source file:com.redhat.ceylon.eclipse.code.explorer.PackageExplorerContentProvider.java
License:Open Source License
@Override protected Object[] getPackageContent(IPackageFragment fragment) throws JavaModelException { ArrayList<Object> result = new ArrayList<Object>(); if (fIsFlatLayout) { result.addAll(Arrays.asList(super.getPackageContent(fragment))); for (Object f : fragment.getNonJavaResources()) { if (f instanceof IFile) { if (((IFile) f).getName().equals("module.ceylon")) { IPackageFragmentRoot root = (IPackageFragmentRoot) fragment .getAncestor(PACKAGE_FRAGMENT_ROOT); for (Object o : super.getPackageFragmentRootContent(root)) { if (o instanceof IPackageFragment) { if (o != fragment && fragment.getPath().isPrefixOf(((IPackageFragment) o).getPath())) { result.add(o); }//w w w . ja va2s . co m } } return result.toArray(); } } } } else { // hierarchical package mode getHierarchicalPackageChildren((IPackageFragmentRoot) fragment.getParent(), fragment, result); Object[] nonPackages = super.getPackageContent(fragment); if (result.isEmpty()) return nonPackages; for (int i = 0; i < nonPackages.length; i++) { result.add(nonPackages[i]); } } return result.toArray(); }
From source file:com.redhat.ceylon.eclipse.code.navigator.NonEssentialElementsFilter.java
License:Open Source License
/** * Tells whether the given package has unfiltered resources. * * @param viewer the viewer/*from w w w.j a v a 2 s . c om*/ * @param pkg the package * @return <code>true</code> if the package has unfiltered resources * @throws JavaModelException if this element does not exist or if an exception occurs while * accessing its corresponding resource */ protected boolean hasUnfilteredResources(Viewer viewer, IPackageFragment pkg) throws JavaModelException { Object[] resources = null; if (pkg.isDefaultPackage()) { IPackageFragmentRoot root = (IPackageFragmentRoot) pkg.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); resources = root.getNonJavaResources(); } else { resources = pkg.getNonJavaResources(); } int length = resources.length; if (length == 0) return false; if (!(viewer instanceof StructuredViewer)) return true; ViewerFilter[] filters = ((StructuredViewer) viewer).getFilters(); resourceLoop: for (int i = 0; i < length; i++) { for (int j = 0; j < filters.length; j++) { if (!filters[j].select(viewer, pkg, resources[i])) continue resourceLoop; } return true; } return false; }
From source file:com.siteview.mde.internal.ui.refactoring.ManifestPackageMoveParticipant.java
License:Open Source License
protected boolean initialize(Object element) { if (element instanceof IPackageFragment) { IPackageFragment fragment = (IPackageFragment) element; IJavaProject javaProject = (IJavaProject) fragment.getAncestor(IJavaElement.JAVA_PROJECT); IProject project = javaProject.getProject(); if (PDEProject.getManifest(project).exists()) { fProject = javaProject.getProject(); fElements = new HashMap(); fElements.put(fragment, getNewName(getArguments().getDestination(), element)); return true; }//from w w w . ja va2 s . com } return false; }
From source file:com.siteview.mde.internal.ui.refactoring.ManifestPackageRenameParticipant.java
License:Open Source License
protected boolean initialize(Object element) { try {// w ww . java 2 s .c om if (element instanceof IPackageFragment) { IPackageFragment fragment = (IPackageFragment) element; if (!fragment.containsJavaResources()) return false; IJavaProject javaProject = (IJavaProject) fragment.getAncestor(IJavaElement.JAVA_PROJECT); IProject project = javaProject.getProject(); if (WorkspaceModelManager.isPluginProject(project)) { fProject = javaProject.getProject(); fElements = new HashMap(); fElements.put(fragment, getArguments().getNewName()); return true; } } } catch (JavaModelException e) { } return false; }
From source file:edu.buffalo.cse.green.JavaModelListener.java
License:Open Source License
/** * @see edu.buffalo.cse.green.RefactorHandler#handleMove(edu.buffalo.cse.green.editor.model.RootModel, org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.IJavaElement) *//*from ww w . j a va 2 s.c o m*/ public void handleMove(RootModel root, E sourceElement, E targetElement) { root.changeProjectElement(sourceElement, targetElement); try { List<IJavaElement> packages = root.getElementsOfKind(PACKAGE_FRAGMENT); // look through packages to match up source and destination elements for (IJavaElement packElement : packages) { IPackageFragment packFrag = (IPackageFragment) packElement; if (JavaModelListener.sameElements(packFrag.getAncestor(JAVA_PROJECT), sourceElement.getPrimaryElement())) { for (IPackageFragment packFrags : targetElement.getPackageFragments()) { // check for the same name of the two packages if (packFrag.getElementName().equals(packFrags.getElementName())) { PackageRefactorHandler.instance().handleMove(root, packFrag, packFrags); } } } } root.dispose(); } catch (JavaModelException e) { e.printStackTrace(); } }
From source file:org.apache.felix.sigil.eclipse.model.util.JavaHelper.java
License:Apache License
private static void findJavaModelImports(ISigilProjectModel project, Set<String> imports, IProgressMonitor monitor) {//from ww w. ja v a 2 s . c o m try { for (IPackageFragment root : project.getJavaModel().getPackageFragments()) { if (monitor.isCanceled()) { return; } IPackageFragmentRoot rt = (IPackageFragmentRoot) root .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (isInClassPath(project, rt)) { for (ICompilationUnit cu : root.getCompilationUnits()) { scanImports(cu, imports); } for (IClassFile cf : root.getClassFiles()) { scanImports(cf, imports); } } } } catch (JavaModelException e) { SigilCore.error("Failed to parse java model", e); } }
From source file:org.apache.felix.sigil.eclipse.model.util.JavaHelper.java
License:Apache License
public static Set<String> findLocalPackageUsers(ISigilProjectModel project, String packageName, IProgressMonitor monitor) throws JavaModelException { Set<String> imports = new HashSet<String>(); Set<String> check = new HashSet<String>(); for (IPackageFragment root : project.getJavaModel().getPackageFragments()) { IPackageFragmentRoot rt = (IPackageFragmentRoot) root.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); if (isInClassPath(project, rt)) { for (ICompilationUnit cu : root.getCompilationUnits()) { IPackageFragment pack = (IPackageFragment) cu.getAncestor(IJavaModel.PACKAGE_FRAGMENT); if (!pack.getElementName().equals(packageName)) { scanImports(cu, check); if (check.contains(packageName)) { imports.add(pack.getElementName()); }/*from www . j a va 2s.c o m*/ } check.clear(); } for (IClassFile cf : root.getClassFiles()) { IPackageFragment pack = (IPackageFragment) cf.getAncestor(IJavaModel.PACKAGE_FRAGMENT); if (!pack.getElementName().equals(packageName)) { scanImports(cf, check); if (check.contains(packageName)) { imports.add(pack.getElementName()); } } check.clear(); } } } return imports; }