File tree Expand file tree Collapse file tree 2 files changed +14
-3
lines changed
main/java/org/springframework/util
test/java/org/springframework/util Expand file tree Collapse file tree 2 files changed +14
-3
lines changed Original file line number Diff line number Diff line change @@ -391,15 +391,16 @@ private AntPatternComparator(String path) {
391
391
392
392
@ Override
393
393
public int compare (String pattern1 , String pattern2 ) {
394
- if (pattern1 == null && pattern2 == null ) {
394
+ if (isNullOrCaptureAllPattern ( pattern1 ) && isNullOrCaptureAllPattern ( pattern2 ) ) {
395
395
return 0 ;
396
396
}
397
- else if (pattern1 == null ) {
397
+ else if (isNullOrCaptureAllPattern ( pattern1 ) ) {
398
398
return 1 ;
399
399
}
400
- else if (pattern2 == null ) {
400
+ else if (isNullOrCaptureAllPattern ( pattern2 ) ) {
401
401
return -1 ;
402
402
}
403
+
403
404
boolean pattern1EqualsPath = pattern1 .equals (path );
404
405
boolean pattern2EqualsPath = pattern2 .equals (path );
405
406
if (pattern1EqualsPath && pattern2EqualsPath ) {
@@ -411,6 +412,7 @@ else if (pattern1EqualsPath) {
411
412
else if (pattern2EqualsPath ) {
412
413
return 1 ;
413
414
}
415
+
414
416
int wildCardCount1 = getWildCardCount (pattern1 );
415
417
int wildCardCount2 = getWildCardCount (pattern2 );
416
418
@@ -448,6 +450,10 @@ else if (bracketCount2 < bracketCount1) {
448
450
return 0 ;
449
451
}
450
452
453
+ private boolean isNullOrCaptureAllPattern (String pattern ) {
454
+ return pattern == null || "/**" .equals (pattern );
455
+ }
456
+
451
457
private int getWildCardCount (String pattern ) {
452
458
if (pattern .endsWith (".*" )) {
453
459
pattern = pattern .substring (0 , pattern .length () - 2 );
Original file line number Diff line number Diff line change @@ -437,6 +437,11 @@ public void patternComparator() {
437
437
assertEquals (-1 , comparator .compare ("/hotels/{hotel}/booking" , "/hotels/{hotel}/bookings/{booking}" ));
438
438
assertEquals (1 , comparator .compare ("/hotels/{hotel}/bookings/{booking}" , "/hotels/{hotel}/booking" ));
439
439
440
+ //SPR-10550
441
+ assertEquals (-1 , comparator .compare ("/hotels/{hotel}/bookings/{booking}/cutomers/{customer}" , "/**" ));
442
+ assertEquals (1 , comparator .compare ("/**" ,"/hotels/{hotel}/bookings/{booking}/cutomers/{customer}" ));
443
+ assertEquals (0 , comparator .compare ("/**" ,"/**" ));
444
+
440
445
assertEquals (-1 , comparator .compare ("/hotels/{hotel}" , "/hotels/*" ));
441
446
assertEquals (1 , comparator .compare ("/hotels/*" , "/hotels/{hotel}" ));
442
447
You can’t perform that action at this time.
0 commit comments