From daee6f5bd91268ba53131e4a5ae5d1fa44c75771 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 13 May 2019 13:28:07 +0200 Subject: [PATCH] Avoid expensive assertions in web resource resolution Closes gh-22955 --- .../reactive/resource/EncodedResourceResolver.java | 6 ++++-- .../servlet/resource/EncodedResourceResolver.java | 6 ++++-- .../resource/ResourceUrlEncodingFilter.java | 14 +++++++------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/EncodedResourceResolver.java b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/EncodedResourceResolver.java index 2a9db11957..e56af08960 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/EncodedResourceResolver.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/EncodedResourceResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -172,7 +172,9 @@ public class EncodedResourceResolver extends AbstractResourceResolver { private String getExtension(String coding) { String extension = this.extensions.get(coding); - Assert.state(extension != null, () -> "No file extension associated with content coding " + coding); + if (extension == null) { + throw new IllegalStateException("No file extension associated with content coding " + coding); + } return extension; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/EncodedResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/EncodedResourceResolver.java index d1e64618e2..1a681a1af6 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/EncodedResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/EncodedResourceResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -167,7 +167,9 @@ public class EncodedResourceResolver extends AbstractResourceResolver { private String getExtension(String coding) { String extension = this.extensions.get(coding); - Assert.state(extension != null, () -> "No file extension associated with content coding " + coding); + if (extension == null) { + throw new IllegalStateException("No file extension associated with content coding " + coding); + } return extension; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java index 96578d5198..77b71215b4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java @@ -30,7 +30,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.lang.Nullable; -import org.springframework.util.Assert; import org.springframework.web.filter.GenericFilterBean; import org.springframework.web.util.UrlPathHelper; @@ -87,7 +86,6 @@ public class ResourceUrlEncodingFilter extends GenericFilterBean { initLookupPath((ResourceUrlProvider) value); } } - } private void initLookupPath(ResourceUrlProvider urlProvider) { @@ -97,10 +95,12 @@ public class ResourceUrlEncodingFilter extends GenericFilterBean { String requestUri = pathHelper.getRequestUri(this); String lookupPath = pathHelper.getLookupPathForRequest(this); this.indexLookupPath = requestUri.lastIndexOf(lookupPath); - Assert.isTrue(this.indexLookupPath != -1, () -> - "Failed to find lookupPath '" + lookupPath + "' within requestUri '" + requestUri + ". " + - "Does the path have invalid encoded characters " + - "for characterEncoding=" + getRequest().getCharacterEncoding() + "?"); + if (this.indexLookupPath == -1) { + throw new IllegalStateException( + "Failed to find lookupPath '" + lookupPath + "' within requestUri '" + requestUri + "'. " + + "Does the path have invalid encoded characters for characterEncoding '" + + getRequest().getCharacterEncoding() + "'?"); + } this.prefixLookupPath = requestUri.substring(0, this.indexLookupPath); if ("/".equals(lookupPath) && !"/".equals(requestUri)) { String contextPath = pathHelper.getContextPath(this); @@ -116,7 +116,7 @@ public class ResourceUrlEncodingFilter extends GenericFilterBean { public String resolveUrlPath(String url) { if (this.resourceUrlProvider == null) { logger.trace("ResourceUrlProvider not available via request attribute " + - "ResourceUrlProviderExposingInterceptor.RESOURCE_URL_PROVIDER_ATTR"); + ResourceUrlProviderExposingInterceptor.RESOURCE_URL_PROVIDER_ATTR); return null; } if (this.indexLookupPath != null && url.startsWith(this.prefixLookupPath)) {