From cc913900b0dea036627ac6625baf7e5664b34746 Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Mon, 10 Dec 2018 13:11:24 +0000 Subject: [PATCH 1/2] Disabled Path based annotations for interfaces. --- .../openapi/impl/visitor/OpenApiWalker.java | 43 +++++++++++++------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java b/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java index 7fc5622aecd..0a571f9a06e 100644 --- a/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java +++ b/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java @@ -92,6 +92,7 @@ import fish.payara.microprofile.openapi.api.visitor.ApiVisitor; import fish.payara.microprofile.openapi.api.visitor.ApiVisitor.VisitorFunction; import fish.payara.microprofile.openapi.api.visitor.ApiWalker; +import javassist.Modifier; /** * A walker that visits each annotation and passes it to the visitor. @@ -130,8 +131,8 @@ public OpenApiWalker(OpenAPI api, Set> allowedClasses, Map void processAnnotations( Class annotationClass, VisitorFunction annotationFunction, Class altClass, - VisitorFunction altFunction) { + VisitorFunction altFunction, boolean allowInterfaces) { for (Class clazz : classes) { + // Don't read interfaces if the annotation should only be read from concrete classes + if (!allowInterfaces && (Modifier.isAbstract(clazz.getModifiers()) || clazz.isInterface())) { + continue; + } + processAnnotation(clazz, annotationClass, annotationFunction, altClass, altFunction, new OpenApiContext(api, getResourcePath(clazz, resourceMapping))); @@ -199,7 +205,18 @@ private void processAnnotations(Class annotationClass, VisitorFunction function) { - processAnnotations(annotationClass, function, null, null); + processAnnotations(annotationClass, function, false); + } + + private void processAnnotations(Class annotationClass, + VisitorFunction function, boolean allowInterfaces) { + processAnnotations(annotationClass, function, null, null, allowInterfaces); + } + + private void processAnnotations( + Class annotationClass, VisitorFunction annotationFunction, Class altClass, + VisitorFunction altFunction) { + processAnnotations(annotationClass, annotationFunction, altClass, altFunction, false); } @SuppressWarnings("unchecked") From ca4c1f565789e2858b80bb19785923b318078879 Mon Sep 17 00:00:00 2001 From: Matt Gill Date: Tue, 11 Dec 2018 09:26:20 +0000 Subject: [PATCH 2/2] Removed javassist import. --- .../payara/microprofile/openapi/impl/visitor/OpenApiWalker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java b/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java index 0a571f9a06e..79502e7a6e0 100644 --- a/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java +++ b/appserver/payara-appserver-modules/microprofile/openapi/src/main/java/fish/payara/microprofile/openapi/impl/visitor/OpenApiWalker.java @@ -46,6 +46,7 @@ import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.Map; import java.util.Set; import java.util.TreeSet; @@ -92,7 +93,6 @@ import fish.payara.microprofile.openapi.api.visitor.ApiVisitor; import fish.payara.microprofile.openapi.api.visitor.ApiVisitor.VisitorFunction; import fish.payara.microprofile.openapi.api.visitor.ApiWalker; -import javassist.Modifier; /** * A walker that visits each annotation and passes it to the visitor.