Skip to content

Commit 6881b6a

Browse files
committed
jooby-apt: filter out open-api/swagger annotations as route attributes
- fix #3525 - fix #3527
1 parent b4f5067 commit 6881b6a

4 files changed

Lines changed: 23 additions & 9 deletions

File tree

modules/jooby-apt/src/main/java/io/jooby/internal/apt/RouteAttributesGenerator.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import static io.jooby.apt.JoobyProcessor.Options.SKIP_ATTRIBUTE_ANNOTATIONS;
99
import static io.jooby.internal.apt.CodeBlock.indent;
10-
import static io.jooby.internal.apt.CodeBlock.type;
1110

1211
import java.lang.annotation.Retention;
1312
import java.lang.annotation.RetentionPolicy;
@@ -16,7 +15,6 @@
1615

1716
import javax.lang.model.element.*;
1817
import javax.lang.model.type.TypeMirror;
19-
import javax.lang.model.util.Elements;
2018
import javax.lang.model.util.SimpleAnnotationValueVisitor14;
2119
import javax.lang.model.util.Types;
2220

@@ -32,6 +30,8 @@ private record EnumValue(String type, String value) {}
3230
|| it.startsWith("jakarta.ws.rs")
3331
|| it.startsWith("javax.ws.rs");
3432

33+
private static final Predicate<String> OPEN_API = it -> it.startsWith("io.swagger");
34+
3535
private static final Predicate<String> NULL_ANNOTATION =
3636
it ->
3737
it.endsWith("NonNull")
@@ -42,15 +42,13 @@ private record EnumValue(String type, String value) {}
4242
private static final Predicate<String> KOTLIN_ANNOTATION = it -> it.equals("kotlin.Metadata");
4343

4444
private static final Predicate<String> ATTR_FILTER =
45-
HTTP_ANNOTATION.or(NULL_ANNOTATION).or(KOTLIN_ANNOTATION);
45+
HTTP_ANNOTATION.or(NULL_ANNOTATION).or(KOTLIN_ANNOTATION).or(OPEN_API);
4646

4747
private final List<String> skip;
48-
private final Elements elements;
4948
private final Types types;
5049

5150
public RouteAttributesGenerator(MvcContext context) {
5251
var environment = context.getProcessingEnvironment();
53-
this.elements = environment.getElementUtils();
5452
this.types = environment.getTypeUtils();
5553
this.skip = Options.stringListOpt(environment, SKIP_ATTRIBUTE_ANNOTATIONS);
5654
}

modules/jooby-apt/src/test/java/tests/i3455/C3455.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import io.jooby.annotation.GET;
1010
import io.jooby.annotation.Path;
1111
import io.jooby.annotation.QueryParam;
12-
import io.swagger.v3.oas.annotations.media.Schema;
1312

1413
@Path("/\"path")
1514
public class C3455 {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
* Jooby https://jooby.io
3+
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
4+
* Copyright 2014 Edgar Espina
5+
*/
6+
package tests.i3455;
7+
8+
import java.lang.annotation.ElementType;
9+
import java.lang.annotation.Retention;
10+
import java.lang.annotation.RetentionPolicy;
11+
import java.lang.annotation.Target;
12+
13+
@Retention(RetentionPolicy.RUNTIME)
14+
@Target(ElementType.METHOD)
15+
public @interface Schema {
16+
String description() default "";
17+
}

modules/jooby-apt/src/test/java/tests/i3525/Issue3525.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
package tests.i3525;
77

8-
import static org.junit.jupiter.api.Assertions.assertTrue;
8+
import static org.junit.jupiter.api.Assertions.assertFalse;
99

1010
import org.junit.jupiter.api.Test;
1111

@@ -18,8 +18,8 @@ public void shouldNotRunOnInfiniteLoop() throws Exception {
1818
new ProcessorRunner(new C3525())
1919
.withSourceCode(
2020
source -> {
21-
assertTrue(source.contains("\"Parameter.description\", \"paramA\","));
22-
assertTrue(source.contains("\"Parameter.description\", \"paramB\","));
21+
assertFalse(source.contains("\"Parameter.description\", \"paramA\","));
22+
assertFalse(source.contains("\"Parameter.description\", \"paramB\","));
2323
});
2424
}
2525
}

0 commit comments

Comments
 (0)