48
48
import org .springframework .data .rest .core .mapping .ResourceType ;
49
49
import org .springframework .http .HttpMethod ;
50
50
import org .springframework .util .AntPathMatcher ;
51
+ import org .springframework .util .CollectionUtils ;
51
52
import org .springframework .web .bind .annotation .RequestMethod ;
52
53
import org .springframework .web .method .HandlerMethod ;
54
+ import org .springframework .web .servlet .mvc .condition .PathPatternsRequestCondition ;
53
55
import org .springframework .web .servlet .mvc .condition .PatternsRequestCondition ;
54
56
import org .springframework .web .servlet .mvc .method .RequestMappingInfo ;
55
57
@@ -176,9 +178,8 @@ private void buildRouterOperationList(List<RouterOperation> routerOperationList,
176
178
177
179
for (RequestMethod requestMethod : requestMethods ) {
178
180
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 )) {
182
183
Map <String , String > regexMap = new LinkedHashMap <>();
183
184
String relationName = dataRestRepository .getRelationName ();
184
185
String operationPath = calculateOperationPath (path , subPath , patterns , regexMap , controllerType , relationName );
@@ -273,8 +274,8 @@ private Optional<Entry<RequestMappingInfo, HandlerMethod>> getSearchEntry(Map<Re
273
274
private boolean isSearchControllerPresent (RequestMappingInfo requestMappingInfo , HandlerMethod handlerMethod , RequestMethod requestMethod ) {
274
275
if (!UNDOCUMENTED_REQUEST_METHODS .contains (requestMethod )) {
275
276
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 )) {
278
279
Map <String , String > regexMap = new LinkedHashMap <>();
279
280
String operationPath ;
280
281
for (String pattern : patterns ) {
@@ -291,4 +292,22 @@ private boolean isSearchControllerPresent(RequestMappingInfo requestMappingInfo,
291
292
return false ;
292
293
}
293
294
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
+ }
294
313
}
0 commit comments