Skip to content

Commit 505eee1

Browse files
author
michal
committed
Ignore annotatation - handle nested object
1 parent b1dd5c2 commit 505eee1

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/core/AbstractRequestBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ protected Parameter customiseParameter(Parameter parameter, ParameterInfo parame
352352
* @param parameter the parameter
353353
* @return the boolean
354354
*/
355-
public boolean isParamToIgnore(MethodParameter parameter) {
355+
public boolean isParamToIgnore(DelegatingMethodParameter parameter) {
356356
if (SpringDocAnnotationsUtils.isAnnotationToIgnore(parameter))
357357
return true;
358358
if (isRequiredAnnotation(parameter))

springdoc-openapi-common/src/main/java/org/springdoc/core/DelegatingMethodParameter.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ public class DelegatingMethodParameter extends MethodParameter {
6868
*/
6969
private boolean isParameterObject;
7070

71+
/**
72+
* For simple parameters, it is null
73+
* For nested parameter is a controller method parameter
74+
*/
75+
private MethodParameter controllerMethodParameter;
76+
7177
/**
7278
* Instantiates a new Delegating method parameter.
7379
*
@@ -98,9 +104,10 @@ public static DelegatingMethodParameter[] customize(String[] pNames, MethodParam
98104
MethodParameter p = parameters[i];
99105
Class<?> paramClass = AdditionalModelsConverter.getReplacement(p.getParameterType());
100106
if (p.hasParameterAnnotation(ParameterObject.class) || AnnotatedElementUtils.isAnnotated(paramClass, ParameterObject.class)) {
101-
MethodParameterPojoExtractor.extractFrom(paramClass).forEach(methodParameter -> {
102-
optionalDelegatingMethodParameterCustomizer.ifPresent(customizer -> customizer.customize(p, methodParameter));
103-
explodedParameters.add(methodParameter);
107+
MethodParameterPojoExtractor.extractFrom(paramClass).forEach(delegatingMethodParameter -> {
108+
optionalDelegatingMethodParameterCustomizer.ifPresent(customizer -> customizer.customize(p, delegatingMethodParameter));
109+
delegatingMethodParameter.setControllerMethodParameter(p);
110+
explodedParameters.add(delegatingMethodParameter);
104111
});
105112
}
106113
else {
@@ -213,4 +220,14 @@ public int hashCode() {
213220
public boolean isParameterObject() {
214221
return isParameterObject;
215222
}
223+
224+
public void setControllerMethodParameter(MethodParameter controllerMethodParameter) {
225+
this.controllerMethodParameter = controllerMethodParameter;
226+
}
227+
228+
public MethodParameter getControllerMethodParameter() {
229+
return controllerMethodParameter == null ? delegate : controllerMethodParameter;
230+
}
231+
232+
216233
}

springdoc-openapi-common/src/main/java/org/springdoc/core/SpringDocAnnotationsUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,9 @@ public static void mergeSchema(Content existingContent, Schema<?> schemaN, Strin
231231
* @return the boolean
232232
*/
233233
@SuppressWarnings("unchecked")
234-
public static boolean isAnnotationToIgnore(MethodParameter parameter) {
234+
public static boolean isAnnotationToIgnore(DelegatingMethodParameter parameter) {
235235
return ANNOTATIONS_TO_IGNORE.stream().anyMatch(
236-
annotation -> AnnotationUtils.findAnnotation(parameter.getParameter(), annotation) != null
236+
annotation -> AnnotationUtils.findAnnotation(parameter.getControllerMethodParameter().getParameter(), annotation) != null
237237
|| AnnotationUtils.findAnnotation(parameter.getParameterType(), annotation) != null);
238238
}
239239

springdoc-openapi-data-rest/src/main/java/org/springdoc/data/rest/core/DataRestRequestBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public void buildParameters(Class<?> domainType, OpenAPI openAPI, HandlerMethod
137137
*/
138138
public void buildCommonParameters(Class<?> domainType, OpenAPI openAPI, RequestMethod requestMethod, MethodAttributes methodAttributes, Operation operation, String[] pNames, MethodParameter[] methodParameters) {
139139
DelegatingMethodParameter[] parameters = DelegatingMethodParameter.customize(pNames, methodParameters, parameterBuilder.getDelegatingMethodParameterCustomizer());
140-
for (MethodParameter methodParameter : parameters) {
140+
for (DelegatingMethodParameter methodParameter : parameters) {
141141
final String pName = methodParameter.getParameterName();
142142
ParameterInfo parameterInfo = new ParameterInfo(pName, methodParameter);
143143
if (isParamToIgnore(methodParameter)) {
@@ -171,7 +171,7 @@ else if (methodParameter.getParameterAnnotation(BackendId.class) != null) {
171171
* @param methodParameter the method parameter
172172
* @return the boolean
173173
*/
174-
private boolean isParamToIgnore(MethodParameter methodParameter) {
174+
private boolean isParamToIgnore(DelegatingMethodParameter methodParameter) {
175175
return !requestBuilder.isParamToIgnore(methodParameter)
176176
&& !isHeaderToIgnore(methodParameter)
177177
&& !"property".equals(methodParameter.getParameterName());

0 commit comments

Comments
 (0)