Skip to content

Commit 8add0b7

Browse files
committed
Swagger UI not accessible when FormattingConversionService is a CGLIB proxy. Fixes #2239
1 parent 70943e0 commit 8add0b7

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/WebConversionServiceProvider.java

+14-11
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.slf4j.Logger;
3333
import org.slf4j.LoggerFactory;
3434

35+
import org.springframework.aop.support.AopUtils;
3536
import org.springframework.beans.BeansException;
3637
import org.springframework.beans.factory.InitializingBean;
3738
import org.springframework.context.ApplicationContext;
@@ -116,18 +117,20 @@ public Class<?> getSpringConvertedType(Class<?> clazz) {
116117
Field convertersField = FieldUtils.getDeclaredField(GenericConversionService.class, CONVERTERS, true);
117118
if (convertersField != null) {
118119
Object converters;
119-
try {
120-
converters = convertersField.get(formattingConversionService);
121-
convertersField = FieldUtils.getDeclaredField(converters.getClass(), CONVERTERS, true);
122-
Map<ConvertiblePair, Object> springConverters = (Map) convertersField.get(converters);
123-
Optional<ConvertiblePair> convertiblePairOptional = springConverters.keySet().stream().filter(convertiblePair -> convertiblePair.getTargetType().equals(clazz)).findAny();
124-
if (convertiblePairOptional.isPresent()) {
125-
ConvertiblePair convertiblePair = convertiblePairOptional.get();
126-
result = convertiblePair.getSourceType();
120+
if (!AopUtils.isAopProxy(formattingConversionService)){
121+
try {
122+
converters = convertersField.get(formattingConversionService);
123+
convertersField = FieldUtils.getDeclaredField(converters.getClass(), CONVERTERS, true);
124+
Map<ConvertiblePair, Object> springConverters = (Map) convertersField.get(converters);
125+
Optional<ConvertiblePair> convertiblePairOptional = springConverters.keySet().stream().filter(convertiblePair -> convertiblePair.getTargetType().equals(clazz)).findAny();
126+
if (convertiblePairOptional.isPresent()) {
127+
ConvertiblePair convertiblePair = convertiblePairOptional.get();
128+
result = convertiblePair.getSourceType();
129+
}
130+
}
131+
catch (IllegalAccessException e) {
132+
LOGGER.warn(e.getMessage());
127133
}
128-
}
129-
catch (IllegalAccessException e) {
130-
LOGGER.warn(e.getMessage());
131134
}
132135
}
133136
return result;

0 commit comments

Comments
 (0)