Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ public YmlFilesBuilder(DocletEnvironment environment, String outputPath,
}

public boolean build() {
MetadataFile projectMetadataFile = new MetadataFile(outputPath,"overview.yml");;
List<MetadataFileItem> packageItems = new ArrayList<>();
List<MetadataFile> packageMetadataFiles = new ArrayList<>();
List<MetadataFile> classMetadataFiles = new ArrayList<>();

Expand All @@ -78,6 +80,7 @@ public boolean build() {
}

for (MetadataFile packageFile : packageMetadataFiles) {
packageItems.addAll(packageFile.getItems());
String packageFileName = packageFile.getFileName();
for (MetadataFile classFile : classMetadataFiles) {
String classFileName = classFile.getFileName();
Expand All @@ -88,10 +91,11 @@ public boolean build() {
}
}
}

buildProjectMetadataFile(packageItems, projectMetadataFile);
populateUidValues(packageMetadataFiles, classMetadataFiles);
updateExternalReferences(classMetadataFiles);

FileUtil.dumpToFile(projectMetadataFile);
packageMetadataFiles.forEach(FileUtil::dumpToFile);
classMetadataFiles.forEach(FileUtil::dumpToFile);
FileUtil.dumpToFile(tocFile);
Expand Down Expand Up @@ -129,6 +133,30 @@ void buildFilesForInnerClasses(Element element, TocTypeMap tocTypeMap, List<Meta
}
}


void buildProjectMetadataFile(List<MetadataFileItem> packageItems, MetadataFile projectMetadataFile) {
MetadataFileItem projectItem = new MetadataFileItem(LANGS, projectName);
projectItem.setNameWithType(projectName);
projectItem.setFullName(projectName);
projectItem.setType("Namespace");
projectItem.setJavaType("overview");

List<String> children = new ArrayList<>();
List<MetadataFileItem> references = new ArrayList<>();
packageItems.stream().forEach(i -> {
children.add(i.getUid());
MetadataFileItem refItem = new MetadataFileItem(i.getUid());
refItem.setName(i.getName());
refItem.setNameWithType(i.getNameWithType());
refItem.setFullName(i.getFullName());
references.add(refItem);
});

projectItem.getChildren().addAll(children);
projectMetadataFile.getReferences().addAll(references);
projectMetadataFile.getItems().add(projectItem);
}

