Remove duplicate separators when combining paths
Prior to this commit, AntPathMatcher would not correctly combine a path
that ends with a separator with a path that starts with a separator.
For example, `/foo/` + `/bar` combined into `/foo//bar`.
Specifically, this commit:
- Removes the duplicated separator in combined paths
- Improves RequestMappingInfo's toString() representation
- Fixes Javadoc formatting in AntPathMatcher
- Polishes AntPathMatcherTests
- Polishes Javadoc in AbstractRequestCondition
Issue: SPR-12975
(cherry picked from commit a80d0e87a4)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -59,17 +59,27 @@ public abstract class AbstractRequestCondition<T extends AbstractRequestConditio
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether this condition is empty, i.e. whether or not it
|
||||
* contains any discrete items.
|
||||
* @return {@code true} if empty; {@code false} otherwise
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return getContent().isEmpty();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the discrete items a request condition is composed of.
|
||||
* For example URL patterns, HTTP request methods, param expressions, etc.
|
||||
* <p>For example URL patterns, HTTP request methods, param expressions, etc.
|
||||
* @return a collection of objects, never {@code null}
|
||||
*/
|
||||
protected abstract Collection<?> getContent();
|
||||
|
||||
/**
|
||||
* The notation to use when printing discrete items of content.
|
||||
* For example " || " for URL patterns or " && " for param expressions.
|
||||
* <p>For example {@code " || "} for URL patterns or {@code " && "}
|
||||
* for param expressions.
|
||||
*/
|
||||
protected abstract String getToStringInfix();
|
||||
|
||||
|
||||
@@ -295,12 +295,24 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder("{");
|
||||
builder.append(this.patternsCondition);
|
||||
builder.append(",methods=").append(this.methodsCondition);
|
||||
builder.append(",params=").append(this.paramsCondition);
|
||||
builder.append(",headers=").append(this.headersCondition);
|
||||
builder.append(",consumes=").append(this.consumesCondition);
|
||||
builder.append(",produces=").append(this.producesCondition);
|
||||
builder.append(",custom=").append(this.customConditionHolder);
|
||||
if (!this.methodsCondition.isEmpty()) {
|
||||
builder.append(",methods=").append(this.methodsCondition);
|
||||
}
|
||||
if (!this.paramsCondition.isEmpty()) {
|
||||
builder.append(",params=").append(this.paramsCondition);
|
||||
}
|
||||
if (!this.headersCondition.isEmpty()) {
|
||||
builder.append(",headers=").append(this.headersCondition);
|
||||
}
|
||||
if (!this.consumesCondition.isEmpty()) {
|
||||
builder.append(",consumes=").append(this.consumesCondition);
|
||||
}
|
||||
if (!this.producesCondition.isEmpty()) {
|
||||
builder.append(",produces=").append(this.producesCondition);
|
||||
}
|
||||
if (!this.customConditionHolder.isEmpty()) {
|
||||
builder.append(",custom=").append(this.customConditionHolder);
|
||||
}
|
||||
builder.append('}');
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user