diff --git a/modules/swagger-annotations/src/main/java/io/swagger/v3/oas/annotations/Hidden.java b/modules/swagger-annotations/src/main/java/io/swagger/v3/oas/annotations/Hidden.java index 622fe20d6c..14a624870c 100644 --- a/modules/swagger-annotations/src/main/java/io/swagger/v3/oas/annotations/Hidden.java +++ b/modules/swagger-annotations/src/main/java/io/swagger/v3/oas/annotations/Hidden.java @@ -5,6 +5,7 @@ import java.lang.annotation.Target; import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; @@ -12,7 +13,7 @@ /** * Marks a given resource, class or bean type as hidden, skipping while reading / resolving **/ -@Target({METHOD, TYPE, FIELD, ANNOTATION_TYPE}) +@Target({PARAMETER, METHOD, TYPE, FIELD, ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Hidden { diff --git a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/ParameterProcessor.java b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/ParameterProcessor.java index 5c977bdfed..989860642d 100644 --- a/modules/swagger-core/src/main/java/io/swagger/v3/core/util/ParameterProcessor.java +++ b/modules/swagger-core/src/main/java/io/swagger/v3/core/util/ParameterProcessor.java @@ -99,6 +99,9 @@ public static Parameter applyAnnotations( } for (Annotation annotation : annotations) { + if (annotation instanceof io.swagger.v3.oas.annotations.Hidden) { + return null; + } if (annotation instanceof io.swagger.v3.oas.annotations.Parameter) { io.swagger.v3.oas.annotations.Parameter p = (io.swagger.v3.oas.annotations.Parameter) annotation; if (p.hidden()) { diff --git a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java index ed958c0a33..cccf4ffffe 100644 --- a/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java +++ b/modules/swagger-jaxrs2/src/main/java/io/swagger/v3/jaxrs2/DefaultParameterExtension.java @@ -87,6 +87,8 @@ public ResolvedParameter extractParameters(List annotations, pp.setIn(COOKIE_PARAM); pp.setName(param.value()); parameter = pp; + } else if (annotation instanceof io.swagger.v3.oas.annotations.Hidden) { + return new ResolvedParameter(); } else if (annotation instanceof io.swagger.v3.oas.annotations.Parameter) { if (((io.swagger.v3.oas.annotations.Parameter) annotation).hidden()) { return new ResolvedParameter(); diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/operations/AnnotatedOperationMethodTest.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/operations/AnnotatedOperationMethodTest.java index f17409fde4..ab17ddc347 100644 --- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/operations/AnnotatedOperationMethodTest.java +++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/operations/AnnotatedOperationMethodTest.java @@ -1342,6 +1342,24 @@ public void testHiddenAnnotatedUserResource() throws IOException { " content:\n" + " 'application/json': {}\n" + " 'application/xml': {}\n" + + " /user/3:\n" + + " get:\n" + + " summary: Select user\n" + + " operationId: selectUser\n" + + " parameters:\n" + + " - name: id\n" + + " in: query\n" + + " description: User id\n" + + " required: true\n" + + " schema:\n" + + " type: integer\n" + + " format: int32\n" + + " responses:\n" + + " default:\n" + + " description: default response\n" + + " content:\n" + + " 'application/json': {}\n" + + " 'application/xml': {}\n" + "components:\n" + " schemas:\n" + " UserResourceBean:\n" + diff --git a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/resources/HiddenAnnotatedUserResource.java b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/resources/HiddenAnnotatedUserResource.java index ebf3f0469b..99fc1f0ade 100644 --- a/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/resources/HiddenAnnotatedUserResource.java +++ b/modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/resources/HiddenAnnotatedUserResource.java @@ -6,9 +6,11 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; @Path("/user") @@ -50,6 +52,17 @@ public Response createUserWithHiddenBeanProperty( @Parameter(description = "Created user object", required = true) UserResourceBean user) { return Response.ok().entity("").build(); } + + @GET + @Operation(summary = "Select user") + @Path("/3") + public Response selectUser( + @QueryParam("id") @Parameter(description = "User id", required = true) Integer id, + @QueryParam("name") @Parameter(hidden = true) String name, + @QueryParam("secondName") @Hidden String secondName + ) { + return Response.ok().entity("").build(); + } } public class UserResourceBean {