diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/ClassBuilder.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/ClassBuilder.java index c70652f7..efcd26ec 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/ClassBuilder.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/ClassBuilder.java @@ -102,7 +102,7 @@ private void addClassInfo(TypeElement classElement, MetadataFile classMetadataFi } void addConstructorsInfo(TypeElement classElement, MetadataFile classMetadataFile) { - for (ExecutableElement constructorElement : ElementFilter.constructorsIn(classElement.getEnclosedElements())) { + for (ExecutableElement constructorElement : ElementFilter.constructorsIn(elementUtil.getEnclosedElements(classElement))) { MetadataFileItem constructorItem = buildMetadataFileItem(constructorElement); constructorItem.setOverload(classItemsLookup.extractOverload(constructorElement)); constructorItem.setContent(classItemsLookup.extractConstructorContent(constructorElement)); @@ -115,7 +115,7 @@ void addConstructorsInfo(TypeElement classElement, MetadataFile classMetadataFil } private void addMethodsInfo(TypeElement classElement, MetadataFile classMetadataFile) { - ElementFilter.methodsIn(classElement.getEnclosedElements()).stream() + ElementFilter.methodsIn(elementUtil.getEnclosedElements(classElement)).stream() .filter(methodElement -> !Utils.isPrivateOrPackagePrivate(methodElement)) .forEach(methodElement -> { MetadataFileItem methodItem = buildMetadataFileItem(methodElement); @@ -135,7 +135,7 @@ private void addMethodsInfo(TypeElement classElement, MetadataFile classMetadata } private void addFieldsInfo(TypeElement classElement, MetadataFile classMetadataFile) { - ElementFilter.fieldsIn(classElement.getEnclosedElements()).stream() + ElementFilter.fieldsIn(elementUtil.getEnclosedElements(classElement)).stream() .filter(fieldElement -> !Utils.isPrivateOrPackagePrivate(fieldElement)) .forEach(fieldElement -> { MetadataFileItem fieldItem = buildMetadataFileItem(fieldElement); @@ -177,7 +177,7 @@ private void collect(TypeElement classElement, List children, Function, List> selectFunc, Function mapFunc) { - List elements = selectFunc.apply(classElement.getEnclosedElements()); + List elements = selectFunc.apply(elementUtil.getEnclosedElements(classElement)); children.addAll(filterPrivateElements(elements).stream() .map(mapFunc).collect(Collectors.toList())); } diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/Lookup.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/Lookup.java index 77781040..df74ebb1 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/Lookup.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/Lookup.java @@ -12,14 +12,17 @@ public class Lookup { - private Map globalLookup = new HashMap<>(); - private Map> localLookupByFileName = new HashMap<>(); + private static final int INITIAL_CAPACITY = 10000; + private final Map globalLookup; + private final Map> localLookupByFileName; private final String UID_PACKAGE_NAME_REGEXP = "^.*?\\.(?=[A-Z].*)"; private final String PARAM_PACKAGE_NAME_REGEXP = "(?<=[\\( ]).*?(?=[A-Z].*)"; private final String METHOD_PARAMS_REGEXP = "\\s[^\\s]+?(?=[,)])"; public Lookup(List packageMetadataFiles, List classMetadataFiles) { + this.globalLookup = new HashMap<>(INITIAL_CAPACITY); + this.localLookupByFileName = new HashMap<>(INITIAL_CAPACITY); consume(packageMetadataFiles); consume(classMetadataFiles); } @@ -96,4 +99,4 @@ private void consume(List metadataFiles) { localLookupByFileName.put(file.getFileNameWithPath(), map); }); } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/YmlFilesBuilder.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/YmlFilesBuilder.java index b558d1a6..7288b135 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/YmlFilesBuilder.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/build/YmlFilesBuilder.java @@ -40,10 +40,10 @@ public YmlFilesBuilder(DocletEnvironment environment, String outputPath, this.projectName = projectName; this.disableChangelog = disableChangelog; this.projectBuilder = new ProjectBuilder(projectName); - ClassLookup classLookup = new ClassLookup(environment); + ClassLookup classLookup = new ClassLookup(environment, elementUtil); this.referenceBuilder = new ReferenceBuilder(environment, classLookup, elementUtil); this.packageBuilder = new PackageBuilder(packageLookup, outputPath, referenceBuilder); - this.classBuilder = new ClassBuilder(elementUtil, classLookup, new ClassItemsLookup(environment), outputPath, referenceBuilder); + this.classBuilder = new ClassBuilder(elementUtil, classLookup, new ClassItemsLookup(environment, elementUtil), outputPath, referenceBuilder); } public boolean build() { diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/BaseLookup.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/BaseLookup.java index 2d0ede47..d4f04d14 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/BaseLookup.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/BaseLookup.java @@ -13,6 +13,7 @@ import com.sun.source.doctree.LinkTree; import com.sun.source.doctree.LiteralTree; import com.sun.source.doctree.SeeTree; +import java.util.concurrent.ConcurrentHashMap; import jdk.javadoc.doclet.DocletEnvironment; import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.StringUtils; @@ -32,6 +33,7 @@ public abstract class BaseLookup { + private static final int INITIAL_CAPACITY = 500000; protected final Map elementKindLookup = new HashMap<>() {{ put(ElementKind.PACKAGE, "Namespace"); put(ElementKind.CLASS, "Class"); @@ -44,20 +46,17 @@ public abstract class BaseLookup { put(ElementKind.FIELD, "Field"); }}; - protected Map map = new HashMap<>(); + protected Map map; protected final DocletEnvironment environment; protected BaseLookup(DocletEnvironment environment) { this.environment = environment; + this.map = new HashMap<>(INITIAL_CAPACITY); } protected ExtendedMetadataFileItem resolve(T key) { - ExtendedMetadataFileItem value = map.get(key); - if (value == null) { - value = buildMetadataFileItem(key); - map.put(key, value); - } - return value; + map.computeIfAbsent(key, this::buildMetadataFileItem); + return map.get(key); } protected abstract ExtendedMetadataFileItem buildMetadataFileItem(T key); @@ -172,9 +171,9 @@ public String extractStatus(T element) { Optional docCommentTree = getDocCommentTree(element); if (docCommentTree.isPresent()) { boolean isDeprecated = docCommentTree.get().getBlockTags().stream() - .filter(docTree -> docTree.getKind().equals(DocTree.Kind.DEPRECATED)) - .findFirst() - .isPresent(); + .filter(docTree -> docTree.getKind().equals(DocTree.Kind.DEPRECATED)) + .findFirst() + .isPresent(); if (isDeprecated) { return DocTree.Kind.DEPRECATED.name().toLowerCase(); } @@ -194,9 +193,9 @@ protected String determineComment(T element) { Optional docCommentTree = getDocCommentTree(element); if (docCommentTree.isPresent()) { String comment = docCommentTree - .map(DocCommentTree::getFullBody) - .map(this::replaceLinksAndCodes) - .orElse(null); + .map(DocCommentTree::getFullBody) + .map(this::replaceLinksAndCodes) + .orElse(null); return replaceBlockTags(docCommentTree.get(), comment); } return null; @@ -233,19 +232,19 @@ String replaceBlockTags(DocCommentTree docCommentTree, String comment) { */ String replaceLinksAndCodes(List items) { return YamlUtil.cleanupHtml(items.stream().map( - bodyItem -> { - switch (bodyItem.getKind()) { - case LINK: - case LINK_PLAIN: - return buildXrefTag((LinkTree) bodyItem); - case CODE: - return buildCodeTag((LiteralTree) bodyItem); - case LITERAL: - return expandLiteralBody((LiteralTree) bodyItem); - default: - return String.valueOf(bodyItem); - } + bodyItem -> { + switch (bodyItem.getKind()) { + case LINK: + case LINK_PLAIN: + return buildXrefTag((LinkTree) bodyItem); + case CODE: + return buildCodeTag((LiteralTree) bodyItem); + case LITERAL: + return expandLiteralBody((LiteralTree) bodyItem); + default: + return String.valueOf(bodyItem); } + } ).collect(Collectors.joining())); } @@ -281,8 +280,8 @@ public String makeTypeShort(String value) { return value; } return Stream.of(StringUtils.split(value, "<")) - .map(s -> RegExUtils.removeAll(s, "\\b[a-z0-9_.]+\\.")) - .collect(Collectors.joining("<")); + .map(s -> RegExUtils.removeAll(s, "\\b[a-z0-9_.]+\\.")) + .collect(Collectors.joining("<")); } private String getSeeAlsoSummary(Set seeItems) { @@ -291,16 +290,16 @@ private String getSeeAlsoSummary(Set seeItems) { private String getDeprecatedSummary(DeprecatedTree deprecatedTree) { return String.format("\nDeprecated. %s\n\n", - replaceLinksAndCodes(deprecatedTree.getBody())); + replaceLinksAndCodes(deprecatedTree.getBody())); } private String getSeeTagRef(SeeTree seeTree) { String ref = seeTree.getReference().stream() - .map(r -> String.valueOf(r)).collect(Collectors.joining("")); + .map(r -> String.valueOf(r)).collect(Collectors.joining("")); // if it's already a tag, use that otherwise build xref tag if (ref.matches("^<.+>(.|\n)*")) { return ref.replaceAll("\n", "").replaceAll("( )+", " "); } return String.format("%1$s", ref); } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassItemsLookup.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassItemsLookup.java index d3e8d2a3..f2da89d6 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassItemsLookup.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassItemsLookup.java @@ -5,6 +5,7 @@ import com.microsoft.model.MethodParameter; import com.microsoft.model.Return; import com.microsoft.util.CommentHelper; +import com.microsoft.util.ElementUtil; import com.microsoft.util.Utils; import com.sun.source.doctree.DocCommentTree; import com.sun.source.doctree.DocTree; @@ -29,9 +30,9 @@ public class ClassItemsLookup extends BaseLookup { private Utils utils; - public ClassItemsLookup(DocletEnvironment environment) { + public ClassItemsLookup(DocletEnvironment environment, ElementUtil elementUtil) { super(environment); - utils = new Utils(environment); + utils = new Utils(environment, elementUtil); } @Override diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassLookup.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassLookup.java index 91f097cc..3f1fcd9a 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassLookup.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/lookup/ClassLookup.java @@ -3,7 +3,9 @@ import com.microsoft.lookup.model.ExtendedMetadataFileItem; import com.microsoft.model.MetadataFileItem; import com.microsoft.model.TypeParameter; +import com.microsoft.util.ElementUtil; import com.microsoft.util.Utils; +import java.util.Collections; import jdk.javadoc.doclet.DocletEnvironment; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -25,8 +27,11 @@ public class ClassLookup extends BaseLookup { private static final String JAVA_LANG_OBJECT = "java.lang.Object"; - public ClassLookup(DocletEnvironment environment) { + private final ElementUtil elementUtil; + + public ClassLookup(DocletEnvironment environment, ElementUtil elementUtil) { super(environment); + this.elementUtil = elementUtil; } @Override @@ -59,14 +64,14 @@ protected ExtendedMetadataFileItem buildMetadataFileItem(TypeElement classElemen } void populateContent(TypeElement classElement, String shortNameWithGenericsSupport, - ExtendedMetadataFileItem container) { + ExtendedMetadataFileItem container) { String type = elementKindLookup.get(classElement.getKind()); String result = String.format("%s %s %s", - classElement.getModifiers().stream().map(String::valueOf) - .filter(modifier -> !("Interface".equals(type) && "abstract".equals(modifier))) - .filter(modifier -> !("Enum".equals(type) && ("static".equals(modifier) || "final".equals(modifier)))) - .collect(Collectors.joining(" ")), - StringUtils.lowerCase(type), shortNameWithGenericsSupport); + classElement.getModifiers().stream().map(String::valueOf) + .filter(modifier -> !("Interface".equals(type) && "abstract".equals(modifier))) + .filter(modifier -> !("Enum".equals(type) && ("static".equals(modifier) || "final".equals(modifier)))) + .collect(Collectors.joining(" ")), + StringUtils.lowerCase(type), shortNameWithGenericsSupport); String superclass = determineSuperclass(classElement); if (superclass != null && !JAVA_LANG_OBJECT.equals(superclass)) { @@ -79,11 +84,11 @@ void populateContent(TypeElement classElement, String shortNameWithGenericsSuppo if (CollectionUtils.isNotEmpty(interfaces)) { String prefix = (classElement.getKind() == ElementKind.INTERFACE) ? " extends " : " implements "; result += prefix + interfaces.stream().map(String::valueOf).map(this::makeTypeShort) - .collect(Collectors.joining(", ")); + .collect(Collectors.joining(", ")); container.setInterfaces(interfaces.stream() - .map(String::valueOf) - .collect(Collectors.toList())); + .map(String::valueOf) + .collect(Collectors.toList())); addInterfacesToReferencesMap(interfaces, container); @@ -98,16 +103,16 @@ void addSuperclassToReferencesMap(String superclass, ExtendedMetadataFileItem co void addInheritedMethodsToReferencesMap(ExtendedMetadataFileItem container) { container.addReferences(container.getInheritedMethods().stream() - .map(o -> new MetadataFileItem(o, makeTypeShort(o), false)) - .collect(Collectors.toSet()) + .map(o -> new MetadataFileItem(o, makeTypeShort(o), false)) + .collect(Collectors.toSet()) ); } void addInterfacesToReferencesMap(List interfaces, ExtendedMetadataFileItem container) { container.addReferences(interfaces.stream() - .map(String::valueOf) - .map(o -> new MetadataFileItem(o, makeTypeShort(o), false)) - .collect(Collectors.toSet()) + .map(String::valueOf) + .map(o -> new MetadataFileItem(o, makeTypeShort(o), false)) + .collect(Collectors.toSet()) ); } @@ -141,14 +146,14 @@ List determineNestedSuperclass(TypeElement classElement, ExtendedMetadat List determineTypeParameters(TypeElement element) { return element.getTypeParameters().stream() - .map(typeParameter -> new TypeParameter(String.valueOf(typeParameter))) - .collect(Collectors.toList()); + .map(typeParameter -> new TypeParameter(String.valueOf(typeParameter))) + .collect(Collectors.toList()); } void appendInheritedMethods(TypeElement element, List inheritedMethods) { - List members = element.getEnclosedElements(); + List members = elementUtil.getEnclosedElements(element); Integer level = Optional.ofNullable(getMaxNestedLevel(inheritedMethods)) - .orElse(0); + .orElse(0); for (Element m : members) { if (m.getKind() == ElementKind.METHOD && !Utils.isPrivateOrPackagePrivate(m)) { @@ -168,9 +173,9 @@ Integer getMaxNestedLevel(List inheritedMethods) { if (inheritedMethods.size() > 0) { level = inheritedMethods - .stream() - .mapToInt(v -> v.getNestedLevel()) - .max().orElseThrow(NoSuchElementException::new); + .stream() + .mapToInt(v -> v.getNestedLevel()) + .max().orElseThrow(NoSuchElementException::new); } return level; } @@ -191,9 +196,9 @@ List determineInheritedMembers(List inheritedM } } List methods = map.values() - .stream() - .map(x -> x.getUid()) - .collect(Collectors.toList()); + .stream() + .map(x -> x.getUid()) + .collect(Collectors.toList()); return methods; } @@ -212,4 +217,4 @@ public String extractJavaType(TypeElement element) { } return null; } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/ElementUtil.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/ElementUtil.java index 54b8ac64..d594ba4f 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/ElementUtil.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/ElementUtil.java @@ -1,5 +1,7 @@ package com.microsoft.util; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.lang3.StringUtils; import javax.lang.model.element.Element; @@ -15,34 +17,54 @@ public class ElementUtil { + private static final int INITIAL_CAPACITY = 1000000; private final Set excludePackages = new HashSet<>(); private final Set excludeClasses = new HashSet<>(); + private final Map> elementMap; + private final Map> elementSortedMap; + public ElementUtil(String[] excludePackages, String[] excludeClasses) { this.excludePackages.addAll(Stream.of(excludePackages) - .map(o -> Pattern.compile(o)).collect(Collectors.toSet())); + .map(o -> Pattern.compile(o)).collect(Collectors.toSet())); this.excludeClasses.addAll(Stream.of(excludeClasses) - .map(o -> Pattern.compile(o)).collect(Collectors.toSet())); + .map(o -> Pattern.compile(o)).collect(Collectors.toSet())); + this.elementMap = new ConcurrentHashMap<>(INITIAL_CAPACITY); + this.elementSortedMap = new ConcurrentHashMap<>(INITIAL_CAPACITY); } public List extractSortedElements(Element element) { + elementSortedMap.computeIfAbsent(element, this::extractSortedElementsInternal); + return elementSortedMap.get(element); + } + + private List extractSortedElementsInternal(Element element) { // Need to apply sorting, because order of result items for Element.getEnclosedElements() depend on JDK implementation // By default, exclude private and package-private items // todo allow pass parameter for filter items by access modifiers - return ElementFilter.typesIn(element.getEnclosedElements()).stream() - .filter(o -> !Utils.isPrivateOrPackagePrivate(o)) - .filter(o -> !matchAnyPattern(excludeClasses, String.valueOf(o.getQualifiedName()))) - .sorted((o1, o2) -> - StringUtils.compare(String.valueOf(o1.getSimpleName()), String.valueOf(o2.getSimpleName())) - ).collect(Collectors.toList()); + return ElementFilter.typesIn(getEnclosedElements(element)).stream() + .filter(o -> !Utils.isPrivateOrPackagePrivate(o)) + .filter(o -> !matchAnyPattern(excludeClasses, String.valueOf(o.getQualifiedName()))) + .sorted((o1, o2) -> + StringUtils.compare(String.valueOf(o1.getSimpleName()), String.valueOf(o2.getSimpleName())) + ).collect(Collectors.toList()); + } + + public List getEnclosedElements(Element element) { + elementMap.computeIfAbsent(element, this::getEnclosedElementsInternal); + return elementMap.get(element); + } + + private List getEnclosedElementsInternal(Element element) { + return element.getEnclosedElements(); } public List extractPackageElements(Set elements) { return ElementFilter.packagesIn(elements).stream() - .filter(o -> !matchAnyPattern(excludePackages, String.valueOf(o))) - .sorted((o1, o2) -> - StringUtils.compare(String.valueOf(o1.getSimpleName()), String.valueOf(o2.getSimpleName())) - ).collect(Collectors.toList()); + .filter(o -> !matchAnyPattern(excludePackages, String.valueOf(o))) + .sorted((o1, o2) -> + StringUtils.compare(String.valueOf(o1.getSimpleName()), String.valueOf(o2.getSimpleName())) + ).collect(Collectors.toList()); } boolean matchAnyPattern(Set patterns, String stringToCheck) { @@ -53,4 +75,4 @@ boolean matchAnyPattern(Set patterns, String stringToCheck) { } return false; } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/Utils.java b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/Utils.java index ba155915..e901651f 100644 --- a/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/Utils.java +++ b/third_party/docfx-doclet-143274/src/main/java/com/microsoft/util/Utils.java @@ -21,13 +21,15 @@ public class Utils { public final DocletEnvironment docletEnvironment; - public final Elements elementUtils; + public final Elements elements; public final Types typeUtils; + private final ElementUtil elementUtil; - public Utils(DocletEnvironment docEnv) { - docletEnvironment = docEnv; - elementUtils = docEnv.getElementUtils(); - typeUtils = docEnv.getTypeUtils(); + public Utils(DocletEnvironment docEnv, ElementUtil elementUtil) { + this.docletEnvironment = docEnv; + this.elements = docEnv.getElementUtils(); + this.typeUtils = docEnv.getTypeUtils(); + this.elementUtil = elementUtil; } public static boolean isPackagePrivate(Element e) { @@ -71,7 +73,7 @@ public boolean isSimpleOverride(ExecutableElement m) { List fullBody = getFullBody(m); return fullBody.isEmpty() || - (fullBody.size() == 1 && fullBody.get(0).getKind().equals(DocTree.Kind.INHERIT_DOC)); + (fullBody.size() == 1 && fullBody.get(0).getKind().equals(DocTree.Kind.INHERIT_DOC)); } public boolean hasInlineTag(List inlineTags, DocTree.Kind kind) { @@ -85,12 +87,12 @@ public boolean hasInlineTag(List inlineTags, DocTree.Kind kin public Element getMemberBySignature(TypeElement te, ElementKind kind, String signature) { return getMembers(te, kind).stream() - .filter(e -> e.toString().equals(signature)) - .findFirst().orElse(null); + .filter(e -> e.toString().equals(signature)) + .findFirst().orElse(null); } public TypeElement getObjectType() { - return elementUtils.getTypeElement("java.lang.Object"); + return elements.getTypeElement("java.lang.Object"); } /** @@ -138,8 +140,8 @@ public ExecutableElement overriddenMethod(ExecutableElement method) { } final TypeElement origin = getEnclosingTypeElement(method); for (TypeMirror t = getSuperType(origin); - t.getKind() == DECLARED; - t = getSuperType(asTypeElement(t))) { + t.getKind() == DECLARED; + t = getSuperType(asTypeElement(t))) { TypeElement te = asTypeElement(t); if (te == null) { return null; @@ -147,7 +149,7 @@ public ExecutableElement overriddenMethod(ExecutableElement method) { for (Element e : getMembers(te, ElementKind.METHOD)) { ExecutableElement ee = (ExecutableElement) e; - if (elementUtils.overrides(method, ee, origin) + if (elements.overrides(method, ee, origin) ) { return ee; } @@ -173,8 +175,8 @@ public Optional getDocCommentTree(Element element) { protected List getFullBody(Element element) { return getDocCommentTree(element) - .map(DocCommentTree::getFullBody) - .orElse(Collections.emptyList()); + .map(DocCommentTree::getFullBody) + .orElse(Collections.emptyList()); } public static List filteredList(List dlist, DocTree.Kind... select) { @@ -207,8 +209,8 @@ public List getBlockTags(Element element) { public List removeBlockTag(List dctree, DocTree.Kind kind) { return dctree.stream() - .filter(dc -> !dc.getKind().equals(kind)) - .collect(Collectors.toList()); + .filter(dc -> !dc.getKind().equals(kind)) + .collect(Collectors.toList()); } /** @@ -219,9 +221,9 @@ public List removeBlockTag(List dctree, Do * @return a list of visible enclosed members in this type */ public List getMembers(TypeElement te, ElementKind kind) { - return te.getEnclosedElements().stream() - .filter(e -> e.getKind() == kind && !isPrivateOrPackagePrivate(e)) - .collect(Collectors.toList()); + return elementUtil.getEnclosedElements(te).stream() + .filter(e -> e.getKind() == kind && !isPrivateOrPackagePrivate(e)) + .collect(Collectors.toList()); } /** @@ -255,7 +257,7 @@ public List getImplementedMethods(String signature, TypeElement encl, L */ public List getImplementedInterfaces(TypeElement element) { return element.getInterfaces().stream() - .map(e -> asTypeElement(e)) - .collect(Collectors.toList()); + .map(e -> asTypeElement(e)) + .collect(Collectors.toList()); } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ClassBuilderTest.java b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ClassBuilderTest.java index 1a9d1ef0..cc170b23 100644 --- a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ClassBuilderTest.java +++ b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ClassBuilderTest.java @@ -50,13 +50,13 @@ public void setup() { environment = Mockito.mock(DocletEnvironment.class); docTrees = Mockito.mock(DocTrees.class); ElementUtil elementUtil = new ElementUtil(new String[0], new String[0]); - ClassLookup classLookup = new ClassLookup(environment); + ClassLookup classLookup = new ClassLookup(environment, elementUtil); classBuilder = new ClassBuilder( - elementUtil, - classLookup, - new ClassItemsLookup(environment), - "./target", - new ReferenceBuilder(environment, classLookup, elementUtil)); + elementUtil, + classLookup, + new ClassItemsLookup(environment, elementUtil), + "./target", + new ReferenceBuilder(environment, classLookup, elementUtil)); } @Test public void addConstructorsInfoWhenOnlyDefaultConstructor() { @@ -84,4 +84,4 @@ public void addConstructorsInfo() { Collection constructorItems = container.getItems(); assertEquals("Container should contain 2 constructor items", constructorItems.size(), 2); } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ReferenceBuilderTest.java b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ReferenceBuilderTest.java index 4afc21d2..b4509a2f 100644 --- a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ReferenceBuilderTest.java +++ b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/ReferenceBuilderTest.java @@ -40,7 +40,7 @@ public class ReferenceBuilderTest { public void setup() { DocletEnvironment environment = Mockito.mock(DocletEnvironment.class); ElementUtil elementUtil = new ElementUtil(new String[0], new String[0]); - ClassLookup classLookup = new ClassLookup(environment); + ClassLookup classLookup = new ClassLookup(environment, elementUtil); referenceBuilder = new ReferenceBuilder(environment, classLookup, elementUtil); } @@ -110,4 +110,4 @@ public void getJavaReferenceHref() { assertEquals(baseURL, result12); assertEquals(baseURL, result13); } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/YmlFilesBuilderTest.java b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/YmlFilesBuilderTest.java index 027ba7d7..f5905351 100644 --- a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/YmlFilesBuilderTest.java +++ b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/build/YmlFilesBuilderTest.java @@ -58,4 +58,4 @@ public void joinTocTypeItems(){ assertEquals("Exceptions", tocItems.get(8).getHeading()); assertEquals(exceptionToc, tocItems.get(9)); } -} +} \ No newline at end of file diff --git a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassItemsLookupTest.java b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassItemsLookupTest.java index 2f990ade..54cfac2b 100644 --- a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassItemsLookupTest.java +++ b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassItemsLookupTest.java @@ -4,6 +4,7 @@ import com.microsoft.model.ExceptionItem; import com.microsoft.model.MethodParameter; import com.microsoft.model.Return; +import com.microsoft.util.ElementUtil; import com.sun.source.doctree.DeprecatedTree; import com.sun.source.doctree.DocCommentTree; import com.sun.source.doctree.DocTree.Kind; @@ -73,8 +74,7 @@ public void setup() { deprecatedTree = Mockito.mock(DeprecatedTree.class); textTree = Mockito.mock(TextTree.class); identifierTree = Mockito.mock(IdentifierTree.class); - classItemsLookup = new ClassItemsLookup(environment); - + classItemsLookup = new ClassItemsLookup(environment, Mockito.mock(ElementUtil.class)); } @Test diff --git a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassLookupTest.java b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassLookupTest.java index 9ec0557b..f2c4869d 100644 --- a/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassLookupTest.java +++ b/third_party/docfx-doclet-143274/src/test/java/com/microsoft/lookup/ClassLookupTest.java @@ -1,14 +1,26 @@ package com.microsoft.lookup; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import com.google.testing.compile.CompilationRule; import com.microsoft.lookup.model.ExtendedMetadataFileItem; import com.microsoft.model.Status; import com.microsoft.model.TypeParameter; +import com.microsoft.util.ElementUtil; import com.sun.source.doctree.DeprecatedTree; import com.sun.source.doctree.DocCommentTree; import com.sun.source.doctree.DocTree; import com.sun.source.doctree.TextTree; import com.sun.source.util.DocTrees; +import java.util.Arrays; +import java.util.List; +import javax.lang.model.element.TypeElement; +import javax.lang.model.type.TypeMirror; +import javax.lang.model.util.Elements; import jdk.javadoc.doclet.DocletEnvironment; import org.junit.Before; import org.junit.Rule; @@ -17,16 +29,6 @@ import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; -import javax.lang.model.element.ElementKind; -import javax.lang.model.element.TypeElement; -import javax.lang.model.type.TypeMirror; -import javax.lang.model.util.Elements; -import java.util.Arrays; -import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.*; - @RunWith(MockitoJUnitRunner.class) public class ClassLookupTest { @@ -46,7 +48,7 @@ public class ClassLookupTest { public void setup() { elements = rule.getElements(); environment = Mockito.mock(DocletEnvironment.class); - classLookup = new ClassLookup(environment); + classLookup = new ClassLookup(environment, Mockito.mock(ElementUtil.class)); docTrees = Mockito.mock(DocTrees.class); docTree = Mockito.mock(DocTree.class); docCommentTree = Mockito.mock(DocCommentTree.class);