3939import org .springdoc .api .AbstractOpenApiResource ;
4040import org .springdoc .core .AbstractRequestService ;
4141import org .springdoc .core .GenericResponseService ;
42- import org .springdoc .core .filters .OpenApiMethodFilter ;
4342import org .springdoc .core .OpenAPIService ;
4443import org .springdoc .core .OperationService ;
4544import org .springdoc .core .SpringDocConfigProperties ;
4645import org .springdoc .core .SpringDocProviders ;
4746import org .springdoc .core .customizers .OpenApiCustomiser ;
4847import org .springdoc .core .customizers .OperationCustomizer ;
48+ import org .springdoc .core .filters .OpenApiMethodFilter ;
4949import org .springdoc .core .fn .RouterOperation ;
5050import org .springdoc .core .providers .ActuatorProvider ;
5151import org .springdoc .core .providers .RepositoryRestResourceProvider ;
@@ -89,7 +89,7 @@ public OpenApiResource(String groupName, ObjectFactory<OpenAPIService> openAPIBu
8989 Optional <List <OpenApiMethodFilter >> methodFilters ,
9090 SpringDocConfigProperties springDocConfigProperties ,
9191 SpringDocProviders springDocProviders ) {
92- super (groupName , openAPIBuilderObjectFactory , requestBuilder , responseBuilder , operationParser , operationCustomizers , openApiCustomisers ,methodFilters , springDocConfigProperties , springDocProviders );
92+ super (groupName , openAPIBuilderObjectFactory , requestBuilder , responseBuilder , operationParser , operationCustomizers , openApiCustomisers , methodFilters , springDocConfigProperties , springDocProviders );
9393 }
9494
9595 /**
@@ -152,30 +152,30 @@ public String openapiYaml(HttpServletRequest request,
152152 @ Override
153153 @ SuppressWarnings ("unchecked" )
154154 protected void getPaths (Map <String , Object > restControllers , Locale locale ) {
155- SpringWebProvider springWebProvider = springDocProviders .getSpringWebProvider ();
156- Map <RequestMappingInfo , HandlerMethod > map = springWebProvider .getHandlerMethods ();
155+ Optional <SpringWebProvider > springWebProviderOptional = springDocProviders .getSpringWebProvider ();
156+ springWebProviderOptional .ifPresent (springWebProvider -> {
157+ Map <RequestMappingInfo , HandlerMethod > map = springWebProvider .getHandlerMethods ();
157158
158- Optional <RepositoryRestResourceProvider > repositoryRestResourceProviderOptional = springDocProviders .getRepositoryRestResourceProvider ();
159- repositoryRestResourceProviderOptional .ifPresent (restResourceProvider -> {
160- List <RouterOperation > operationList = restResourceProvider .getRouterOperations (openAPIService .getCalculatedOpenAPI (), locale );
161- calculatePath (operationList , locale );
162- restResourceProvider .customize (openAPIService .getCalculatedOpenAPI ());
163- Map <RequestMappingInfo , HandlerMethod > mapDataRest = restResourceProvider .getHandlerMethods ();
164- Map <String , Object > requestMappingMap = restResourceProvider .getBasePathAwareControllerEndpoints ();
165- Class [] additionalRestClasses = requestMappingMap .values ().stream ().map (Object ::getClass ).toArray (Class []::new );
166- AbstractOpenApiResource .addRestControllers (additionalRestClasses );
167- calculatePath (requestMappingMap , mapDataRest , locale );
168- });
159+ Optional <RepositoryRestResourceProvider > repositoryRestResourceProviderOptional = springDocProviders .getRepositoryRestResourceProvider ();
160+ repositoryRestResourceProviderOptional .ifPresent (restResourceProvider -> {
161+ List <RouterOperation > operationList = restResourceProvider .getRouterOperations (openAPIService .getCalculatedOpenAPI (), locale );
162+ calculatePath (operationList , locale );
163+ restResourceProvider .customize (openAPIService .getCalculatedOpenAPI ());
164+ Map <RequestMappingInfo , HandlerMethod > mapDataRest = restResourceProvider .getHandlerMethods ();
165+ Map <String , Object > requestMappingMap = restResourceProvider .getBasePathAwareControllerEndpoints ();
166+ Class [] additionalRestClasses = requestMappingMap .values ().stream ().map (Object ::getClass ).toArray (Class []::new );
167+ AbstractOpenApiResource .addRestControllers (additionalRestClasses );
168+ calculatePath (requestMappingMap , mapDataRest , locale );
169+ });
169170
170- calculatePath (restControllers , map , locale );
171- Optional <ActuatorProvider > actuatorProviderOptional = springDocProviders .getActuatorProvider ();
172- if (actuatorProviderOptional .isPresent () && springDocConfigProperties .isShowActuator ()) {
173- map = actuatorProviderOptional .get ().getMethods ();
174- this .openAPIService .addTag (new HashSet <>(map .values ()), getTag ());
175171 calculatePath (restControllers , map , locale );
176- }
177-
178-
172+ Optional <ActuatorProvider > actuatorProviderOptional = springDocProviders .getActuatorProvider ();
173+ if (actuatorProviderOptional .isPresent () && springDocConfigProperties .isShowActuator ()) {
174+ map = actuatorProviderOptional .get ().getMethods ();
175+ this .openAPIService .addTag (new HashSet <>(map .values ()), getTag ());
176+ calculatePath (restControllers , map , locale );
177+ }
178+ });
179179
180180 Optional <SecurityOAuth2Provider > securityOAuth2ProviderOptional = springDocProviders .getSpringSecurityOAuth2Provider ();
181181 if (securityOAuth2ProviderOptional .isPresent ()) {
@@ -202,29 +202,31 @@ protected void getPaths(Map<String, Object> restControllers, Locale locale) {
202202 protected void calculatePath (Map <String , Object > restControllers , Map <RequestMappingInfo , HandlerMethod > map , Locale locale ) {
203203 List <Map .Entry <RequestMappingInfo , HandlerMethod >> entries = new ArrayList <>(map .entrySet ());
204204 entries .sort (byReversedRequestMappingInfos ());
205- SpringWebProvider springWebProvider = springDocProviders .getSpringWebProvider ();
206- for (Map .Entry <RequestMappingInfo , HandlerMethod > entry : entries ) {
207- RequestMappingInfo requestMappingInfo = entry .getKey ();
208- HandlerMethod handlerMethod = entry .getValue ();
209- Set <String > patterns = springWebProvider .getActivePatterns (requestMappingInfo );
210- if (!CollectionUtils .isEmpty (patterns )) {
211- Map <String , String > regexMap = new LinkedHashMap <>();
212- for (String pattern : patterns ) {
213- String operationPath = PathUtils .parsePath (pattern , regexMap );
214- String [] produces = requestMappingInfo .getProducesCondition ().getProducibleMediaTypes ().stream ().map (MimeType ::toString ).toArray (String []::new );
215- String [] consumes = requestMappingInfo .getConsumesCondition ().getConsumableMediaTypes ().stream ().map (MimeType ::toString ).toArray (String []::new );
216- String [] headers = requestMappingInfo .getHeadersCondition ().getExpressions ().stream ().map (Object ::toString ).toArray (String []::new );
217- if ((isRestController (restControllers , handlerMethod , operationPath ) || isActuatorRestController (operationPath , handlerMethod ))
218- && isFilterCondition (handlerMethod , operationPath , produces , consumes , headers )) {
219- Set <RequestMethod > requestMethods = requestMappingInfo .getMethodsCondition ().getMethods ();
220- // default allowed requestmethods
221- if (requestMethods .isEmpty ())
222- requestMethods = this .getDefaultAllowedHttpMethods ();
223- calculatePath (handlerMethod , operationPath , requestMethods , locale );
205+ Optional <SpringWebProvider > springWebProviderOptional = springDocProviders .getSpringWebProvider ();
206+ springWebProviderOptional .ifPresent (springWebProvider -> {
207+ for (Map .Entry <RequestMappingInfo , HandlerMethod > entry : entries ) {
208+ RequestMappingInfo requestMappingInfo = entry .getKey ();
209+ HandlerMethod handlerMethod = entry .getValue ();
210+ Set <String > patterns = springWebProvider .getActivePatterns (requestMappingInfo );
211+ if (!CollectionUtils .isEmpty (patterns )) {
212+ Map <String , String > regexMap = new LinkedHashMap <>();
213+ for (String pattern : patterns ) {
214+ String operationPath = PathUtils .parsePath (pattern , regexMap );
215+ String [] produces = requestMappingInfo .getProducesCondition ().getProducibleMediaTypes ().stream ().map (MimeType ::toString ).toArray (String []::new );
216+ String [] consumes = requestMappingInfo .getConsumesCondition ().getConsumableMediaTypes ().stream ().map (MimeType ::toString ).toArray (String []::new );
217+ String [] headers = requestMappingInfo .getHeadersCondition ().getExpressions ().stream ().map (Object ::toString ).toArray (String []::new );
218+ if ((isRestController (restControllers , handlerMethod , operationPath ) || isActuatorRestController (operationPath , handlerMethod ))
219+ && isFilterCondition (handlerMethod , operationPath , produces , consumes , headers )) {
220+ Set <RequestMethod > requestMethods = requestMappingInfo .getMethodsCondition ().getMethods ();
221+ // default allowed requestmethods
222+ if (requestMethods .isEmpty ())
223+ requestMethods = this .getDefaultAllowedHttpMethods ();
224+ calculatePath (handlerMethod , operationPath , requestMethods , locale );
225+ }
224226 }
225227 }
226228 }
227- }
229+ });
228230 }
229231
230232
0 commit comments