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
This commit is contained in:
committed by
Sam Brannen
parent
5648fbfc31
commit
76beb36e4b
@@ -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();
|
||||
|
||||
|
||||
@@ -326,12 +326,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