/** * Extracts the Javadoc for the given Java element and returns it as HTML. * * @param element the Java element to get the documentation for * @return the Javadoc for Java element or <code>null</code> if the Javadoc is not available * @throws CoreException if fetching the Javadoc for the given element failed connected */ private String extractJavadoc(IJavaElement element) throws CoreException { return JavadocContentAccess2.getHTMLContent(element, true); }
private static String getHTMLContentFromAttachedSource(IPackageFragmentRoot root, IPackageFragment packageFragment) throws CoreException { String filePath= packageFragment.getElementName().replace('.', '/') + '/' + JavaModelUtil.PACKAGE_INFO_JAVA; String contents= getFileContentFromAttachedSource(root, filePath); if (contents != null) { Javadoc packageJavadocNode= getPackageJavadocNode(packageFragment, contents); if (packageJavadocNode != null) return new JavadocContentAccess2(packageFragment, packageJavadocNode, contents).toHTML(); } filePath= packageFragment.getElementName().replace('.', '/') + '/' + JavaModelUtil.PACKAGE_HTML; return getFileContentFromAttachedSource(root, filePath); }
private void handleText(String text) { if (fLiteralContent == 0) { fBuf.append(text); } else { appendEscaped(fBuf, text); } }
private String toHTML() { fBuf= new StringBuffer(); fLiteralContent= 0; if (fElement instanceof ILocalVariable || fElement instanceof ITypeParameter) { parameterToHTML(); } else { elementToHTML(); } String result= fBuf.toString(); fBuf= null; return result; }
Javadoc packageJavadocNode= getPackageJavadocNode(packageFragment, cuSource); if (packageJavadocNode != null) { IJavaElement element; return new JavadocContentAccess2(element, packageJavadocNode, cuSource).toHTML(); IFile iFile= (IFile) nonJavaResource; if (iFile.exists() && JavaModelUtil.PACKAGE_HTML.equals(iFile.getName())) { return getIFileContent(iFile); String encoding= getSourceAttachmentEncoding(root); if (JavaModelUtil.PACKAGE_HTML.equals(jarEntryResource.getName()) && jarEntryResource.isFile()) { return getHTMLContent(jarEntryResource, encoding); String contents= getHTMLContentFromAttachedSource(root, packageFragment); if (contents != null) return contents;
return getHTMLContent((IPackageFragment) element); return getHTMLContent((IPackageDeclaration) element); String sourceJavadoc= getHTMLContentFromSource(element); if (sourceJavadoc == null || sourceJavadoc.length() == 0 || sourceJavadoc.trim().equals("{@inheritDoc}")) { //$NON-NLS-1$ if (useAttachedJavadoc) { member= (IMember) element; if (canInheritJavadoc(member)) { IMethod method= (IMethod) member; String attachedDocInHierarchy= findAttachedDocInHierarchy(method); StringBuffer superMethodReferences= createSuperMethodReferences(method); if (superMethodReferences == null) return attachedDocInHierarchy;
private static String javadoc2HTML(IMember member, IJavaElement element, String rawJavadoc) { Javadoc javadoc= getJavadocNode(member, rawJavadoc); if (javadoc == null) { Reader contentReader= null; // fall back to JavadocContentAccess: try { contentReader= JavadocContentAccess.getHTMLContentReader(member, false, false); if (contentReader != null) return getString(contentReader); } catch (JavaModelException e) { JavaPlugin.log(e); } finally { if (contentReader != null) { try { contentReader.close(); } catch (IOException e) { //ignore } } } return null; } if (canInheritJavadoc(member)) { IMethod method= (IMethod) member; return new JavadocContentAccess2(element, javadoc, rawJavadoc, new JavadocLookup(method.getDeclaringType())).toHTML(); } return new JavadocContentAccess2(element, javadoc, rawJavadoc).toHTML(); }
private void handleExceptionTags(List<TagElement> tags, List<String> exceptionNames, CharSequence[] exceptionDescriptions) { if (tags.size() == 0 && containsOnlyNull(exceptionNames)) return; handleBlockTagTitle(JavaDocMessages.JavaDoc2HTMLTextReader_throws_section); for (Iterator<TagElement> iter= tags.iterator(); iter.hasNext(); ) { TagElement tag= iter.next(); fBuf.append(BlOCK_TAG_ENTRY_START); handleThrowsTag(tag); fBuf.append(BlOCK_TAG_ENTRY_END); } for (int i= 0; i < exceptionDescriptions.length; i++) { CharSequence description= exceptionDescriptions[i]; String name= exceptionNames.get(i); if (name != null) { fBuf.append(BlOCK_TAG_ENTRY_START); handleLink(Collections.singletonList(fJavadoc.getAST().newSimpleName(name))); if (description != null) { fBuf.append(JavaElementLabels.CONCAT_STRING); fBuf.append(description); } fBuf.append(BlOCK_TAG_ENTRY_END); } } }
Reader reader= null; try { String content= JavadocContentAccess2.getHTMLContent(element, true); IPackageFragmentRoot root= (IPackageFragmentRoot) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); boolean isBinary= root.exists() && root.getKind() == IPackageFragmentRoot.K_BINARY; if (content != null) { base= JavadocContentAccess2.extractBaseURL(content); if (base == null) { base= JavaDocLocations.getBaseURL(element, isBinary);
private static String getHTMLContentFromSource(IJavaElement element) throws JavaModelException { IMember member; if (element instanceof ILocalVariable) { member= ((ILocalVariable) element).getDeclaringMember(); } else if (element instanceof ITypeParameter) { member= ((ITypeParameter) element).getDeclaringMember(); } else if (element instanceof IMember) { member= (IMember) element; } else { return null; } IBuffer buf= member.getOpenable().getBuffer(); if (buf == null) { return null; // no source attachment found } ISourceRange javadocRange= member.getJavadocRange(); if (javadocRange == null) { if (canInheritJavadoc(member)) { // Try to use the inheritDoc algorithm. String inheritedJavadoc= javadoc2HTML(member, element, "/***/"); //$NON-NLS-1$ if (inheritedJavadoc != null && inheritedJavadoc.length() > 0) { return inheritedJavadoc; } } return getJavaFxPropertyDoc(member); } String rawJavadoc= buf.getText(javadocRange.getOffset(), javadocRange.getLength()); return javadoc2HTML(member, element, rawJavadoc); }
private void handleParameterTags(List<TagElement> tags, List<String> parameterNames, CharSequence[] parameterDescriptions, boolean isTypeParameters) { if (tags.size() == 0 && containsOnlyNull(parameterNames)) return; handleBlockTagTitle(tagTitle); handleParamTag(tag); fBuf.append(BlOCK_TAG_ENTRY_END);
private static Javadoc getJavadocNode(IJavaElement element, String rawJavadoc) { //FIXME: take from SharedASTProvider if available //Caveat: Javadoc nodes are not available when Javadoc processing has been disabled! //https://bugs.eclipse.org/bugs/show_bug.cgi?id=212207 String source= rawJavadoc + "class C{}"; //$NON-NLS-1$ CompilationUnit root= createAST(element, source); if (root == null) return null; List<AbstractTypeDeclaration> types= root.types(); if (types.size() != 1) return null; AbstractTypeDeclaration type= types.get(0); return type.getJavadoc(); }
private static String createMethodInTypeLinks(IMethod overridden) { CharSequence methodLink= createSimpleMemberLink(overridden); CharSequence typeLink= createSimpleMemberLink(overridden.getDeclaringType()); String methodInType= MessageFormat.format(JavaDocMessages.JavaDoc2HTMLTextReader_method_in_type, new Object[] { methodLink, typeLink }); return methodInType; }
private void handleSuperMethodReferences() { if (fMethod != null) { try { StringBuffer superMethodReferences= createSuperMethodReferences(fMethod); if (superMethodReferences != null) fBuf.append(superMethodReferences); } catch (JavaModelException e) { JavaPlugin.log(e); } } }
JavadocContentAccess2 contentAccess= new JavadocContentAccess2(method, javadoc, rawJavadoc, this); fContentAccesses.put(method, contentAccess); return contentAccess;
for (Iterator<IMethod> iter= superInterfaceMethods.iterator(); iter.hasNext(); ) { IMethod overridden= iter.next(); buf.append(createMethodInTypeLinks(overridden)); if (iter.hasNext()) buf.append(JavaElementLabels.COMMA_STRING); buf.append(JavaDocMessages.JavaDoc2HTMLTextReader_overrides_section); buf.append("</b> "); //$NON-NLS-1$ buf.append(createMethodInTypeLinks(superClassMethod[0]));
Javadoc packageJavadocNode= getPackageJavadocNode(packageFragment, cuSource); if (packageJavadocNode != null) { IJavaElement element; return new JavadocContentAccess2(element, packageJavadocNode, cuSource).toHTML(); IFile iFile= (IFile) nonJavaResource; if (iFile.exists() && JavaModelUtil.PACKAGE_HTML.equals(iFile.getName())) { return getIFileContent(iFile); String encoding= getSourceAttachmentEncoding(root); if (JavaModelUtil.PACKAGE_HTML.equals(jarEntryResource.getName()) && jarEntryResource.isFile()) { return getHTMLContent(jarEntryResource, encoding); String contents= getHTMLContentFromAttachedSource(root, packageFragment); if (contents != null) return contents;
return getHTMLContent((IPackageFragment) element); return getHTMLContent((IPackageDeclaration) element); String sourceJavadoc= getHTMLContentFromSource(element); if (sourceJavadoc == null || sourceJavadoc.length() == 0 || sourceJavadoc.trim().equals("{@inheritDoc}")) { //$NON-NLS-1$ if (useAttachedJavadoc) { member= (IMember) element; if (canInheritJavadoc(member)) { IMethod method= (IMethod) member; String attachedDocInHierarchy= findAttachedDocInHierarchy(method); StringBuffer superMethodReferences= createSuperMethodReferences(method); if (superMethodReferences == null) return attachedDocInHierarchy;
private static String javadoc2HTML(IMember member, IJavaElement element, String rawJavadoc) { Javadoc javadoc= getJavadocNode(member, rawJavadoc); if (javadoc == null) { Reader contentReader= null; // fall back to JavadocContentAccess: try { contentReader= JavadocContentAccess.getHTMLContentReader(member, false, false); if (contentReader != null) return getString(contentReader); } catch (JavaModelException e) { JavaPlugin.log(e); } finally { if (contentReader != null) { try { contentReader.close(); } catch (IOException e) { //ignore } } } return null; } if (canInheritJavadoc(member)) { IMethod method= (IMethod) member; return new JavadocContentAccess2(element, javadoc, rawJavadoc, new JavadocLookup(method.getDeclaringType())).toHTML(); } return new JavadocContentAccess2(element, javadoc, rawJavadoc).toHTML(); }
private void handleExceptionTags(List<TagElement> tags, List<String> exceptionNames, CharSequence[] exceptionDescriptions) { if (tags.size() == 0 && containsOnlyNull(exceptionNames)) return; handleBlockTagTitle(JavaDocMessages.JavaDoc2HTMLTextReader_throws_section); for (Iterator<TagElement> iter= tags.iterator(); iter.hasNext(); ) { TagElement tag= iter.next(); fBuf.append(BlOCK_TAG_ENTRY_START); handleThrowsTag(tag); fBuf.append(BlOCK_TAG_ENTRY_END); } for (int i= 0; i < exceptionDescriptions.length; i++) { CharSequence description= exceptionDescriptions[i]; String name= exceptionNames.get(i); if (name != null) { fBuf.append(BlOCK_TAG_ENTRY_START); handleLink(Collections.singletonList(fJavadoc.getAST().newSimpleName(name))); if (description != null) { fBuf.append(JavaElementLabels.CONCAT_STRING); fBuf.append(description); } fBuf.append(BlOCK_TAG_ENTRY_END); } } }