Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
e8ef3654
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e8ef3654
编写于
7月 30, 2015
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Polishing
上级
04348901
变更
28
隐藏空白更改
内联
并排
Showing
28 changed file
with
132 addition
and
118 deletion
+132
-118
spring-web/src/main/java/org/springframework/http/HttpRange.java
...web/src/main/java/org/springframework/http/HttpRange.java
+0
-1
spring-web/src/main/java/org/springframework/http/client/OkHttpClientHttpRequest.java
.../springframework/http/client/OkHttpClientHttpRequest.java
+1
-2
spring-web/src/main/java/org/springframework/http/client/OkHttpClientHttpRequestFactory.java
...framework/http/client/OkHttpClientHttpRequestFactory.java
+1
-0
spring-web/src/main/java/org/springframework/http/client/OkHttpClientHttpResponse.java
...springframework/http/client/OkHttpClientHttpResponse.java
+3
-3
spring-web/src/main/java/org/springframework/http/converter/AbstractGenericHttpMessageConverter.java
...k/http/converter/AbstractGenericHttpMessageConverter.java
+3
-2
spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java
...ramework/http/converter/AbstractHttpMessageConverter.java
+1
-3
spring-web/src/main/java/org/springframework/web/bind/UnsatisfiedServletRequestParameterException.java
...web/bind/UnsatisfiedServletRequestParameterException.java
+13
-12
spring-web/src/main/java/org/springframework/web/client/AsyncRestTemplate.java
...ava/org/springframework/web/client/AsyncRestTemplate.java
+9
-4
spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
...ain/java/org/springframework/web/client/RestTemplate.java
+4
-4
spring-web/src/main/java/org/springframework/web/cors/CorsConfiguration.java
.../java/org/springframework/web/cors/CorsConfiguration.java
+52
-46
spring-web/src/main/java/org/springframework/web/cors/CorsConfigurationSource.java
...org/springframework/web/cors/CorsConfigurationSource.java
+2
-2
spring-web/src/main/java/org/springframework/web/cors/CorsProcessor.java
...main/java/org/springframework/web/cors/CorsProcessor.java
+2
-3
spring-web/src/main/java/org/springframework/web/cors/CorsUtils.java
...src/main/java/org/springframework/web/cors/CorsUtils.java
+2
-2
spring-web/src/main/java/org/springframework/web/cors/DefaultCorsProcessor.java
...va/org/springframework/web/cors/DefaultCorsProcessor.java
+2
-3
spring-web/src/main/java/org/springframework/web/cors/UrlBasedCorsConfigurationSource.java
...ngframework/web/cors/UrlBasedCorsConfigurationSource.java
+6
-6
spring-web/src/main/java/org/springframework/web/cors/package-info.java
.../main/java/org/springframework/web/cors/package-info.java
+5
-0
spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java
...g/springframework/web/filter/ShallowEtagHeaderFilter.java
+3
-7
spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java
.../annotation/AbstractNamedValueMethodArgumentResolver.java
+2
-2
spring-web/src/main/java/org/springframework/web/method/annotation/MethodArgumentConversionNotSupportedException.java
...tation/MethodArgumentConversionNotSupportedException.java
+2
-1
spring-web/src/main/java/org/springframework/web/method/annotation/MethodArgumentTypeMismatchException.java
...ethod/annotation/MethodArgumentTypeMismatchException.java
+2
-1
spring-web/src/main/java/org/springframework/web/method/support/AsyncHandlerMethodReturnValueHandler.java
.../method/support/AsyncHandlerMethodReturnValueHandler.java
+2
-2
spring-web/src/main/java/org/springframework/web/util/DefaultUriTemplateHandler.java
...g/springframework/web/util/DefaultUriTemplateHandler.java
+1
-2
spring-web/src/main/java/org/springframework/web/util/UriTemplateHandler.java
...java/org/springframework/web/util/UriTemplateHandler.java
+1
-0
spring-webmvc/src/main/java/org/springframework/web/servlet/FlashMap.java
...c/main/java/org/springframework/web/servlet/FlashMap.java
+0
-1
spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java
...framework/web/servlet/handler/AbstractHandlerMapping.java
+2
-3
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/annotation/ResponseStatusExceptionResolver.java
...rvlet/mvc/annotation/ResponseStatusExceptionResolver.java
+1
-1
spring-webmvc/src/main/java/org/springframework/web/servlet/resource/WebJarsResourceResolver.java
...amework/web/servlet/resource/WebJarsResourceResolver.java
+8
-4
spring-webmvc/src/main/java/org/springframework/web/servlet/view/script/ScriptTemplateView.java
...framework/web/servlet/view/script/ScriptTemplateView.java
+2
-1
未找到文件。
spring-web/src/main/java/org/springframework/http/HttpRange.java
浏览文件 @
e8ef3654
...
...
@@ -244,7 +244,6 @@ public abstract class HttpRange {
this
.
suffixLength
=
suffixLength
;
}
@Override
public
long
getRangeStart
(
long
length
)
{
if
(
this
.
suffixLength
<
length
)
{
...
...
spring-web/src/main/java/org/springframework/http/client/OkHttpClientHttpRequest.java
浏览文件 @
e8ef3654
...
...
@@ -117,6 +117,7 @@ class OkHttpClientHttpRequest extends AbstractBufferingAsyncClientHttpRequest
}
}
private
static
class
OkHttpListenableFuture
extends
SettableListenableFuture
<
ClientHttpResponse
>
{
private
final
Call
call
;
...
...
@@ -124,12 +125,10 @@ class OkHttpClientHttpRequest extends AbstractBufferingAsyncClientHttpRequest
public
OkHttpListenableFuture
(
Call
call
)
{
this
.
call
=
call
;
this
.
call
.
enqueue
(
new
Callback
()
{
@Override
public
void
onResponse
(
Response
response
)
{
set
(
new
OkHttpClientHttpResponse
(
response
));
}
@Override
public
void
onFailure
(
Request
request
,
IOException
ex
)
{
setException
(
ex
);
...
...
spring-web/src/main/java/org/springframework/http/client/OkHttpClientHttpRequestFactory.java
浏览文件 @
e8ef3654
...
...
@@ -112,4 +112,5 @@ public class OkHttpClientHttpRequestFactory
this
.
client
.
getDispatcher
().
getExecutorService
().
shutdown
();
}
}
}
spring-web/src/main/java/org/springframework/http/client/OkHttpClientHttpResponse.java
浏览文件 @
e8ef3654
...
...
@@ -25,8 +25,7 @@ import org.springframework.http.HttpHeaders;
import
org.springframework.util.Assert
;
/**
* {@link org.springframework.http.client.ClientHttpResponse} implementation that uses
* OkHttp.
* {@link ClientHttpResponse} implementation based on OkHttp.
*
* @author Luciano Leggieri
* @author Arjen Poutsma
...
...
@@ -80,7 +79,8 @@ class OkHttpClientHttpResponse extends AbstractClientHttpResponse {
this
.
response
.
body
().
close
();
}
catch
(
IOException
ex
)
{
//
I
gnore
//
i
gnore
}
}
}
spring-web/src/main/java/org/springframework/http/converter/AbstractGenericHttpMessageConverter.java
浏览文件 @
e8ef3654
...
...
@@ -57,6 +57,7 @@ public abstract class AbstractGenericHttpMessageConverter<T> extends AbstractHtt
super
(
supportedMediaTypes
);
}
@Override
public
boolean
canRead
(
Type
type
,
Class
<?>
contextClass
,
MediaType
mediaType
)
{
return
canRead
(
contextClass
,
mediaType
);
...
...
@@ -78,8 +79,7 @@ public abstract class AbstractGenericHttpMessageConverter<T> extends AbstractHtt
addDefaultHeaders
(
headers
,
t
,
contentType
);
if
(
outputMessage
instanceof
StreamingHttpOutputMessage
)
{
StreamingHttpOutputMessage
streamingOutputMessage
=
(
StreamingHttpOutputMessage
)
outputMessage
;
StreamingHttpOutputMessage
streamingOutputMessage
=
(
StreamingHttpOutputMessage
)
outputMessage
;
streamingOutputMessage
.
setBody
(
new
StreamingHttpOutputMessage
.
Body
()
{
@Override
public
void
writeTo
(
final
OutputStream
outputStream
)
throws
IOException
{
...
...
@@ -106,6 +106,7 @@ public abstract class AbstractGenericHttpMessageConverter<T> extends AbstractHtt
@Override
protected
void
writeInternal
(
T
t
,
HttpOutputMessage
outputMessage
)
throws
IOException
,
HttpMessageNotWritableException
{
writeInternal
(
t
,
null
,
outputMessage
);
}
...
...
spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java
浏览文件 @
e8ef3654
...
...
@@ -201,9 +201,7 @@ public abstract class AbstractHttpMessageConverter<T> implements HttpMessageConv
* type was not provided, calls {@link #getContentLength}, and sets the corresponding headers
* @since 4.2
*/
protected
void
addDefaultHeaders
(
final
HttpHeaders
headers
,
final
T
t
,
MediaType
contentType
)
throws
IOException
{
protected
void
addDefaultHeaders
(
HttpHeaders
headers
,
T
t
,
MediaType
contentType
)
throws
IOException
{
if
(
headers
.
getContentType
()
==
null
)
{
MediaType
contentTypeToUse
=
contentType
;
if
(
contentType
==
null
||
contentType
.
isWildcardType
()
||
contentType
.
isWildcardSubtype
())
{
...
...
spring-web/src/main/java/org/springframework/web/bind/UnsatisfiedServletRequestParameterException.java
浏览文件 @
e8ef3654
...
...
@@ -88,18 +88,6 @@ public class UnsatisfiedServletRequestParameterException extends ServletRequestB
return
sb
.
toString
();
}
private
static
String
requestParameterMapToString
(
Map
<
String
,
String
[]>
actualParams
)
{
StringBuilder
result
=
new
StringBuilder
();
for
(
Iterator
<
Map
.
Entry
<
String
,
String
[]>>
it
=
actualParams
.
entrySet
().
iterator
();
it
.
hasNext
();)
{
Map
.
Entry
<
String
,
String
[]>
entry
=
it
.
next
();
result
.
append
(
entry
.
getKey
()).
append
(
'='
).
append
(
ObjectUtils
.
nullSafeToString
(
entry
.
getValue
()));
if
(
it
.
hasNext
())
{
result
.
append
(
", "
);
}
}
return
result
.
toString
();
}
/**
* Return the parameter conditions that have been violated or the first group
* in case of multiple groups.
...
...
@@ -126,4 +114,17 @@ public class UnsatisfiedServletRequestParameterException extends ServletRequestB
return
this
.
actualParams
;
}
private
static
String
requestParameterMapToString
(
Map
<
String
,
String
[]>
actualParams
)
{
StringBuilder
result
=
new
StringBuilder
();
for
(
Iterator
<
Map
.
Entry
<
String
,
String
[]>>
it
=
actualParams
.
entrySet
().
iterator
();
it
.
hasNext
();)
{
Map
.
Entry
<
String
,
String
[]>
entry
=
it
.
next
();
result
.
append
(
entry
.
getKey
()).
append
(
'='
).
append
(
ObjectUtils
.
nullSafeToString
(
entry
.
getValue
()));
if
(
it
.
hasNext
())
{
result
.
append
(
", "
);
}
}
return
result
.
toString
();
}
}
spring-web/src/main/java/org/springframework/web/client/AsyncRestTemplate.java
浏览文件 @
e8ef3654
...
...
@@ -116,7 +116,9 @@ public class AsyncRestTemplate extends AsyncHttpAccessor implements AsyncRestOpe
* @param asyncRequestFactory the asynchronous request factory
* @param syncRequestFactory the synchronous request factory
*/
public
AsyncRestTemplate
(
AsyncClientHttpRequestFactory
asyncRequestFactory
,
ClientHttpRequestFactory
syncRequestFactory
)
{
public
AsyncRestTemplate
(
AsyncClientHttpRequestFactory
asyncRequestFactory
,
ClientHttpRequestFactory
syncRequestFactory
)
{
this
(
asyncRequestFactory
,
new
RestTemplate
(
syncRequestFactory
));
}
...
...
@@ -127,7 +129,7 @@ public class AsyncRestTemplate extends AsyncHttpAccessor implements AsyncRestOpe
* @param restTemplate the synchronous template to use
*/
public
AsyncRestTemplate
(
AsyncClientHttpRequestFactory
requestFactory
,
RestTemplate
restTemplate
)
{
Assert
.
notNull
(
restTemplate
,
"
'restTemplate'
must not be null"
);
Assert
.
notNull
(
restTemplate
,
"
RestTemplate
must not be null"
);
this
.
syncTemplate
=
restTemplate
;
setAsyncRequestFactory
(
requestFactory
);
}
...
...
@@ -142,7 +144,9 @@ public class AsyncRestTemplate extends AsyncHttpAccessor implements AsyncRestOpe
this
.
syncTemplate
.
setErrorHandler
(
errorHandler
);
}
/** Return the error handler. */
/**
* Return the error handler.
*/
public
ResponseErrorHandler
getErrorHandler
()
{
return
this
.
syncTemplate
.
getErrorHandler
();
}
...
...
@@ -180,7 +184,7 @@ public class AsyncRestTemplate extends AsyncHttpAccessor implements AsyncRestOpe
* Return the message body converters.
*/
public
List
<
HttpMessageConverter
<?>>
getMessageConverters
()
{
return
syncTemplate
.
getMessageConverters
();
return
this
.
syncTemplate
.
getMessageConverters
();
}
...
...
@@ -232,6 +236,7 @@ public class AsyncRestTemplate extends AsyncHttpAccessor implements AsyncRestOpe
return
execute
(
url
,
HttpMethod
.
HEAD
,
null
,
headersExtractor
);
}
// POST
@Override
...
...
spring-web/src/main/java/org/springframework/web/client/RestTemplate.java
浏览文件 @
e8ef3654
...
...
@@ -190,7 +190,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
* @since 3.2.7
*/
public
RestTemplate
(
List
<
HttpMessageConverter
<?>>
messageConverters
)
{
Assert
.
notEmpty
(
messageConverters
,
"
'messageConverters' must not be empty
"
);
Assert
.
notEmpty
(
messageConverters
,
"
At least one HttpMessageConverter required
"
);
this
.
messageConverters
.
addAll
(
messageConverters
);
}
...
...
@@ -200,7 +200,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
* <p>These converters are used to convert from and to HTTP requests and responses.
*/
public
void
setMessageConverters
(
List
<
HttpMessageConverter
<?>>
messageConverters
)
{
Assert
.
notEmpty
(
messageConverters
,
"
'messageConverters' must not be empty
"
);
Assert
.
notEmpty
(
messageConverters
,
"
At least one HttpMessageConverter required
"
);
// Take getMessageConverters() List as-is when passed in here
if
(
this
.
messageConverters
!=
messageConverters
)
{
this
.
messageConverters
.
clear
();
...
...
@@ -220,7 +220,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
* <p>By default, RestTemplate uses a {@link DefaultResponseErrorHandler}.
*/
public
void
setErrorHandler
(
ResponseErrorHandler
errorHandler
)
{
Assert
.
notNull
(
errorHandler
,
"
'errorHandler'
must not be null"
);
Assert
.
notNull
(
errorHandler
,
"
ResponseErrorHandler
must not be null"
);
this
.
errorHandler
=
errorHandler
;
}
...
...
@@ -237,7 +237,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
* @param handler the URI template handler to use
*/
public
void
setUriTemplateHandler
(
UriTemplateHandler
handler
)
{
Assert
.
notNull
(
handler
,
"
'uriTemplateHandler' is required.
"
);
Assert
.
notNull
(
handler
,
"
UriTemplateHandler must not be null
"
);
this
.
uriTemplateHandler
=
handler
;
}
...
...
spring-web/src/main/java/org/springframework/web/cors/CorsConfiguration.java
浏览文件 @
e8ef3654
...
...
@@ -74,6 +74,7 @@ public class CorsConfiguration {
this
.
maxAge
=
other
.
maxAge
;
}
/**
* Combine the supplied {@code CorsConfiguration} with this one.
* <p>Properties of this configuration are overridden by any non-null
...
...
@@ -113,13 +114,23 @@ public class CorsConfiguration {
return
combined
;
}
/**
* Set the origins to allow, e.g. {@code "http://domain1.com"}.
* <p>The special value {@code "*"} allows all domains.
* <p>By default this is not set.
*/
public
void
setAllowedOrigins
(
List
<
String
>
allowedOrigins
)
{
this
.
allowedOrigins
=
(
allowedOrigins
==
null
?
null
:
new
ArrayList
<
String
>(
allowedOrigins
));
this
.
allowedOrigins
=
(
allowedOrigins
!=
null
?
new
ArrayList
<
String
>(
allowedOrigins
)
:
null
);
}
/**
* Return the configured origins to allow, possibly {@code null}.
* @see #addAllowedOrigin(String)
* @see #setAllowedOrigins(List)
*/
public
List
<
String
>
getAllowedOrigins
()
{
return
this
.
allowedOrigins
;
}
/**
...
...
@@ -132,15 +143,6 @@ public class CorsConfiguration {
this
.
allowedOrigins
.
add
(
origin
);
}
/**
* Return the configured origins to allow, possibly {@code null}.
* @see #addAllowedOrigin(String)
* @see #setAllowedOrigins(List)
*/
public
List
<
String
>
getAllowedOrigins
()
{
return
this
.
allowedOrigins
;
}
/**
* Set the HTTP methods to allow, e.g. {@code "GET"}, {@code "POST"},
* {@code "PUT"}, etc.
...
...
@@ -149,7 +151,18 @@ public class CorsConfiguration {
* <p>By default this is not set.
*/
public
void
setAllowedMethods
(
List
<
String
>
allowedMethods
)
{
this
.
allowedMethods
=
(
allowedMethods
==
null
?
null
:
new
ArrayList
<
String
>(
allowedMethods
));
this
.
allowedMethods
=
(
allowedMethods
!=
null
?
new
ArrayList
<
String
>(
allowedMethods
)
:
null
);
}
/**
* Return the allowed HTTP methods, possibly {@code null} in which case
* only {@code "GET"} is allowed.
* @see #addAllowedMethod(HttpMethod)
* @see #addAllowedMethod(String)
* @see #setAllowedMethods(List)
*/
public
List
<
String
>
getAllowedMethods
()
{
return
this
.
allowedMethods
;
}
/**
...
...
@@ -173,17 +186,6 @@ public class CorsConfiguration {
}
}
/**
* Return the allowed HTTP methods, possibly {@code null} in which case
* only {@code "GET"} is allowed.
* @see #addAllowedMethod(HttpMethod)
* @see #addAllowedMethod(String)
* @see #setAllowedMethods(List)
*/
public
List
<
String
>
getAllowedMethods
()
{
return
this
.
allowedMethods
;
}
/**
* Set the list of headers that a pre-flight request can list as allowed
* for use during an actual request.
...
...
@@ -195,7 +197,16 @@ public class CorsConfiguration {
* <p>By default this is not set.
*/
public
void
setAllowedHeaders
(
List
<
String
>
allowedHeaders
)
{
this
.
allowedHeaders
=
(
allowedHeaders
==
null
?
null
:
new
ArrayList
<
String
>(
allowedHeaders
));
this
.
allowedHeaders
=
(
allowedHeaders
!=
null
?
new
ArrayList
<
String
>(
allowedHeaders
)
:
null
);
}
/**
* Return the allowed actual request headers, possibly {@code null}.
* @see #addAllowedHeader(String)
* @see #setAllowedHeaders(List)
*/
public
List
<
String
>
getAllowedHeaders
()
{
return
this
.
allowedHeaders
;
}
/**
...
...
@@ -208,15 +219,6 @@ public class CorsConfiguration {
this
.
allowedHeaders
.
add
(
allowedHeader
);
}
/**
* Return the allowed actual request headers, possibly {@code null}.
* @see #addAllowedHeader(String)
* @see #setAllowedHeaders(List)
*/
public
List
<
String
>
getAllowedHeaders
()
{
return
this
.
allowedHeaders
;
}
/**
* Set the list of response headers other than simple headers (i.e.
* {@code Cache-Control}, {@code Content-Language}, {@code Content-Type},
...
...
@@ -232,6 +234,15 @@ public class CorsConfiguration {
this
.
exposedHeaders
=
(
exposedHeaders
==
null
?
null
:
new
ArrayList
<
String
>(
exposedHeaders
));
}
/**
* Return the configured response headers to expose, possibly {@code null}.
* @see #addExposedHeader(String)
* @see #setExposedHeaders(List)
*/
public
List
<
String
>
getExposedHeaders
()
{
return
this
.
exposedHeaders
;
}
/**
* Add a response header to expose.
* <p>Note that {@code "*"} is not a valid exposed header value.
...
...
@@ -246,15 +257,6 @@ public class CorsConfiguration {
this
.
exposedHeaders
.
add
(
exposedHeader
);
}
/**
* Return the configured response headers to expose, possibly {@code null}.
* @see #addExposedHeader(String)
* @see #setExposedHeaders(List)
*/
public
List
<
String
>
getExposedHeaders
()
{
return
this
.
exposedHeaders
;
}
/**
* Whether user credentials are supported.
* <p>By default this is not set (i.e. user credentials are not supported).
...
...
@@ -285,9 +287,10 @@ public class CorsConfiguration {
* @see #setMaxAge(Long)
*/
public
Long
getMaxAge
()
{
return
maxAge
;
return
this
.
maxAge
;
}
/**
* Check the origin of the request against the configured allowed origins.
* @param requestOrigin the origin to check
...
...
@@ -303,9 +306,10 @@ public class CorsConfiguration {
}
if
(
this
.
allowedOrigins
.
contains
(
ALL
))
{
if
(
(
this
.
allowCredentials
==
null
)
||
!
this
.
allowCredentials
.
booleanValue
()
)
{
if
(
this
.
allowCredentials
!=
Boolean
.
TRUE
)
{
return
ALL
;
}
else
{
}
else
{
return
requestOrigin
;
}
}
...
...
@@ -314,6 +318,7 @@ public class CorsConfiguration {
return
requestOrigin
;
}
}
return
null
;
}
...
...
@@ -329,9 +334,10 @@ public class CorsConfiguration {
if
(
requestMethod
==
null
)
{
return
null
;
}
List
<
String
>
allowedMethods
=
(
this
.
allowedMethods
==
null
?
new
ArrayList
<
String
>()
:
this
.
allowedMethods
);
List
<
String
>
allowedMethods
=
(
this
.
allowedMethods
!=
null
?
this
.
allowedMethods
:
new
ArrayList
<
String
>());
if
(
allowedMethods
.
contains
(
ALL
))
{
return
Arrays
.
as
List
(
requestMethod
);
return
Collections
.
singleton
List
(
requestMethod
);
}
if
(
allowedMethods
.
isEmpty
())
{
allowedMethods
.
add
(
HttpMethod
.
GET
.
name
());
...
...
spring-web/src/main/java/org/springframework/web/cors/CorsConfigurationSource.java
浏览文件 @
e8ef3654
...
...
@@ -19,8 +19,8 @@ package org.springframework.web.cors;
import
javax.servlet.http.HttpServletRequest
;
/**
* Interface to be implemented by classes (usually HTTP request handlers) that
provides
* a {@link CorsConfiguration} instance based on the provided request.
* Interface to be implemented by classes (usually HTTP request handlers) that
*
provides
a {@link CorsConfiguration} instance based on the provided request.
*
* @author Sebastien Deleuze
* @since 4.2
...
...
spring-web/src/main/java/org/springframework/web/cors/CorsProcessor.java
浏览文件 @
e8ef3654
...
...
@@ -39,11 +39,10 @@ public interface CorsProcessor {
/**
* Process a request given a {@code CorsConfiguration}.
*
* @param configuration the applicable CORS configuration, possibly {@code null}
* @param configuration the applicable CORS configuration (possibly {@code null})
* @param request the current request
* @param response the current response
* @return {@code false} if the request is rejected,
else {@code true}.
* @return {@code false} if the request is rejected,
{@code true} otherwise
*/
boolean
processRequest
(
CorsConfiguration
configuration
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
;
...
...
spring-web/src/main/java/org/springframework/web/cors/CorsUtils.java
浏览文件 @
e8ef3654
...
...
@@ -41,8 +41,8 @@ public class CorsUtils {
* Returns {@code true} if the request is a valid CORS pre-flight one.
*/
public
static
boolean
isPreFlightRequest
(
HttpServletRequest
request
)
{
return
(
isCorsRequest
(
request
)
&&
request
.
getMethod
().
equals
(
HttpMethod
.
OPTIONS
.
name
())
&&
request
.
getHeader
(
HttpHeaders
.
ACCESS_CONTROL_REQUEST_METHOD
)
!=
null
);
return
(
isCorsRequest
(
request
)
&&
request
.
getMethod
().
equals
(
HttpMethod
.
OPTIONS
.
name
())
&&
request
.
getHeader
(
HttpHeaders
.
ACCESS_CONTROL_REQUEST_METHOD
)
!=
null
);
}
}
spring-web/src/main/java/org/springframework/web/cors/DefaultCorsProcessor.java
浏览文件 @
e8ef3654
...
...
@@ -20,7 +20,6 @@ import java.io.IOException;
import
java.nio.charset.Charset
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -59,8 +58,8 @@ public class DefaultCorsProcessor implements CorsProcessor {
@Override
public
boolean
processRequest
(
CorsConfiguration
config
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
{
public
boolean
processRequest
(
CorsConfiguration
config
,
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
{
if
(!
CorsUtils
.
isCorsRequest
(
request
))
{
return
true
;
...
...
spring-web/src/main/java/org/springframework/web/cors/UrlBasedCorsConfigurationSource.java
浏览文件 @
e8ef3654
...
...
@@ -27,19 +27,18 @@ import org.springframework.util.PathMatcher;
import
org.springframework.web.util.UrlPathHelper
;
/**
* Provide a per request {@link CorsConfiguration} instance based on a
collection of
* {@link CorsConfiguration} mapped on path patterns.
* Provide a per request {@link CorsConfiguration} instance based on a
*
collection of
{@link CorsConfiguration} mapped on path patterns.
*
* <p>Exact path mapping URIs (such as {@code "/admin"}) are supported
as
* well as Ant-style path patterns (such as {@code "/admin/**"}).
* <p>Exact path mapping URIs (such as {@code "/admin"}) are supported
*
as
well as Ant-style path patterns (such as {@code "/admin/**"}).
*
* @author Sebastien Deleuze
* @since 4.2
*/
public
class
UrlBasedCorsConfigurationSource
implements
CorsConfigurationSource
{
private
final
Map
<
String
,
CorsConfiguration
>
corsConfigurations
=
new
LinkedHashMap
<
String
,
CorsConfiguration
>();
private
final
Map
<
String
,
CorsConfiguration
>
corsConfigurations
=
new
LinkedHashMap
<
String
,
CorsConfiguration
>();
private
PathMatcher
pathMatcher
=
new
AntPathMatcher
();
...
...
@@ -120,6 +119,7 @@ public class UrlBasedCorsConfigurationSource implements CorsConfigurationSource
this
.
corsConfigurations
.
put
(
path
,
config
);
}
@Override
public
CorsConfiguration
getCorsConfiguration
(
HttpServletRequest
request
)
{
String
lookupPath
=
this
.
urlPathHelper
.
getLookupPathForRequest
(
request
);
...
...
spring-web/src/main/java/org/springframework/web/cors/package-info.java
0 → 100644
浏览文件 @
e8ef3654
/**
* Support for CORS (Cross-Origin Resource Sharing),
* based on a common {@code CorsProcessor} strategy.
*/
package
org.springframework.web.cors
;
spring-web/src/main/java/org/springframework/web/filter/ShallowEtagHeaderFilter.java
浏览文件 @
e8ef3654
...
...
@@ -19,7 +19,6 @@ package org.springframework.web.filter;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.PrintWriter
;
import
javax.servlet.FilterChain
;
import
javax.servlet.ServletException
;
import
javax.servlet.ServletOutputStream
;
...
...
@@ -144,8 +143,7 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
protected
boolean
isEligibleForEtag
(
HttpServletRequest
request
,
HttpServletResponse
response
,
int
responseStatusCode
,
InputStream
inputStream
)
{
if
(
responseStatusCode
>=
200
&&
responseStatusCode
<
300
&&
HttpMethod
.
GET
.
name
().
equals
(
request
.
getMethod
()))
{
if
(
responseStatusCode
>=
200
&&
responseStatusCode
<
300
&&
HttpMethod
.
GET
.
name
().
equals
(
request
.
getMethod
()))
{
String
cacheControl
=
(
responseGetHeaderAvailable
?
response
.
getHeader
(
HEADER_CACHE_CONTROL
)
:
null
);
if
(
cacheControl
==
null
||
!
cacheControl
.
contains
(
DIRECTIVE_NO_STORE
))
{
return
true
;
...
...
@@ -173,6 +171,7 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
return
builder
.
toString
();
}
/**
* This method can be used to disable the content caching response wrapper
* of the ShallowEtagHeaderFilter. This can be done before the start of HTTP
...
...
@@ -194,10 +193,7 @@ public class ShallowEtagHeaderFilter extends OncePerRequestFilter {
private
final
HttpServletRequest
request
;
public
HttpStreamingAwareContentCachingResponseWrapper
(
HttpServletResponse
response
,
HttpServletRequest
request
)
{
public
HttpStreamingAwareContentCachingResponseWrapper
(
HttpServletResponse
response
,
HttpServletRequest
request
)
{
super
(
response
);
this
.
request
=
request
;
}
...
...
spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java
浏览文件 @
e8ef3654
...
...
@@ -108,11 +108,11 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
}
catch
(
ConversionNotSupportedException
ex
)
{
throw
new
MethodArgumentConversionNotSupportedException
(
arg
,
ex
.
getRequiredType
(),
ex
.
getCause
(),
namedValueInfo
.
name
,
parameter
);
namedValueInfo
.
name
,
parameter
,
ex
.
getCause
()
);
}
catch
(
TypeMismatchException
ex
)
{
throw
new
MethodArgumentTypeMismatchException
(
arg
,
ex
.
getRequiredType
(),
ex
.
getCause
(),
namedValueInfo
.
name
,
parameter
);
namedValueInfo
.
name
,
parameter
,
ex
.
getCause
()
);
}
}
...
...
spring-web/src/main/java/org/springframework/web/method/annotation/MethodArgumentConversionNotSupportedException.java
浏览文件 @
e8ef3654
...
...
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.springframework.web.method.annotation
;
import
org.springframework.beans.ConversionNotSupportedException
;
...
...
@@ -35,7 +36,7 @@ public class MethodArgumentConversionNotSupportedException extends ConversionNot
public
MethodArgumentConversionNotSupportedException
(
Object
value
,
Class
<?>
requiredType
,
Throwable
cause
,
String
name
,
MethodParameter
param
)
{
String
name
,
MethodParameter
param
,
Throwable
cause
)
{
super
(
value
,
requiredType
,
cause
);
this
.
name
=
name
;
...
...
spring-web/src/main/java/org/springframework/web/method/annotation/MethodArgumentTypeMismatchException.java
浏览文件 @
e8ef3654
...
...
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.springframework.web.method.annotation
;
import
org.springframework.beans.TypeMismatchException
;
...
...
@@ -35,7 +36,7 @@ public class MethodArgumentTypeMismatchException extends TypeMismatchException {
public
MethodArgumentTypeMismatchException
(
Object
value
,
Class
<?>
requiredType
,
Throwable
cause
,
String
name
,
MethodParameter
param
)
{
String
name
,
MethodParameter
param
,
Throwable
cause
)
{
super
(
value
,
requiredType
,
cause
);
this
.
name
=
name
;
...
...
spring-web/src/main/java/org/springframework/web/method/support/AsyncHandlerMethodReturnValueHandler.java
浏览文件 @
e8ef3654
...
...
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.springframework.web.method.support
;
import
org.springframework.core.MethodParameter
;
...
...
@@ -21,7 +22,7 @@ import org.springframework.core.MethodParameter;
* A {@link HandlerMethodReturnValueHandler} that handles return values that
* represent asynchronous computation. Such handlers need to be invoked with
* precedence over other handlers that might otherwise match the return value
* type
--
e.g. a method that returns a Promise type that is also annotated with
* type
:
e.g. a method that returns a Promise type that is also annotated with
* {@code @ResponseBody}.
*
* <p>In {@link #handleReturnValue}, implementations of this class should create
...
...
@@ -32,7 +33,6 @@ import org.springframework.core.MethodParameter;
* DeferredResult<?> deferredResult = (DeferredResult<?>) returnValue;
* WebAsyncUtils.getAsyncManager(webRequest).startDeferredResultProcessing(deferredResult, mavContainer);
* </pre>
* the return value to a DeferredResult
*
* @author Rossen Stoyanchev
* @since 4.2
...
...
spring-web/src/main/java/org/springframework/web/util/DefaultUriTemplateHandler.java
浏览文件 @
e8ef3654
...
...
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.springframework.web.util
;
import
java.net.URI
;
...
...
@@ -41,12 +42,10 @@ public class DefaultUriTemplateHandler implements UriTemplateHandler {
* have a scheme and host but may also contain a port and a partial path.
* Individual URI templates then may provide the remaining part of the URL
* including additional path, query and fragment.
*
* <p><strong>Note: </strong>Individual URI templates are expanded and
* encoded before being appended to the base URL. Therefore the base URL is
* expected to be fully expanded and encoded, which can be done with the help
* of {@link UriComponentsBuilder}.
*
* @param baseUrl the base URL.
*/
public
void
setBaseUrl
(
String
baseUrl
)
{
...
...
spring-web/src/main/java/org/springframework/web/util/UriTemplateHandler.java
浏览文件 @
e8ef3654
...
...
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.springframework.web.util
;
import
java.net.URI
;
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/FlashMap.java
浏览文件 @
e8ef3654
...
...
@@ -23,7 +23,6 @@ import org.springframework.util.MultiValueMap;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StringUtils
;
/**
* A FlashMap provides a way for one request to store attributes intended for
* use in another. This is most commonly needed when redirecting from one URL
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java
浏览文件 @
e8ef3654
...
...
@@ -360,6 +360,7 @@ public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport
String
handlerName
=
(
String
)
handler
;
handler
=
getApplicationContext
().
getBean
(
handlerName
);
}
HandlerExecutionChain
executionChain
=
getHandlerExecutionChain
(
handler
,
request
);
if
(
CorsUtils
.
isCorsRequest
(
request
))
{
CorsConfiguration
globalConfig
=
this
.
corsConfigSource
.
getCorsConfiguration
(
request
);
...
...
@@ -374,17 +375,14 @@ public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport
* Look up a handler for the given request, returning {@code null} if no
* specific one is found. This method is called by {@link #getHandler};
* a {@code null} return value will lead to the default handler, if one is set.
*
* <p>On CORS pre-flight requests this method should return a match not for
* the pre-flight request but for the expected actual request based on the URL
* path, the HTTP methods from the "Access-Control-Request-Method" header, and
* the headers from the "Access-Control-Request-Headers" header thus allowing
* the CORS configuration to be obtained via {@link #getCorsConfigurations},
*
* <p>Note: This method may also return a pre-built {@link HandlerExecutionChain},
* combining a handler object with dynamically determined interceptors.
* Statically specified interceptors will get merged into such an existing chain.
*
* @param request current HTTP request
* @return the corresponding handler instance, or {@code null} if none found
* @throws Exception if there is an internal error
...
...
@@ -489,6 +487,7 @@ public abstract class AbstractHandlerMapping extends WebApplicationObjectSupport
}
}
private
class
CorsInterceptor
extends
HandlerInterceptorAdapter
{
private
final
CorsConfiguration
config
;
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/annotation/ResponseStatusExceptionResolver.java
浏览文件 @
e8ef3654
...
...
@@ -68,7 +68,7 @@ public class ResponseStatusExceptionResolver extends AbstractHandlerExceptionRes
logger
.
warn
(
"Handling of @ResponseStatus resulted in Exception"
,
resolveEx
);
}
}
else
if
(
ex
.
getCause
()
!=
null
&&
ex
.
getCause
()
instanceof
Exception
)
{
else
if
(
ex
.
getCause
()
instanceof
Exception
)
{
ex
=
(
Exception
)
ex
.
getCause
();
return
doResolveException
(
request
,
response
,
handler
,
ex
);
}
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/resource/WebJarsResourceResolver.java
浏览文件 @
e8ef3654
...
...
@@ -17,7 +17,6 @@
package
org.springframework.web.servlet.resource
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
org.webjars.MultipleMatchesException
;
...
...
@@ -52,10 +51,12 @@ public class WebJarsResourceResolver extends AbstractResourceResolver {
private
final
WebJarAssetLocator
webJarAssetLocator
;
public
WebJarsResourceResolver
()
{
this
.
webJarAssetLocator
=
new
WebJarAssetLocator
();
}
@Override
protected
Resource
resolveResourceInternal
(
HttpServletRequest
request
,
String
requestPath
,
List
<?
extends
Resource
>
locations
,
ResourceResolverChain
chain
)
{
...
...
@@ -86,7 +87,7 @@ public class WebJarsResourceResolver extends AbstractResourceResolver {
protected
String
findWebJarResourcePath
(
String
path
)
{
try
{
int
startOffset
=
path
.
startsWith
(
"/"
)
?
1
:
0
;
int
startOffset
=
(
path
.
startsWith
(
"/"
)
?
1
:
0
)
;
int
endOffset
=
path
.
indexOf
(
"/"
,
1
);
if
(
endOffset
!=
-
1
)
{
String
webjar
=
path
.
substring
(
startOffset
,
endOffset
);
...
...
@@ -94,8 +95,11 @@ public class WebJarsResourceResolver extends AbstractResourceResolver {
String
webJarPath
=
webJarAssetLocator
.
getFullPath
(
webjar
,
partialPath
);
return
webJarPath
.
substring
(
WEBJARS_LOCATION_LENGTH
);
}
}
catch
(
MultipleMatchesException
ex
)
{
logger
.
warn
(
"WebJar version conflict for \""
+
path
+
"\""
,
ex
);
}
catch
(
MultipleMatchesException
ex
)
{
if
(
logger
.
isWarnEnabled
())
{
logger
.
warn
(
"WebJar version conflict for \""
+
path
+
"\""
,
ex
);
}
}
catch
(
IllegalArgumentException
ex
)
{
if
(
logger
.
isTraceEnabled
())
{
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/view/script/ScriptTemplateView.java
浏览文件 @
e8ef3654
...
...
@@ -266,7 +266,8 @@ public class ScriptTemplateView extends AbstractUrlBasedView {
protected
ScriptTemplateConfig
autodetectViewConfig
()
throws
BeansException
{
try
{
return
BeanFactoryUtils
.
beanOfTypeIncludingAncestors
(
getApplicationContext
(),
ScriptTemplateConfig
.
class
,
true
,
false
);
return
BeanFactoryUtils
.
beanOfTypeIncludingAncestors
(
getApplicationContext
(),
ScriptTemplateConfig
.
class
,
true
,
false
);
}
catch
(
NoSuchBeanDefinitionException
ex
)
{
throw
new
ApplicationContextException
(
"Expected a single ScriptTemplateConfig bean in the current "
+
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录