if (!referencedMember.isStatic()) { LOG.warning("Referenced member of @link " + print(linkTag) + " is not static." + " Right now only references to static members are supported."); final ClassDoc containingClass = referencedMember.containingClass(); final Object object; try { final Field declaredField = Class.forName(containingClass.qualifiedName(), false, Thread.currentThread() .getContextClassLoader()).getDeclaredField(referencedMember.name()); if (referencedMember.isFinal()) { declaredField.setAccessible(true); LOG.info("Have thread classloader " + Thread.currentThread().getContextClassLoader().getClass()); LOG.info("Have system classloader " + ClassLoader.getSystemClassLoader().getClass()); LOG.log(Level.SEVERE, "Could not get field " + referencedMember.qualifiedName(), e); return null;
private static String getIncludeFromLink(SeeTag linkTag) { final MemberDoc fieldDoc = linkTag.referencedMember(); if (null == fieldDoc || !fieldDoc.isStatic() || !fieldDoc.isField()) { return ""; } ClassDoc owner = fieldDoc.containingClass(); try { Field declaredField = Class.forName(owner.qualifiedName(), false, Thread.currentThread().getContextClassLoader()).getDeclaredField(fieldDoc.name()); if (!String.class.equals(declaredField.getType())) { return ""; } if (fieldDoc.isFinal() || fieldDoc.isPrivate() || fieldDoc.isProtected()) { declaredField.setAccessible(true); } return (String) declaredField.get(null); } catch (Exception e) { e.printStackTrace(); return ""; } }
/** * @return The {@link ClassDoc} containing the given <var>doc</var>, or {@code null} iff <var>doc</var> is a * {@link PackageDoc} or a {@link RootDoc} */ @Nullable public static ClassDoc classScope(Doc doc) { return ( doc instanceof ClassDoc ? (ClassDoc) doc : doc instanceof MemberDoc ? ((MemberDoc) doc).containingClass() : null ); }
/** * Print description about the Static Varible/Method/Constructor for a * member. * * @param member MemberDoc for the member within the Class Kind. * @see com.sun.javadoc.MemberDoc */ protected void printMemberDesc(MemberDoc member) { ClassDoc containing = member.containingClass(); String classdesc = Util.getTypeName(configuration, containing, true) + " " + getPreQualifiedClassLink(LinkInfoImpl.CONTEXT_INDEX, containing, false); if (member.isField()) { if (member.isStatic()) { printText("doclet.Static_variable_in", classdesc); } else { printText("doclet.Variable_in", classdesc); } } else if (member.isConstructor()) { printText("doclet.Constructor_for", classdesc); } else if (member.isMethod()) { if (member.isStatic()) { printText("doclet.Static_method_in", classdesc); } else { printText("doclet.Method_in", classdesc); } } } }
private String getSerializedLinkFromTag(final SeeTag linkTag, Collection<String> expands) { final MemberDoc referencedMember = linkTag.referencedMember(); if (referencedMember == null) { return null; // Addition by Atlassian } if (!referencedMember.isStatic()) { return null; } /* * Get referenced example bean */ final ClassDoc containingClass = referencedMember.containingClass(); final String className = containingClass.qualifiedName(); final String fieldName = referencedMember.name(); final Option<Object> object = ReflectionKit.loadClassFieldValue(className, fieldName); return object.flatMap(o -> atlassianJsonMarshaller.marshallBeanToJson(o, expands)).getOrNull(); }
/** * Get the header for the section. * * @param member the member being documented. * @return a header content for the section. */ protected Content getHead(MemberDoc member) { Content memberContent = new StringContent(member.name()); Content heading = HtmlTree.HEADING(HtmlConstants.MEMBER_HEADING, memberContent); return heading; }
/** * Generate Description for Class, Field, Method or Constructor. * for Java.* Packages Class Members. * * @param member MemberDoc for the member of the Class Kind. * @see com.sun.javadoc.MemberDoc */ protected void printDescription(MemberDoc member) { String name = (member instanceof ExecutableMemberDoc)? member.name() + ((ExecutableMemberDoc)member).flatSignature() : member.name(); if (name.indexOf("<") != -1 || name.indexOf(">") != -1) { name = Util.escapeHtmlChars(name); } ClassDoc containing = member.containingClass(); dt(); printDocLink(LinkInfoImpl.CONTEXT_INDEX, member, name, true); println(" - "); printMemberDesc(member); println(); dtEnd(); dd(); printComment(member); ddEnd(); println(); }
String label, boolean strong ) if( !(doc.isIncluded() || Util.isLinkable( classDoc, configuration() )) ) doc.name(), label, strong ) );
/** * Get members for meta tag keywords as an array, * where each member name is a string element of the array. * The parameter lists are not included in the keywords; * therefore all overloaded methods are combined.<br> * Example: getValue(Object) is returned in array as getValue() * * @param memberdocs array of MemberDoc objects to be added to keywords */ protected ArrayList<String> getMemberKeywords(MemberDoc[] memberdocs) { ArrayList<String> results = new ArrayList<String>(); String membername; for (int i=0; i < memberdocs.length; i++) { membername = memberdocs[i].name() + (memberdocs[i].isMethod() ? "()" : ""); if ( ! results.contains(membername) ) { results.add(membername); } } return results; } }
protected void printModifiers(MemberDoc member) { String mod = modifierString(member); // According to JLS, we should not be showing public modifier for // interface methods. if ((member.isField() || member.isMethod()) && writer instanceof ClassWriterImpl && ((ClassWriterImpl) writer).getClassDoc().isInterface()) { mod = Util.replaceText(mod, "public", "").trim(); } if(mod.length() > 0) { print(mod); print(' '); } }
/** * {@inheritDoc} */ protected void writeDeprecatedLink(ProgramElementDoc member) { writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) member, ((MemberDoc)member).qualifiedName(), false); }
((MemberDoc) doc).containingPackage() );
/** * @return The {@link ClassDoc} containing the given {@code doc}, or {@code null} iff {@code doc} is a * {@link PackageDoc} or a {@link RootDoc} */ @Nullable public static ClassDoc classScope(Doc doc) { return ( doc instanceof ClassDoc ? (ClassDoc) doc : doc instanceof MemberDoc ? ((MemberDoc) doc).containingClass() : null ); }
ClassDoc containing = member.containingClass(); String classdesc = Util.getTypeName( configuration, containing, true) + " "; if (member.isField()) { if (member.isStatic()) { contentTree.addContent( getResource("doclet.Static_variable_in", classdesc)); getResource("doclet.Variable_in", classdesc)); } else if (member.isConstructor()) { contentTree.addContent( getResource("doclet.Constructor_for", classdesc)); } else if (member.isMethod()) { if (member.isStatic()) { contentTree.addContent( getResource("doclet.Static_method_in", classdesc));
protected void printHead(MemberDoc member) { writer.h3(); writer.print(member.name()); writer.h3End(); }
public Content getDocLink(LinkInfoImpl.Kind context, ClassDoc classDoc, MemberDoc doc, Content label, boolean strong, boolean isProperty) { if (! (doc.isIncluded() || Util.isLinkable(classDoc, configuration))) { return label; } else if (doc instanceof ExecutableMemberDoc) { ExecutableMemberDoc emd = (ExecutableMemberDoc)doc; return getLink(new LinkInfoImpl(configuration, context, classDoc) .label(label).where(getName(getAnchor(emd, isProperty))).strong(strong)); } else if (doc instanceof MemberDoc) { return getLink(new LinkInfoImpl(configuration, context, classDoc) .label(label).where(getName(doc.name())).strong(strong)); } else { return label; } }
/** * Get members for meta tag keywords as an array, * where each member name is a string element of the array. * The parameter lists are not included in the keywords; * therefore all overloaded methods are combined.<br> * Example: getValue(Object) is returned in array as getValue() * * @param memberdocs array of MemberDoc objects to be added to keywords */ protected ArrayList<String> getMemberKeywords(MemberDoc[] memberdocs) { ArrayList<String> results = new ArrayList<String>(); String membername; for (int i=0; i < memberdocs.length; i++) { membername = memberdocs[i].name() + (memberdocs[i].isMethod() ? "()" : ""); if ( ! results.contains(membername) ) { results.add(membername); } } return results; } }
/** * Add the modifier for the member. * * @param member the member for which teh modifier will be added. * @param htmltree the content tree to which the modifier information will be added. */ protected void addModifiers(MemberDoc member, Content htmltree) { String mod = modifierString(member); // According to JLS, we should not be showing public modifier for // interface methods. if ((member.isField() || member.isMethod()) && writer instanceof ClassWriterImpl && ((ClassWriterImpl) writer).getClassDoc().isInterface()) { // This check for isDefault() and the default modifier needs to be // added for it to appear on the method details section. Once the // default modifier is added to the Modifier list on DocEnv and once // it is updated to use the javax.lang.model.element.Modifier, we // will need to remove this. mod = (member.isMethod() && ((MethodDoc)member).isDefault()) ? Util.replaceText(mod, "public", "default").trim() : Util.replaceText(mod, "public", "").trim(); } if(mod.length() > 0) { htmltree.addContent(mod); htmltree.addContent(writer.getSpace()); } }
/** * {@inheritDoc} */ protected Content getDeprecatedLink(ProgramElementDoc member) { return writer.getDocLink(LinkInfoImpl.Kind.MEMBER, (MemberDoc) member, ((MemberDoc)member).qualifiedName()); }
redirectPathFromRoot = DocPath.forPackage(((ClassDoc) doc).containingPackage()); } else if (doc instanceof MemberDoc) { redirectPathFromRoot = DocPath.forPackage(((MemberDoc) doc).containingPackage()); } else if (doc instanceof PackageDoc) { redirectPathFromRoot = DocPath.forPackage((PackageDoc) doc);