MetadataFile buildPackageMetadataFile(PackageElement packageElement) {
String fileName = packageLookup.extractHref(packageElement);
MetadataFile packageMetadataFile = new MetadataFile(outputPath, fileName);
Expand Down Expand Up @@ -159,10 +187,13 @@ MetadataFileItem buildClassReference(TypeElement classElement) {
}

<T extends Element> void populateItemFields(MetadataFileItem item, BaseLookup<T> lookup, T element) {
item.setName(lookup.extractName(element));
String name = lookup.extractName(element);
item.setName(name);
item.setNameWithType(lookup.extractNameWithType(element));
item.setFullName(lookup.extractFullName(element));
item.setType(lookup.extractType(element));
String javatype = lookup.extractJavaType(element,name);
item.setJavaType(javatype);
item.setSummary(lookup.extractSummary(element));
item.setContent(lookup.extractContent(element));
}
Expand Down Expand Up @@ -301,12 +332,14 @@ void addReferencesInfo(TypeElement classElement, MetadataFile classMetadataFile)

MetadataFileItem buildMetadataFileItem(Element element) {
return new MetadataFileItem(LANGS, classItemsLookup.extractUid(element)) {{
String name = classItemsLookup.extractName(element);
setId(classItemsLookup.extractId(element));
setParent(classItemsLookup.extractParent(element));
setName(classItemsLookup.extractName(element));
setName(name);
setNameWithType(classItemsLookup.extractNameWithType(element));
setFullName(classItemsLookup.extractFullName(element));
setType(classItemsLookup.extractType(element));
setJavaType(classItemsLookup.extractJavaType(element, name));
setPackageName(classItemsLookup.extractPackageName(element));
setSummary(classItemsLookup.extractSummary(element));
}};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand Down Expand Up @@ -117,6 +119,18 @@ public String extractType(T key) {
return resolve(key).getType();
}

public String extractJavaType(T element, String name) {
if (element.getKind().name().equals(ElementKind.CLASS.name()) && name.contains("Exception")){
return "exception";
}
String javatype = element.getKind().name().toLowerCase().replaceAll("_","");

if (javatype.equals("package") || javatype.equals("overview") || javatype.equals("annotationtype")){
return javatype;
}
return null;
}

public String extractContent(T key) {
return resolve(key).getContent();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ protected ExtendedMetadataFileItem buildMetadataFileItem(Element element) {
setHref(classQName + ".yml");
setName(elementQName);
setType(determineType(element));
setJavaType(extractJavaType(element, elementQName));
setPackageName(packageName);
setSummary(determineComment(element));
}};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
Expand Down Expand Up @@ -45,6 +46,7 @@ protected ExtendedMetadataFileItem buildMetadataFileItem(TypeElement classElemen
result.setNameWithType(classSNameWithGenericsSupport);
result.setFullName(classQNameWithGenericsSupport);
result.setType(determineType(classElement));
result.setJavaType(extractJavaType(classElement, classSNameWithGenericsSupport));
result.setPackageName(packageName);
result.setSummary(determineComment(classElement));
result.setSuperclass(determineNestedSuperclass(classElement, result, inheritedMethods));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ protected ExtendedMetadataFileItem buildMetadataFileItem(PackageElement packageE
result.setNameWithType(qName);
result.setFullName(qName);
result.setType(determineType(packageElement));
result.setJavaType(extractJavaType(packageElement, qName));
result.setSummary(determineComment(packageElement));
result.setContent(determinePackageContent(packageElement));
return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

// for including guides with toc items
// [items: [name: Overview,
// href: index.md,
// href: overview.html,
// name: Version history,
// href: history.md,
// name: name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import java.util.List;

@JsonPropertyOrder({"uid", "id", "parent", "children", "href", "langs", "isExternal", "name", "nameWithType",
"fullName", "overload", "overridden", "type", "package", "summary", "syntax", "inheritance", "implements", "exceptions",
"fullName", "overload", "overridden", "type", "javatype", "package", "summary", "syntax", "inheritance", "implements", "exceptions",
"spec.java", "inheritedMembers", "status"})
public class MetadataFileItem implements Comparable<MetadataFileItem> {

Expand All @@ -25,6 +25,7 @@ public class MetadataFileItem implements Comparable<MetadataFileItem> {
private String overload;
private String overridden;
private String type;
private String javatype;
@JsonProperty("package")
private String packageName;
private String summary;
Expand Down Expand Up @@ -140,10 +141,18 @@ public String getType() {
return type;
}

public String getJavaType() {
return javatype;
}

public void setType(String type) {
this.type = type;
}

public void setJavaType(String javaType) {
this.javatype = javaType;
}

public String getPackageName() {
return packageName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public TocContents(String projectName, List<TocItem> items) {
private void createTocContents(String projectName, List<TocItem> items) {
List<Object> tocItems = new ArrayList<>();
// combine guides and tocItems
tocItems.add(new Guide("Overview", "overview.html"));
tocItems.add(new Guide("Version history", "history.md"));
tocItems.addAll(items);
// wrap guides + tocItems with product hierarchy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public static String cleanupHtml(String text) {
return text;
}
return text.replaceAll("<pre>([^<]+)</pre>","$1")
.replaceAll("<pre><code>", "<pre><code class=\"prettyprint lang-java\">")
.replaceAll("<pre><code>", "<pre class=\"prettyprint lang-java\"><code>")
.replaceAll("`([^`]+)`", "<code>$1</code>")
.replaceAll("\\[([^]]+)]\\(([^)]+)\\)", "<a href=\"$2\">$1</a>")
.replaceAll("\\[([^]]+)]\\[([^]]+)\\]", "<xref uid=\"$2\" data-throw-if-not-resolved=\"false\">$1</xref>")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,13 @@
import org.mockito.junit.MockitoJUnitRunner;

import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.Elements;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;

import static org.junit.Assert.assertEquals;
Expand All @@ -38,6 +41,7 @@ public class BaseLookupTest {
private LinkTree linkTree;
private ReferenceTree referenceTree;
private LiteralTree literalTree;
private TypeElement typeElement;
private BaseLookup<Element> baseLookup;
private ExtendedMetadataFileItem lastBuiltItem;

Expand All @@ -51,6 +55,7 @@ public void setup() {
linkTree = Mockito.mock(LinkTree.class);
referenceTree = Mockito.mock(ReferenceTree.class);
literalTree = Mockito.mock(LiteralTree.class);
typeElement = Mockito.mock(TypeElement.class);

baseLookup = new BaseLookup<>(environment) {
@Override
Expand Down Expand Up @@ -217,6 +222,29 @@ public void testExtractMethods() {
assertEquals("Wrong references", baseLookup.extractReferences(element), lastBuiltItem.getReferences());
}

@Test
public void testExtractJavaType() {
String name = "com.microsoft.samples.google.ValidationException";
when(typeElement.getKind()).thenReturn(ElementKind.CLASS);
assertEquals("Wrong javaType", baseLookup.extractJavaType(typeElement, name), "exception");

name = "com.microsoft.samples.google.BetaApi";
when(typeElement.getKind()).thenReturn(ElementKind.ANNOTATION_TYPE);
assertEquals("Wrong javaType", baseLookup.extractJavaType(typeElement, name), "annotationtype");

name = "com.microsoft.samples.google";
when(typeElement.getKind()).thenReturn(ElementKind.PACKAGE);
assertEquals("Wrong javaType", baseLookup.extractJavaType(typeElement, name), "package");

name = "com.microsoft.samples.google.SpeechClient";
when(typeElement.getKind()).thenReturn(ElementKind.CLASS);
assertEquals("Wrong javaType", baseLookup.extractJavaType(typeElement, name), null);

name = "com.microsoft.samples.google.ValidationException.Supplier";
when(typeElement.getKind()).thenReturn(ElementKind.INTERFACE);
assertEquals("Wrong javaType", baseLookup.extractJavaType(typeElement, name), null);
}

private ExtendedMetadataFileItem buildExtendedMetadataFileItem(Element element) {
ExtendedMetadataFileItem result = new ExtendedMetadataFileItem(String.valueOf(element));
result.setPackageName("Some package name");
Expand All @@ -235,6 +263,7 @@ private ExtendedMetadataFileItem buildExtendedMetadataFileItem(Element element)
result.setReturn(new Return("return type", "return desc"));
result.setSummary("Some summary");
result.setType("Some type");
result.setJavaType("Some type");
result.setContent("Some content");
result.setTypeParameters(Arrays.asList(new TypeParameter("type param id")));
result.setSuperclass(Arrays.asList("Some "));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,12 @@ public void getIsExternal() {
assertTrue("Wrong isExternal when true", (new MetadataFileItem("123", "name", true)).getIsExternal());
assertNull("Wrong isExternal when false", (new MetadataFileItem("123", "name", false)).getIsExternal());
}

@Test
public void setJavaType() {
MetadataFileItem metadataFileItem = new MetadataFileItem("123");
assertNull("Wrong javaType when null", metadataFileItem.getJavaType());
metadataFileItem.setJavaType("javaType");
assertEquals("Wrong javaType when set","javaType", metadataFileItem.getJavaType());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,19 @@ public void getContentsWithProjectName() {
assertEquals(contents.getName(), "google-cloud-project");

List<Object> items = contents.getItems();
assertEquals("Should be 4 items", items.size(), 4);
assertEquals("Should be 5 items", items.size(), 5);

assertEquals("Guide should be first", items.get(0).getClass(), Guide.class);
Guide history = (Guide) items.get(0);
Guide overview = (Guide) items.get(0);
assertEquals("First guide should be Overview", overview.getName(), "Overview");

assertEquals("Guide should be second", items.get(1).getClass(), Guide.class);
Guide history = (Guide) items.get(1);
assertEquals("Second guide should be Version History", history.getName(), "Version history");

assertEquals("Item A should be second", items.get(1), tocItemA);
assertEquals("Item B should be third", items.get(2), tocItemB);
assertEquals("Item C should be fourth", items.get(3), tocItemC);
assertEquals("Item A should be third", items.get(2), tocItemA);
assertEquals("Item B should be fourth", items.get(3), tocItemB);
assertEquals("Item C should be fifth", items.get(4), tocItemC);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ private MetadataFileItem buildMetadataFileItem(int seed) {
public void cleanupHtmlRemoveLonePreTagsTest() {
String expectedActual = "<pre>text</pre>";
String expectedResult = "text";
String expectedWithCode = "<pre><code class=\"pretty-print\">text</code></pre>";
String expectedWithCode = "<pre class=\"pretty-print\"><code>text</code></pre>";
String random = UUID.randomUUID().toString();

assertEquals(expectedResult, YamlUtil.cleanupHtml(expectedActual));
Expand All @@ -72,7 +72,7 @@ public void cleanupHtmlRemoveLonePreTagsTest() {
@Test
public void cleanupHtmlIncludePrettyPrintTest() {
String expectedActual = "<pre><code>";
String expectedResult = "<pre><code class=\"prettyprint lang-java\">";
String expectedResult = "<pre class=\"prettyprint lang-java\"><code>";
String random = UUID.randomUUID().toString();

assertEquals(expectedResult, YamlUtil.cleanupHtml(expectedActual));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ items:
type: "Namespace"
syntax:
content: "package com.microsoft.samples.agreements"
javaType: "package"
references:
- uid: "com.microsoft.samples.agreements.AgreementDetailsCollectionOperations"
name: "AgreementDetailsCollectionOperations"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ items:
type: "Namespace"
syntax:
content: "package com.microsoft.samples.commentinheritance"
javaType: "package"
references:
- uid: "com.microsoft.samples.commentinheritance.Animal"
name: "Animal"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ items:
content: "public interface BetaApi implements Annotation"
implements:
- "java.lang.annotation.Annotation"
javaType: "annotationtype"
- uid: "com.microsoft.samples.google.BetaApi.value()"
id: "value()"
parent: "com.microsoft.samples.google.BetaApi"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ items:
fullName: "com.microsoft.samples.google.ProductSearchSettings"
type: "Class"
package: "com.microsoft.samples.google"
summary: "Settings class to configure an instance of <xref uid=\"\" data-throw-if-not-resolved=\"false\">ProductSearchClient</xref>.\n\n <p>The default instance has everything set to sensible defaults:\n\n <ul>\n <li>The default service address (vision.googleapis.com) and default port (443) are used.\n <li>Credentials are acquired automatically through Application Default Credentials.\n <li>Retries are configured for idempotent methods but not for non-idempotent methods.\n </ul>\n\n <p>The builder of this class is recursive, so contained classes are themselves builders. When\n build() is called, the tree of builders is called to create the complete settings object.\n\n <p>For example, to set the total timeout of createProductSet to 30 seconds:\n\n <pre><code class=\"prettyprint lang-java\">\n ProductSearchSettings.Builder productSearchSettingsBuilder = ProductSearchSettings.newBuilder();\n productSearchSettingsBuilder\n .createProductSetSettings()\n .setRetrySettings(\n productSearchSettingsBuilder\n .createProductSetSettings()\n .getRetrySettings()\n .toBuilder()\n .setTotalTimeout(Duration.ofSeconds(30))\n .build());\n ProductSearchSettings productSearchSettings = productSearchSettingsBuilder.build();\n </code></pre>"
summary: "Settings class to configure an instance of <xref uid=\"\" data-throw-if-not-resolved=\"false\">ProductSearchClient</xref>.\n\n <p>The default instance has everything set to sensible defaults:\n\n <ul>\n <li>The default service address (vision.googleapis.com) and default port (443) are used.\n <li>Credentials are acquired automatically through Application Default Credentials.\n <li>Retries are configured for idempotent methods but not for non-idempotent methods.\n </ul>\n\n <p>The builder of this class is recursive, so contained classes are themselves builders. When\n build() is called, the tree of builders is called to create the complete settings object.\n\n <p>For example, to set the total timeout of createProductSet to 30 seconds:\n\n <pre class=\"prettyprint lang-java\"><code>\n ProductSearchSettings.Builder productSearchSettingsBuilder = ProductSearchSettings.newBuilder();\n productSearchSettingsBuilder\n .createProductSetSettings()\n .setRetrySettings(\n productSearchSettingsBuilder\n .createProductSetSettings()\n .getRetrySettings()\n .toBuilder()\n .setTotalTimeout(Duration.ofSeconds(30))\n .build());\n ProductSearchSettings productSearchSettings = productSearchSettingsBuilder.build();\n </code></pre>"
syntax:
content: "public class ProductSearchSettings extends ClientSettings<ProductSearchSettings>"
inheritance:
Expand Down
Loading