Skip to content

Commit 5aac357

Browse files
committed
Support Deprecated methods
1 parent 1bfe6c4 commit 5aac357

File tree

5 files changed

+61
-4
lines changed

5 files changed

+61
-4
lines changed

src/main/java/io/dinject/javalin/generator/MethodReader.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,15 @@ public void addMeta(ProcessingContext ctx) {
8888
}
8989

9090
Operation operation = new Operation();
91-
//operation.setDeprecated();
9291
//operation.setOperationId();
9392
operation.setSummary(javadoc.getSummary());
9493
operation.setDescription(javadoc.getDescription());
94+
95+
if (javadoc.isDeprecated()) {
96+
operation.setDeprecated(true);
97+
} else if (element.getAnnotation(Deprecated.class) != null) {
98+
operation.setDeprecated(true);
99+
}
95100

96101
switch (webMethod) {
97102
case GET: pathItem.setGet(operation); break;

src/main/java/io/dinject/javalin/generator/Processor.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ private void readOpenApiDefinition(RoundEnvironment round) {
8282

8383
OpenAPIDefinition openApi = element.getAnnotation(OpenAPIDefinition.class);
8484
io.swagger.v3.oas.annotations.info.Info info = openApi.info();
85+
86+
logDebug("reading OpenAPIDefinition " + openApi + " info:" + info);
87+
8588
if (!info.title().isEmpty()) {
8689
info1.setTitle(info.title());
8790
}

src/main/java/io/dinject/javalin/generator/javadoc/Javadoc.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,29 @@ public class Javadoc {
1919

2020
private final String returnDescription;
2121

22+
private final boolean deprecated;
23+
2224
/**
2325
* Parse and return the Javadoc.
2426
*/
2527
public static Javadoc parse(String content) {
2628
return new JavadocParser().parse(content);
2729
}
2830

29-
Javadoc(String summary, String description, Map<String, String> params, String returnDescription) {
31+
Javadoc(String summary, String description, Map<String, String> params, String returnDescription, boolean deprecated) {
3032
this.summary = summary;
3133
this.description = description;
3234
this.params = params;
3335
this.returnDescription = returnDescription;
36+
this.deprecated = deprecated;
3437
}
3538

3639
private Javadoc() {
3740
this.summary = "";
3841
this.description = "";
3942
this.returnDescription = "";
4043
this.params = Collections.emptyMap();
44+
this.deprecated = false;
4145
}
4246

4347
public String getSummary() {
@@ -55,4 +59,8 @@ public Map<String, String> getParams() {
5559
public String getReturnDescription() {
5660
return returnDescription;
5761
}
62+
63+
public boolean isDeprecated() {
64+
return deprecated;
65+
}
5866
}

src/main/java/io/dinject/javalin/generator/javadoc/JavadocParser.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class JavadocParser {
1919
private static final int PARAM_DESC = 7;
2020
private static final int RETURN_DESC = 8;
2121
private static final int IGNORE = 9;
22+
private static final String DEPRECATED = "deprecated";
2223

2324
private int previousState = TEXT;
2425

@@ -32,6 +33,8 @@ class JavadocParser {
3233

3334
private Map<String, String> params = new LinkedHashMap<>();
3435

36+
private boolean deprecated;
37+
3538
/**
3639
* Parse the javadoc.
3740
*/
@@ -121,10 +124,13 @@ private void processParamName(char c) {
121124
}
122125

123126
private void processDocletStart(char c) {
124-
if (c == ' ') {
127+
if (c == ' ' || c == '\n') {
125128
state = previousState;
126129
String docletName = currentDoclet.toString();
127130
if (IGNORED.contains(docletName)) {
131+
if (DEPRECATED.equals(docletName)) {
132+
deprecated = true;
133+
}
128134
state = IGNORE;
129135
} else {
130136
if (docletName.equals("param")) {
@@ -154,7 +160,7 @@ private Javadoc splitMain(String mainText) {
154160
desc = mergeLines(mainText.substring(pos + 1).trim());
155161
}
156162

157-
return new Javadoc(summary, desc, params, returnDesc);
163+
return new Javadoc(summary, desc, params, returnDesc, deprecated);
158164
}
159165

160166
String mergeLines(String multiline) {

src/test/java/io/dinject/javalin/generator/javadoc/JavadocParserTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import static org.assertj.core.api.Assertions.assertThat;
66
import static org.junit.Assert.assertEquals;
7+
import static org.junit.Assert.assertFalse;
78
import static org.junit.Assert.assertTrue;
89

910
public class JavadocParserTest {
@@ -83,10 +84,44 @@ public void parse_with_summaryAndDescription() {
8384

8485
assertEquals("This is a description", doc.getSummary());
8586
assertEquals("With bold and some code", doc.getDescription());
87+
assertFalse(doc.isDeprecated());
8688
assertTrue(doc.getParams().isEmpty());
8789
assertEquals("", doc.getReturnDescription());
8890
}
8991

92+
@Test
93+
public void parse_with_deprecated() {
94+
95+
JavadocParser parser = new JavadocParser();
96+
97+
Javadoc doc = parser.parse(
98+
"Summary. Description\n" +
99+
"@deprecated\n");
100+
101+
assertEquals("Summary", doc.getSummary());
102+
assertEquals("Description", doc.getDescription());
103+
assertTrue(doc.isDeprecated());
104+
assertTrue(doc.getParams().isEmpty());
105+
assertEquals("", doc.getReturnDescription());
106+
}
107+
108+
109+
@Test
110+
public void parse_with_deprecatedWithComment() {
111+
112+
JavadocParser parser = new JavadocParser();
113+
114+
Javadoc doc = parser.parse(
115+
"Summary. Description\n" +
116+
"@since 1.0\n" +
117+
"@deprecated Migration to something else\n");
118+
119+
assertEquals("Summary", doc.getSummary());
120+
assertEquals("Description", doc.getDescription());
121+
assertTrue(doc.isDeprecated());
122+
assertTrue(doc.getParams().isEmpty());
123+
assertEquals("", doc.getReturnDescription());
124+
}
90125
@Test
91126
public void parse_returnNoEOL() {
92127

0 commit comments

Comments
 (0)