diff --git a/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java b/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java
index 35517b622..81b25e4dc 100644
--- a/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java
+++ b/typescript-generator-core/src/main/java/cz/habarta/typescript/generator/compiler/ModelCompiler.java
@@ -55,6 +55,7 @@
import cz.habarta.typescript.generator.parser.RestMethodModel;
import cz.habarta.typescript.generator.parser.RestQueryParam;
import cz.habarta.typescript.generator.type.JTypeWithNullability;
+import cz.habarta.typescript.generator.util.DeprecationUtils;
import cz.habarta.typescript.generator.util.GenericsResolver;
import cz.habarta.typescript.generator.util.Pair;
import cz.habarta.typescript.generator.util.Utils;
@@ -72,6 +73,7 @@
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -1019,11 +1021,9 @@ private static TsEnumModel addEnumValuesToJavadoc(TsEnumModel enumModel) {
Stream.of("Values:"),
enumModel.getMembers().stream()
.map(enumMember -> "- `" + enumMember.getEnumValue() + "`"
- + (enumMember.getComments() != null
- ? " - " + String.join(" ", enumMember.getComments())
- : ""))
+ + getEnumItemCommentAsString(enumMember))
)
- .flatMap(s -> s)
+ .flatMap(Function.identity())
.collect(Collectors.toList())
);
} else {
@@ -1031,6 +1031,15 @@ private static TsEnumModel addEnumValuesToJavadoc(TsEnumModel enumModel) {
}
}
+ private static String getEnumItemCommentAsString(EnumMemberModel enumMember) {
+ if (enumMember.getComments() == null) {
+ return "";
+ }
+ return " - " + enumMember.getComments().stream()
+ .map(s -> s.startsWith(DeprecationUtils.DEPRECATED) ? s.substring(1) : s)
+ .collect(Collectors.joining(" "));
+ }
+
private TsModel createAndUseTaggedUnions(final SymbolTable symbolTable, TsModel tsModel) {
if (settings.disableTaggedUnions) {
return tsModel;
diff --git a/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JavadocTest.java b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JavadocTest.java
index e7795ecba..4d67f42d9 100644
--- a/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JavadocTest.java
+++ b/typescript-generator-core/src/test/java/cz/habarta/typescript/generator/JavadocTest.java
@@ -8,18 +8,23 @@
import cz.habarta.typescript.generator.parser.Model;
import cz.habarta.typescript.generator.parser.PropertyModel;
import java.io.File;
-import java.util.Arrays;
+import java.util.Collections;
import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class JavadocTest {
+ final Settings settings = TestUtils.settings();
+ final TypeProcessor typeProcessor = new DefaultTypeProcessor();
+
+ @BeforeEach
+ void initSettings() {
+ settings.javadocXmlFiles = Collections.singletonList(new File("src/test/javadoc/test-javadoc.xml"));
+ }
@Test
- public void testJavadoc() {
- final Settings settings = TestUtils.settings();
- settings.javadocXmlFiles = Arrays.asList(new File("src/test/javadoc/test-javadoc.xml"));
- final TypeProcessor typeProcessor = new DefaultTypeProcessor();
+ void javadocXml() {
{
final Model model = new Jackson2Parser(settings, typeProcessor).parseModel(ClassWithJavadoc.class);
final BeanModel bean = model.getBeans().get(0);
@@ -32,6 +37,10 @@ public void testJavadoc() {
final EnumModel enumModel = model.getEnums().get(0);
Assertions.assertEquals("Documentation for DummyEnum.", enumModel.getComments().get(0));
}
+ }
+
+ @Test
+ void classWithoutJavadoc() {
{
final Model model = new Jackson2Parser(settings, typeProcessor).parseModel(ClassWithoutJavadoc.class);
final BeanModel bean = model.getBeans().get(0);
@@ -39,6 +48,10 @@ public void testJavadoc() {
final PropertyModel property = bean.getProperties().get(0);
Assertions.assertNull(property.getComments());
}
+ }
+
+ @Test
+ void classWithEmbeddedExample() {
{
final String generated = new TypeScriptGenerator(settings).generateTypeScript(
Input.from(ClassWithJavadoc.class, InterfaceWithJavadoc.class, ClassWithEmbeddedExample.class));
@@ -61,6 +74,10 @@ public void testJavadoc() {
Assertions.assertTrue(generated.contains("00ff00"));
Assertions.assertTrue(generated.contains("0000ff"));
}
+ }
+
+ @Test
+ void deprecatedClassWithoutJavadoc() {
{
final String generated = new TypeScriptGenerator(settings).generateTypeScript(Input.from(DeprecatedClassWithoutJavadoc.class));
final String expected = ""
@@ -75,6 +92,10 @@ public void testJavadoc() {
+ "}";
Assertions.assertEquals(expected.trim(), generated.trim());
}
+ }
+
+ @Test
+ void deprecatedEnumWithoutJavadoc() {
{
final String generated = new TypeScriptGenerator(settings).generateTypeScript(Input.from(DeprecatedEnumWithoutJavadoc.class));
final String expected = ""
@@ -83,7 +104,7 @@ public void testJavadoc() {
+ " * \n"
+ " * Values:\n"
+ " * - `North`\n"
- + " * - `East` - @deprecated\n"
+ + " * - `East` - deprecated\n"
+ " * - `South`\n"
+ " * - `West`\n"
+ " */\n"
@@ -91,6 +112,33 @@ public void testJavadoc() {
+ "";
Assertions.assertEquals(expected.trim(), generated.trim());
}
+ }
+
+ @Test
+ void deprecatedEnumWItem() {
+ settings.mapEnum = EnumMapping.asEnum;
+ final String generated = new TypeScriptGenerator(settings).generateTypeScript(Input.from(DeprecatedEnumItem.class));
+ final String expected = ""
+ + "/**\n"
+ + " * Values:\n"
+ + " * - `First`\n"
+ + " * - `Second` - deprecated\n"
+ + " * - `Third`\n"
+ + " */\n"
+ + "declare const enum DeprecatedEnumItem {\n" +
+ " First = \"First\",\n" +
+ " /**\n" +
+ " * @deprecated\n" +
+ " */\n" +
+ " Second = \"Second\",\n" +
+ " Third = \"Third\",\n" +
+ "}"
+ + "";
+ Assertions.assertEquals(expected.trim(), generated.trim());
+ }
+
+ @Test
+ void classWithBrInJavadoc() {
{
final String generated = new TypeScriptGenerator(settings).generateTypeScript(Input.from(ClassWithBrElements.class));
Assertions.assertTrue(!generated.contains("
"));
@@ -99,6 +147,10 @@ public void testJavadoc() {
Assertions.assertTrue(generated.contains("Class documentation\n * \n"));
Assertions.assertTrue(generated.contains("Some documentation\n * \n * for this class."));
}
+ }
+
+ @Test
+ void classWithPInJavadoc() {
{
final String generated = new TypeScriptGenerator(settings).generateTypeScript(Input.from(ClassWithPElements.class));
Assertions.assertTrue(!generated.contains("
")); @@ -177,6 +229,12 @@ public static enum DeprecatedEnumWithoutJavadoc { } + public enum DeprecatedEnumItem { + First, + @Deprecated Second, + Third; + } + /** * This class comes with an embedded example! *