@ -87,32 +87,43 @@ public final class RequestMethodsRequestCondition extends AbstractRequestConditi
}
/ * *
* Checks if any of the HTTP request methods match the given request and returns
* an instance that contains the matching request method only .
* Check if any of the HTTP request methods match the given request and
* return an instance that contains the matching HTTP request method only .
*
* @param request the current request
* @return the same instance if the condition contains no request method ;
* or a new condition with the matching request method ;
* or { @code null } if no request methods match .
* @return the same instance if the condition is empty , a new condition with
* the matched request method , or { @code null } if no request methods match
* /
public RequestMethodsRequestCondition getMatchingCondition ( HttpServletRequest request ) {
if ( methods . isEmpty ( ) ) {
if ( this . methods . isEmpty ( ) ) {
return this ;
}
RequestMethod incomingRequestMethod = RequestMethod . valueOf ( request . getMethod ( ) ) ;
for ( RequestMethod method : methods ) {
if ( method . equals ( incomingRequestMethod ) ) {
return new RequestMethodsRequestCondition ( method ) ;
RequestMethod incomingRequestMethod = getRequestMethod ( request ) ;
if ( incomingRequestMethod ! = null ) {
for ( RequestMethod method : this . methods ) {
if ( method . equals ( incomingRequestMethod ) ) {
return new RequestMethodsRequestCondition ( method ) ;
}
}
}
return null ;
}
private RequestMethod getRequestMethod ( HttpServletRequest request ) {
try {
return RequestMethod . valueOf ( request . getMethod ( ) ) ;
}
catch ( IllegalArgumentException e ) {
return null ;
}
}
/ * *
* Returns :
* < ul >
* < li > 0 if the two conditions contain the same number of HTTP request methods .
* < li > Less than 0 if "this" instance has an HTTP request method but "other" doesn ' t .
* < li > Greater than 0 "other" has an HTTP request method but "this" doesn ' t .
* < li > 0 if the two conditions contain the same number of HTTP request methods
* < li > Less than 0 if "this" instance has an HTTP request method but "other" doesn ' t
* < li > Greater than 0 "other" has an HTTP request method but "this" doesn ' t
* < / ul >
*
* < p > It is assumed that both instances have been obtained via