4848import org .springframework .data .rest .core .mapping .ResourceType ;
4949import org .springframework .http .HttpMethod ;
5050import org .springframework .util .AntPathMatcher ;
51+ import org .springframework .util .CollectionUtils ;
5152import org .springframework .web .bind .annotation .RequestMethod ;
5253import org .springframework .web .method .HandlerMethod ;
54+ import org .springframework .web .servlet .mvc .condition .PathPatternsRequestCondition ;
5355import org .springframework .web .servlet .mvc .condition .PatternsRequestCondition ;
5456import org .springframework .web .servlet .mvc .method .RequestMappingInfo ;
5557
@@ -176,9 +178,8 @@ private void buildRouterOperationList(List<RouterOperation> routerOperationList,
176178
177179 for (RequestMethod requestMethod : requestMethods ) {
178180 if (!UNDOCUMENTED_REQUEST_METHODS .contains (requestMethod )) {
179- PatternsRequestCondition patternsRequestCondition = requestMappingInfo .getPatternsCondition ();
180- if (patternsRequestCondition != null ) {
181- Set <String > patterns = patternsRequestCondition .getPatterns ();
181+ Set <String > patterns = getActivePatterns (requestMappingInfo );
182+ if (!CollectionUtils .isEmpty (patterns )) {
182183 Map <String , String > regexMap = new LinkedHashMap <>();
183184 String relationName = dataRestRepository .getRelationName ();
184185 String operationPath = calculateOperationPath (path , subPath , patterns , regexMap , controllerType , relationName );
@@ -273,8 +274,8 @@ private Optional<Entry<RequestMappingInfo, HandlerMethod>> getSearchEntry(Map<Re
273274 private boolean isSearchControllerPresent (RequestMappingInfo requestMappingInfo , HandlerMethod handlerMethod , RequestMethod requestMethod ) {
274275 if (!UNDOCUMENTED_REQUEST_METHODS .contains (requestMethod )) {
275276 PatternsRequestCondition patternsRequestCondition = requestMappingInfo .getPatternsCondition ();
276- if ( patternsRequestCondition != null ) {
277- Set < String > patterns = patternsRequestCondition . getPatterns ();
277+ Set < String > patterns = getActivePatterns ( requestMappingInfo );
278+ if (! CollectionUtils . isEmpty ( patterns )) {
278279 Map <String , String > regexMap = new LinkedHashMap <>();
279280 String operationPath ;
280281 for (String pattern : patterns ) {
@@ -291,4 +292,22 @@ private boolean isSearchControllerPresent(RequestMappingInfo requestMappingInfo,
291292 return false ;
292293 }
293294
295+ /**
296+ * Gets active patterns.
297+ *
298+ * @param requestMappingInfo the request mapping info
299+ * @return the active patterns
300+ */
301+ private Set <String > getActivePatterns (RequestMappingInfo requestMappingInfo ) {
302+ Set <String > patterns = null ;
303+ PatternsRequestCondition patternsRequestCondition = requestMappingInfo .getPatternsCondition ();
304+ if (patternsRequestCondition != null )
305+ patterns = patternsRequestCondition .getPatterns ();
306+ else {
307+ PathPatternsRequestCondition pathPatternsRequestCondition = requestMappingInfo .getPathPatternsCondition ();
308+ if (pathPatternsRequestCondition != null )
309+ patterns = pathPatternsRequestCondition .getPatternValues ();
310+ }
311+ return patterns ;
312+ }
294313}
0 commit comments