Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
40148c05
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 搜索 >>
提交
40148c05
编写于
11月 12, 2018
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Consistent use of ResolvableType.toClass() for assignability checks
Issue: SPR-17086
上级
3a66927b
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
64 addition
and
94 deletion
+64
-94
spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java
...ork/beans/factory/support/DefaultListableBeanFactory.java
+4
-6
spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java
...ework/context/event/ApplicationListenerMethodAdapter.java
+5
-7
spring-core/src/main/java/org/springframework/core/codec/ByteArrayDecoder.java
...java/org/springframework/core/codec/ByteArrayDecoder.java
+1
-3
spring-core/src/main/java/org/springframework/core/codec/ByteBufferDecoder.java
...ava/org/springframework/core/codec/ByteBufferDecoder.java
+2
-3
spring-core/src/main/java/org/springframework/core/codec/DataBufferDecoder.java
...ava/org/springframework/core/codec/DataBufferDecoder.java
+2
-4
spring-core/src/main/java/org/springframework/core/codec/ResourceDecoder.java
.../java/org/springframework/core/codec/ResourceDecoder.java
+4
-8
spring-core/src/main/java/org/springframework/core/codec/StringDecoder.java
...in/java/org/springframework/core/codec/StringDecoder.java
+2
-3
spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageWriter.java
...org/springframework/http/codec/FormHttpMessageWriter.java
+1
-2
spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java
...ramework/http/codec/ServerSentEventHttpMessageReader.java
+6
-7
spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageWriter.java
...ramework/http/codec/ServerSentEventHttpMessageWriter.java
+1
-2
spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java
...work/http/codec/multipart/MultipartHttpMessageWriter.java
+3
-4
spring-web/src/main/java/org/springframework/http/codec/protobuf/ProtobufDecoder.java
.../springframework/http/codec/protobuf/ProtobufDecoder.java
+2
-4
spring-web/src/main/java/org/springframework/http/codec/xml/Jaxb2XmlDecoder.java
...a/org/springframework/http/codec/xml/Jaxb2XmlDecoder.java
+5
-6
spring-web/src/main/java/org/springframework/http/codec/xml/Jaxb2XmlEncoder.java
...a/org/springframework/http/codec/xml/Jaxb2XmlEncoder.java
+2
-3
spring-webflux/src/main/java/org/springframework/web/reactive/result/HandlerResultHandlerSupport.java
...work/web/reactive/result/HandlerResultHandlerSupport.java
+4
-6
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractMessageWriterResultHandler.java
...method/annotation/AbstractMessageWriterResultHandler.java
+4
-5
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/MatrixVariableMapMethodArgumentResolver.java
...d/annotation/MatrixVariableMapMethodArgumentResolver.java
+1
-2
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelAttributeMethodArgumentResolver.java
...thod/annotation/ModelAttributeMethodArgumentResolver.java
+1
-3
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelInitializer.java
...b/reactive/result/method/annotation/ModelInitializer.java
+2
-2
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandler.java
...result/method/annotation/ResponseEntityResultHandler.java
+2
-2
spring-webflux/src/main/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandler.java
...web/reactive/result/view/ViewResolutionResultHandler.java
+9
-10
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMapMethodArgumentResolver.java
...d/annotation/MatrixVariableMapMethodArgumentResolver.java
+1
-2
未找到文件。
spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java
浏览文件 @
40148c05
...
@@ -1093,8 +1093,6 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
...
@@ -1093,8 +1093,6 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
ResolvableType
requiredType
,
@Nullable
Object
[]
args
,
boolean
nonUniqueAsNull
)
throws
BeansException
{
ResolvableType
requiredType
,
@Nullable
Object
[]
args
,
boolean
nonUniqueAsNull
)
throws
BeansException
{
Assert
.
notNull
(
requiredType
,
"Required type must not be null"
);
Assert
.
notNull
(
requiredType
,
"Required type must not be null"
);
Class
<?>
clazz
=
requiredType
.
getRawClass
();
Assert
.
notNull
(
clazz
,
"Required type must have a raw Class"
);
String
[]
candidateNames
=
getBeanNamesForType
(
requiredType
);
String
[]
candidateNames
=
getBeanNamesForType
(
requiredType
);
if
(
candidateNames
.
length
>
1
)
{
if
(
candidateNames
.
length
>
1
)
{
...
@@ -1111,7 +1109,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
...
@@ -1111,7 +1109,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
if
(
candidateNames
.
length
==
1
)
{
if
(
candidateNames
.
length
==
1
)
{
String
beanName
=
candidateNames
[
0
];
String
beanName
=
candidateNames
[
0
];
return
new
NamedBeanHolder
<>(
beanName
,
(
T
)
getBean
(
beanName
,
clazz
,
args
));
return
new
NamedBeanHolder
<>(
beanName
,
(
T
)
getBean
(
beanName
,
requiredType
.
toClass
()
,
args
));
}
}
else
if
(
candidateNames
.
length
>
1
)
{
else
if
(
candidateNames
.
length
>
1
)
{
Map
<
String
,
Object
>
candidates
=
new
LinkedHashMap
<>(
candidateNames
.
length
);
Map
<
String
,
Object
>
candidates
=
new
LinkedHashMap
<>(
candidateNames
.
length
);
...
@@ -1124,14 +1122,14 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
...
@@ -1124,14 +1122,14 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
candidates
.
put
(
beanName
,
getType
(
beanName
));
candidates
.
put
(
beanName
,
getType
(
beanName
));
}
}
}
}
String
candidateName
=
determinePrimaryCandidate
(
candidates
,
clazz
);
String
candidateName
=
determinePrimaryCandidate
(
candidates
,
requiredType
.
toClass
()
);
if
(
candidateName
==
null
)
{
if
(
candidateName
==
null
)
{
candidateName
=
determineHighestPriorityCandidate
(
candidates
,
clazz
);
candidateName
=
determineHighestPriorityCandidate
(
candidates
,
requiredType
.
toClass
()
);
}
}
if
(
candidateName
!=
null
)
{
if
(
candidateName
!=
null
)
{
Object
beanInstance
=
candidates
.
get
(
candidateName
);
Object
beanInstance
=
candidates
.
get
(
candidateName
);
if
(
beanInstance
==
null
||
beanInstance
instanceof
Class
)
{
if
(
beanInstance
==
null
||
beanInstance
instanceof
Class
)
{
beanInstance
=
getBean
(
candidateName
,
clazz
,
args
);
beanInstance
=
getBean
(
candidateName
,
requiredType
.
toClass
()
,
args
);
}
}
return
new
NamedBeanHolder
<>(
candidateName
,
(
T
)
beanInstance
);
return
new
NamedBeanHolder
<>(
candidateName
,
(
T
)
beanInstance
);
}
}
...
...
spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java
浏览文件 @
40148c05
...
@@ -148,8 +148,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
...
@@ -148,8 +148,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
if
(
declaredEventType
.
isAssignableFrom
(
eventType
))
{
if
(
declaredEventType
.
isAssignableFrom
(
eventType
))
{
return
true
;
return
true
;
}
}
Class
<?>
eventClass
=
eventType
.
getRawClass
();
if
(
PayloadApplicationEvent
.
class
.
isAssignableFrom
(
eventType
.
toClass
()))
{
if
(
eventClass
!=
null
&&
PayloadApplicationEvent
.
class
.
isAssignableFrom
(
eventClass
))
{
ResolvableType
payloadType
=
eventType
.
as
(
PayloadApplicationEvent
.
class
).
getGeneric
();
ResolvableType
payloadType
=
eventType
.
as
(
PayloadApplicationEvent
.
class
).
getGeneric
();
if
(
declaredEventType
.
isAssignableFrom
(
payloadType
))
{
if
(
declaredEventType
.
isAssignableFrom
(
payloadType
))
{
return
true
;
return
true
;
...
@@ -202,8 +201,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
...
@@ -202,8 +201,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
if
(
this
.
method
.
getParameterCount
()
==
0
)
{
if
(
this
.
method
.
getParameterCount
()
==
0
)
{
return
new
Object
[
0
];
return
new
Object
[
0
];
}
}
Class
<?>
eventClass
=
declaredEventType
.
getRawClass
();
if
(!
ApplicationEvent
.
class
.
isAssignableFrom
(
declaredEventType
.
toClass
())
&&
if
((
eventClass
==
null
||
!
ApplicationEvent
.
class
.
isAssignableFrom
(
eventClass
))
&&
event
instanceof
PayloadApplicationEvent
)
{
event
instanceof
PayloadApplicationEvent
)
{
return
new
Object
[]
{((
PayloadApplicationEvent
)
event
).
getPayload
()};
return
new
Object
[]
{((
PayloadApplicationEvent
)
event
).
getPayload
()};
}
}
...
@@ -358,12 +356,12 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
...
@@ -358,12 +356,12 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe
}
}
}
}
for
(
ResolvableType
declaredEventType
:
this
.
declaredEventTypes
)
{
for
(
ResolvableType
declaredEventType
:
this
.
declaredEventTypes
)
{
Class
<?>
eventClass
=
declaredEventType
.
getRaw
Class
();
Class
<?>
eventClass
=
declaredEventType
.
to
Class
();
if
(
(
eventClass
==
null
||
!
ApplicationEvent
.
class
.
isAssignableFrom
(
eventClass
)
)
&&
if
(
!
ApplicationEvent
.
class
.
isAssignableFrom
(
eventClass
)
&&
payloadType
!=
null
&&
declaredEventType
.
isAssignableFrom
(
payloadType
))
{
payloadType
!=
null
&&
declaredEventType
.
isAssignableFrom
(
payloadType
))
{
return
declaredEventType
;
return
declaredEventType
;
}
}
if
(
eventClass
!=
null
&&
eventClass
.
isInstance
(
event
))
{
if
(
eventClass
.
isInstance
(
event
))
{
return
declaredEventType
;
return
declaredEventType
;
}
}
}
}
...
...
spring-core/src/main/java/org/springframework/core/codec/ByteArrayDecoder.java
浏览文件 @
40148c05
...
@@ -34,7 +34,6 @@ import org.springframework.util.MimeTypeUtils;
...
@@ -34,7 +34,6 @@ import org.springframework.util.MimeTypeUtils;
*/
*/
public
class
ByteArrayDecoder
extends
AbstractDataBufferDecoder
<
byte
[]>
{
public
class
ByteArrayDecoder
extends
AbstractDataBufferDecoder
<
byte
[]>
{
public
ByteArrayDecoder
()
{
public
ByteArrayDecoder
()
{
super
(
MimeTypeUtils
.
ALL
);
super
(
MimeTypeUtils
.
ALL
);
}
}
...
@@ -42,8 +41,7 @@ public class ByteArrayDecoder extends AbstractDataBufferDecoder<byte[]> {
...
@@ -42,8 +41,7 @@ public class ByteArrayDecoder extends AbstractDataBufferDecoder<byte[]> {
@Override
@Override
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
Class
<?>
clazz
=
elementType
.
getRawClass
();
return
(
elementType
.
resolve
()
==
byte
[].
class
&&
super
.
canDecode
(
elementType
,
mimeType
));
return
(
super
.
canDecode
(
elementType
,
mimeType
)
&&
byte
[].
class
==
clazz
);
}
}
@Override
@Override
...
...
spring-core/src/main/java/org/springframework/core/codec/ByteBufferDecoder.java
浏览文件 @
40148c05
...
@@ -36,7 +36,6 @@ import org.springframework.util.MimeTypeUtils;
...
@@ -36,7 +36,6 @@ import org.springframework.util.MimeTypeUtils;
*/
*/
public
class
ByteBufferDecoder
extends
AbstractDataBufferDecoder
<
ByteBuffer
>
{
public
class
ByteBufferDecoder
extends
AbstractDataBufferDecoder
<
ByteBuffer
>
{
public
ByteBufferDecoder
()
{
public
ByteBufferDecoder
()
{
super
(
MimeTypeUtils
.
ALL
);
super
(
MimeTypeUtils
.
ALL
);
}
}
...
@@ -44,8 +43,8 @@ public class ByteBufferDecoder extends AbstractDataBufferDecoder<ByteBuffer> {
...
@@ -44,8 +43,8 @@ public class ByteBufferDecoder extends AbstractDataBufferDecoder<ByteBuffer> {
@Override
@Override
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
Class
<?>
clazz
=
elementType
.
getRawClass
();
return
(
ByteBuffer
.
class
.
isAssignableFrom
(
elementType
.
toClass
())
&&
return
(
super
.
canDecode
(
elementType
,
mimeType
)
&&
clazz
!=
null
&&
ByteBuffer
.
class
.
isAssignableFrom
(
clazz
));
super
.
canDecode
(
elementType
,
mimeType
));
}
}
@Override
@Override
...
...
spring-core/src/main/java/org/springframework/core/codec/DataBufferDecoder.java
浏览文件 @
40148c05
...
@@ -45,7 +45,6 @@ import org.springframework.util.MimeTypeUtils;
...
@@ -45,7 +45,6 @@ import org.springframework.util.MimeTypeUtils;
*/
*/
public
class
DataBufferDecoder
extends
AbstractDataBufferDecoder
<
DataBuffer
>
{
public
class
DataBufferDecoder
extends
AbstractDataBufferDecoder
<
DataBuffer
>
{
public
DataBufferDecoder
()
{
public
DataBufferDecoder
()
{
super
(
MimeTypeUtils
.
ALL
);
super
(
MimeTypeUtils
.
ALL
);
}
}
...
@@ -53,9 +52,8 @@ public class DataBufferDecoder extends AbstractDataBufferDecoder<DataBuffer> {
...
@@ -53,9 +52,8 @@ public class DataBufferDecoder extends AbstractDataBufferDecoder<DataBuffer> {
@Override
@Override
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
Class
<?>
clazz
=
elementType
.
getRawClass
();
return
(
DataBuffer
.
class
.
isAssignableFrom
(
elementType
.
toClass
())
&&
return
(
super
.
canDecode
(
elementType
,
mimeType
)
&&
super
.
canDecode
(
elementType
,
mimeType
));
clazz
!=
null
&&
DataBuffer
.
class
.
isAssignableFrom
(
clazz
));
}
}
@Override
@Override
...
...
spring-core/src/main/java/org/springframework/core/codec/ResourceDecoder.java
浏览文件 @
40148c05
...
@@ -29,7 +29,6 @@ import org.springframework.core.io.Resource;
...
@@ -29,7 +29,6 @@ import org.springframework.core.io.Resource;
import
org.springframework.core.io.buffer.DataBuffer
;
import
org.springframework.core.io.buffer.DataBuffer
;
import
org.springframework.core.io.buffer.DataBufferUtils
;
import
org.springframework.core.io.buffer.DataBufferUtils
;
import
org.springframework.lang.Nullable
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.Assert
;
import
org.springframework.util.MimeType
;
import
org.springframework.util.MimeType
;
import
org.springframework.util.MimeTypeUtils
;
import
org.springframework.util.MimeTypeUtils
;
...
@@ -42,7 +41,6 @@ import org.springframework.util.MimeTypeUtils;
...
@@ -42,7 +41,6 @@ import org.springframework.util.MimeTypeUtils;
*/
*/
public
class
ResourceDecoder
extends
AbstractDataBufferDecoder
<
Resource
>
{
public
class
ResourceDecoder
extends
AbstractDataBufferDecoder
<
Resource
>
{
public
ResourceDecoder
()
{
public
ResourceDecoder
()
{
super
(
MimeTypeUtils
.
ALL
);
super
(
MimeTypeUtils
.
ALL
);
}
}
...
@@ -50,8 +48,8 @@ public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
...
@@ -50,8 +48,8 @@ public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
@Override
@Override
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
Class
<?>
clazz
=
elementType
.
getRawClass
();
return
(
Resource
.
class
.
isAssignableFrom
(
elementType
.
toClass
())
&&
return
clazz
!=
null
&&
Resource
.
class
.
isAssignableFrom
(
clazz
)
&&
super
.
canDecode
(
elementType
,
mimeType
);
super
.
canDecode
(
elementType
,
mimeType
)
);
}
}
@Override
@Override
...
@@ -69,14 +67,12 @@ public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
...
@@ -69,14 +67,12 @@ public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
dataBuffer
.
read
(
bytes
);
dataBuffer
.
read
(
bytes
);
DataBufferUtils
.
release
(
dataBuffer
);
DataBufferUtils
.
release
(
dataBuffer
);
Class
<?>
clazz
=
elementType
.
getRawClass
();
Assert
.
state
(
clazz
!=
null
,
"No resource class"
);
if
(
logger
.
isDebugEnabled
())
{
if
(
logger
.
isDebugEnabled
())
{
logger
.
debug
(
Hints
.
getLogPrefix
(
hints
)
+
"Read "
+
bytes
.
length
+
" bytes"
);
logger
.
debug
(
Hints
.
getLogPrefix
(
hints
)
+
"Read "
+
bytes
.
length
+
" bytes"
);
}
}
if
(
InputStreamResource
.
class
==
clazz
)
{
Class
<?>
clazz
=
elementType
.
toClass
();
if
(
clazz
==
InputStreamResource
.
class
)
{
return
new
InputStreamResource
(
new
ByteArrayInputStream
(
bytes
));
return
new
InputStreamResource
(
new
ByteArrayInputStream
(
bytes
));
}
}
else
if
(
Resource
.
class
.
isAssignableFrom
(
clazz
))
{
else
if
(
Resource
.
class
.
isAssignableFrom
(
clazz
))
{
...
...
spring-core/src/main/java/org/springframework/core/codec/StringDecoder.java
浏览文件 @
40148c05
...
@@ -64,7 +64,7 @@ public final class StringDecoder extends AbstractDataBufferDecoder<String> {
...
@@ -64,7 +64,7 @@ public final class StringDecoder extends AbstractDataBufferDecoder<String> {
public
static
final
List
<
String
>
DEFAULT_DELIMITERS
=
Arrays
.
asList
(
"\r\n"
,
"\n"
);
public
static
final
List
<
String
>
DEFAULT_DELIMITERS
=
Arrays
.
asList
(
"\r\n"
,
"\n"
);
private
static
final
List
<
byte
[]>
DEFAULT_DELIMITER_BYTES
=
DEFAULT_DELIMITERS
.
stream
()
private
static
final
List
<
byte
[]>
DEFAULT_DELIMITER_BYTES
=
DEFAULT_DELIMITERS
.
stream
()
.
map
(
s
->
s
.
getBytes
(
StandardCharsets
.
UTF_8
))
.
map
(
s
tr
->
str
.
getBytes
(
StandardCharsets
.
UTF_8
))
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
...
@@ -83,8 +83,7 @@ public final class StringDecoder extends AbstractDataBufferDecoder<String> {
...
@@ -83,8 +83,7 @@ public final class StringDecoder extends AbstractDataBufferDecoder<String> {
@Override
@Override
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
return
(
super
.
canDecode
(
elementType
,
mimeType
)
&&
return
(
elementType
.
resolve
()
==
String
.
class
&&
super
.
canDecode
(
elementType
,
mimeType
));
String
.
class
.
equals
(
elementType
.
getRawClass
()));
}
}
@Override
@Override
...
...
spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageWriter.java
浏览文件 @
40148c05
...
@@ -105,8 +105,7 @@ public class FormHttpMessageWriter extends LoggingCodecSupport
...
@@ -105,8 +105,7 @@ public class FormHttpMessageWriter extends LoggingCodecSupport
@Override
@Override
public
boolean
canWrite
(
ResolvableType
elementType
,
@Nullable
MediaType
mediaType
)
{
public
boolean
canWrite
(
ResolvableType
elementType
,
@Nullable
MediaType
mediaType
)
{
Class
<?>
rawClass
=
elementType
.
getRawClass
();
if
(!
MultiValueMap
.
class
.
isAssignableFrom
(
elementType
.
toClass
()))
{
if
(
rawClass
==
null
||
!
MultiValueMap
.
class
.
isAssignableFrom
(
rawClass
))
{
return
false
;
return
false
;
}
}
if
(
MediaType
.
APPLICATION_FORM_URLENCODED
.
isCompatibleWith
(
mediaType
))
{
if
(
MediaType
.
APPLICATION_FORM_URLENCODED
.
isCompatibleWith
(
mediaType
))
{
...
...
spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java
浏览文件 @
40148c05
...
@@ -93,14 +93,13 @@ public class ServerSentEventHttpMessageReader implements HttpMessageReader<Objec
...
@@ -93,14 +93,13 @@ public class ServerSentEventHttpMessageReader implements HttpMessageReader<Objec
}
}
private
boolean
isServerSentEvent
(
ResolvableType
elementType
)
{
private
boolean
isServerSentEvent
(
ResolvableType
elementType
)
{
Class
<?>
rawClass
=
elementType
.
getRawClass
();
return
ServerSentEvent
.
class
.
isAssignableFrom
(
elementType
.
toClass
());
return
(
rawClass
!=
null
&&
ServerSentEvent
.
class
.
isAssignableFrom
(
rawClass
));
}
}
@Override
@Override
public
Flux
<
Object
>
read
(
ResolvableType
elementType
,
ReactiveHttpInputMessage
message
,
public
Flux
<
Object
>
read
(
Map
<
String
,
Object
>
hints
)
{
ResolvableType
elementType
,
ReactiveHttpInputMessage
message
,
Map
<
String
,
Object
>
hints
)
{
boolean
shouldWrap
=
isServerSentEvent
(
elementType
);
boolean
shouldWrap
=
isServerSentEvent
(
elementType
);
ResolvableType
valueType
=
(
shouldWrap
?
elementType
.
getGeneric
()
:
elementType
);
ResolvableType
valueType
=
(
shouldWrap
?
elementType
.
getGeneric
()
:
elementType
);
...
@@ -170,13 +169,13 @@ public class ServerSentEventHttpMessageReader implements HttpMessageReader<Objec
...
@@ -170,13 +169,13 @@ public class ServerSentEventHttpMessageReader implements HttpMessageReader<Objec
}
}
@Override
@Override
public
Mono
<
Object
>
readMono
(
ResolvableType
elementType
,
ReactiveHttpInputMessage
message
,
public
Mono
<
Object
>
readMono
(
Map
<
String
,
Object
>
hints
)
{
ResolvableType
elementType
,
ReactiveHttpInputMessage
message
,
Map
<
String
,
Object
>
hints
)
{
// We're ahead of String + "*/*"
// We're ahead of String + "*/*"
// Let's see if we can aggregate the output (lest we time out)...
// Let's see if we can aggregate the output (lest we time out)...
if
(
String
.
class
.
equals
(
elementType
.
getRawClass
())
)
{
if
(
elementType
.
resolve
()
==
String
.
class
)
{
Flux
<
DataBuffer
>
body
=
message
.
getBody
();
Flux
<
DataBuffer
>
body
=
message
.
getBody
();
return
stringDecoder
.
decodeToMono
(
body
,
elementType
,
null
,
null
).
cast
(
Object
.
class
);
return
stringDecoder
.
decodeToMono
(
body
,
elementType
,
null
,
null
).
cast
(
Object
.
class
);
}
}
...
...
spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageWriter.java
浏览文件 @
40148c05
...
@@ -113,8 +113,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
...
@@ -113,8 +113,7 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
private
Flux
<
Publisher
<
DataBuffer
>>
encode
(
Publisher
<?>
input
,
ResolvableType
elementType
,
private
Flux
<
Publisher
<
DataBuffer
>>
encode
(
Publisher
<?>
input
,
ResolvableType
elementType
,
MediaType
mediaType
,
DataBufferFactory
factory
,
Map
<
String
,
Object
>
hints
)
{
MediaType
mediaType
,
DataBufferFactory
factory
,
Map
<
String
,
Object
>
hints
)
{
Class
<?>
elementClass
=
elementType
.
getRawClass
();
ResolvableType
valueType
=
(
ServerSentEvent
.
class
.
isAssignableFrom
(
elementType
.
toClass
())
?
ResolvableType
valueType
=
(
elementClass
!=
null
&&
ServerSentEvent
.
class
.
isAssignableFrom
(
elementClass
)
?
elementType
.
getGeneric
()
:
elementType
);
elementType
.
getGeneric
()
:
elementType
);
return
Flux
.
from
(
input
).
map
(
element
->
{
return
Flux
.
from
(
input
).
map
(
element
->
{
...
...
spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartHttpMessageWriter.java
浏览文件 @
40148c05
...
@@ -177,10 +177,9 @@ public class MultipartHttpMessageWriter extends LoggingCodecSupport
...
@@ -177,10 +177,9 @@ public class MultipartHttpMessageWriter extends LoggingCodecSupport
@Override
@Override
public
boolean
canWrite
(
ResolvableType
elementType
,
@Nullable
MediaType
mediaType
)
{
public
boolean
canWrite
(
ResolvableType
elementType
,
@Nullable
MediaType
mediaType
)
{
Class
<?>
rawClass
=
elementType
.
getRawClass
();
return
(
MultiValueMap
.
class
.
isAssignableFrom
(
elementType
.
toClass
())
&&
return
rawClass
!=
null
&&
MultiValueMap
.
class
.
isAssignableFrom
(
rawClass
)
&&
(
mediaType
==
null
||
(
mediaType
==
null
||
this
.
supportedMediaTypes
.
stream
().
anyMatch
(
m
->
m
.
isCompatibleWith
(
mediaType
)));
this
.
supportedMediaTypes
.
stream
().
anyMatch
(
element
->
element
.
isCompatibleWith
(
mediaType
)
)));
}
}
@Override
@Override
...
@@ -281,7 +280,7 @@ public class MultipartHttpMessageWriter extends LoggingCodecSupport
...
@@ -281,7 +280,7 @@ public class MultipartHttpMessageWriter extends LoggingCodecSupport
if
(
body
instanceof
Resource
)
{
if
(
body
instanceof
Resource
)
{
outputHeaders
.
setContentDispositionFormData
(
name
,
((
Resource
)
body
).
getFilename
());
outputHeaders
.
setContentDispositionFormData
(
name
,
((
Resource
)
body
).
getFilename
());
}
}
else
if
(
Resource
.
class
.
equals
(
resolvableType
.
getRawClass
())
)
{
else
if
(
resolvableType
.
resolve
()
==
Resource
.
class
)
{
body
=
(
T
)
Mono
.
from
((
Publisher
<?>)
body
).
doOnNext
(
o
->
outputHeaders
body
=
(
T
)
Mono
.
from
((
Publisher
<?>)
body
).
doOnNext
(
o
->
outputHeaders
.
setContentDispositionFormData
(
name
,
((
Resource
)
o
).
getFilename
()));
.
setContentDispositionFormData
(
name
,
((
Resource
)
o
).
getFilename
()));
}
}
...
...
spring-web/src/main/java/org/springframework/http/codec/protobuf/ProtobufDecoder.java
浏览文件 @
40148c05
...
@@ -168,13 +168,11 @@ public class ProtobufDecoder extends ProtobufCodecSupport implements Decoder<Mes
...
@@ -168,13 +168,11 @@ public class ProtobufDecoder extends ProtobufCodecSupport implements Decoder<Mes
private
int
messageBytesToRead
;
private
int
messageBytesToRead
;
public
MessageDecoderFunction
(
ResolvableType
elementType
,
int
maxMessageSize
)
{
public
MessageDecoderFunction
(
ResolvableType
elementType
,
int
maxMessageSize
)
{
this
.
elementType
=
elementType
;
this
.
elementType
=
elementType
;
this
.
maxMessageSize
=
maxMessageSize
;
this
.
maxMessageSize
=
maxMessageSize
;
}
}
@Override
@Override
public
Iterable
<?
extends
Message
>
apply
(
DataBuffer
input
)
{
public
Iterable
<?
extends
Message
>
apply
(
DataBuffer
input
)
{
try
{
try
{
...
@@ -186,13 +184,13 @@ public class ProtobufDecoder extends ProtobufCodecSupport implements Decoder<Mes
...
@@ -186,13 +184,13 @@ public class ProtobufDecoder extends ProtobufCodecSupport implements Decoder<Mes
if
(
this
.
output
==
null
)
{
if
(
this
.
output
==
null
)
{
int
firstByte
=
input
.
read
();
int
firstByte
=
input
.
read
();
if
(
firstByte
==
-
1
)
{
if
(
firstByte
==
-
1
)
{
throw
new
DecodingException
(
"Can
'
t parse message size"
);
throw
new
DecodingException
(
"Can
no
t parse message size"
);
}
}
this
.
messageBytesToRead
=
CodedInputStream
.
readRawVarint32
(
firstByte
,
input
.
asInputStream
());
this
.
messageBytesToRead
=
CodedInputStream
.
readRawVarint32
(
firstByte
,
input
.
asInputStream
());
if
(
this
.
messageBytesToRead
>
this
.
maxMessageSize
)
{
if
(
this
.
messageBytesToRead
>
this
.
maxMessageSize
)
{
throw
new
DecodingException
(
throw
new
DecodingException
(
"The number of bytes to read parsed in the incoming stream ("
+
"The number of bytes to read parsed in the incoming stream ("
+
this
.
messageBytesToRead
+
") exceeds the configured limit ("
+
this
.
maxMessageSize
+
")"
);
this
.
messageBytesToRead
+
") exceeds the configured limit ("
+
this
.
maxMessageSize
+
")"
);
}
}
this
.
output
=
input
.
factory
().
allocateBuffer
(
this
.
messageBytesToRead
);
this
.
output
=
input
.
factory
().
allocateBuffer
(
this
.
messageBytesToRead
);
}
}
...
...
spring-web/src/main/java/org/springframework/http/codec/xml/Jaxb2XmlDecoder.java
浏览文件 @
40148c05
...
@@ -84,9 +84,9 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
...
@@ -84,9 +84,9 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
@Override
@Override
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
public
boolean
canDecode
(
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
)
{
if
(
super
.
canDecode
(
elementType
,
mimeType
))
{
if
(
super
.
canDecode
(
elementType
,
mimeType
))
{
Class
<?>
outputClass
=
elementType
.
getRaw
Class
();
Class
<?>
outputClass
=
elementType
.
to
Class
();
return
(
outputClass
!=
null
&&
(
outputClass
.
isAnnotationPresent
(
XmlRootElement
.
class
)
||
return
(
outputClass
.
isAnnotationPresent
(
XmlRootElement
.
class
)
||
outputClass
.
isAnnotationPresent
(
XmlType
.
class
))
)
;
outputClass
.
isAnnotationPresent
(
XmlType
.
class
));
}
}
else
{
else
{
return
false
;
return
false
;
...
@@ -97,12 +97,10 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
...
@@ -97,12 +97,10 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
public
Flux
<
Object
>
decode
(
Publisher
<
DataBuffer
>
inputStream
,
ResolvableType
elementType
,
public
Flux
<
Object
>
decode
(
Publisher
<
DataBuffer
>
inputStream
,
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
,
@Nullable
Map
<
String
,
Object
>
hints
)
{
@Nullable
MimeType
mimeType
,
@Nullable
Map
<
String
,
Object
>
hints
)
{
Class
<?>
outputClass
=
elementType
.
getRawClass
();
Assert
.
state
(
outputClass
!=
null
,
"Unresolvable output class"
);
Flux
<
XMLEvent
>
xmlEventFlux
=
this
.
xmlEventDecoder
.
decode
(
Flux
<
XMLEvent
>
xmlEventFlux
=
this
.
xmlEventDecoder
.
decode
(
inputStream
,
ResolvableType
.
forClass
(
XMLEvent
.
class
),
mimeType
,
hints
);
inputStream
,
ResolvableType
.
forClass
(
XMLEvent
.
class
),
mimeType
,
hints
);
Class
<?>
outputClass
=
elementType
.
toClass
();
QName
typeName
=
toQName
(
outputClass
);
QName
typeName
=
toQName
(
outputClass
);
Flux
<
List
<
XMLEvent
>>
splitEvents
=
split
(
xmlEventFlux
,
typeName
);
Flux
<
List
<
XMLEvent
>>
splitEvents
=
split
(
xmlEventFlux
,
typeName
);
...
@@ -119,6 +117,7 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
...
@@ -119,6 +117,7 @@ public class Jaxb2XmlDecoder extends AbstractDecoder<Object> {
@Override
@Override
public
Mono
<
Object
>
decodeToMono
(
Publisher
<
DataBuffer
>
inputStream
,
ResolvableType
elementType
,
public
Mono
<
Object
>
decodeToMono
(
Publisher
<
DataBuffer
>
inputStream
,
ResolvableType
elementType
,
@Nullable
MimeType
mimeType
,
@Nullable
Map
<
String
,
Object
>
hints
)
{
@Nullable
MimeType
mimeType
,
@Nullable
Map
<
String
,
Object
>
hints
)
{
return
decode
(
inputStream
,
elementType
,
mimeType
,
hints
).
singleOrEmpty
();
return
decode
(
inputStream
,
elementType
,
mimeType
,
hints
).
singleOrEmpty
();
}
}
...
...
spring-web/src/main/java/org/springframework/http/codec/xml/Jaxb2XmlEncoder.java
浏览文件 @
40148c05
...
@@ -45,8 +45,8 @@ import org.springframework.util.MimeTypeUtils;
...
@@ -45,8 +45,8 @@ import org.springframework.util.MimeTypeUtils;
* Encode from single value to a byte stream containing XML elements.
* Encode from single value to a byte stream containing XML elements.
*
*
* <p>{@link javax.xml.bind.annotation.XmlElements @XmlElements} and
* <p>{@link javax.xml.bind.annotation.XmlElements @XmlElements} and
* {@link javax.xml.bind.annotation.XmlElement @XmlElement} can be used
to specify how
* {@link javax.xml.bind.annotation.XmlElement @XmlElement} can be used
* collections should be marshalled.
*
to specify how
collections should be marshalled.
*
*
* @author Sebastien Deleuze
* @author Sebastien Deleuze
* @author Arjen Poutsma
* @author Arjen Poutsma
...
@@ -73,7 +73,6 @@ public class Jaxb2XmlEncoder extends AbstractSingleValueEncoder<Object> {
...
@@ -73,7 +73,6 @@ public class Jaxb2XmlEncoder extends AbstractSingleValueEncoder<Object> {
else
{
else
{
return
false
;
return
false
;
}
}
}
}
@Override
@Override
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/result/HandlerResultHandlerSupport.java
浏览文件 @
40148c05
...
@@ -101,20 +101,18 @@ public abstract class HandlerResultHandlerSupport implements Ordered {
...
@@ -101,20 +101,18 @@ public abstract class HandlerResultHandlerSupport implements Ordered {
/**
/**
* Get a {@code ReactiveAdapter} for the top-level return value type.
* Get a {@code ReactiveAdapter} for the top-level return value type.
* @return the matching adapter
or {@code null}
* @return the matching adapter
, or {@code null} if none
*/
*/
@Nullable
@Nullable
protected
ReactiveAdapter
getAdapter
(
HandlerResult
result
)
{
protected
ReactiveAdapter
getAdapter
(
HandlerResult
result
)
{
Class
<?>
returnType
=
result
.
getReturnType
().
getRawClass
();
return
getAdapterRegistry
().
getAdapter
(
result
.
getReturnType
().
resolve
(),
result
.
getReturnValue
());
return
getAdapterRegistry
().
getAdapter
(
returnType
,
result
.
getReturnValue
());
}
}
/**
/**
* Select the best media type for the current request through a content
* Select the best media type for the current request through a content negotiation algorithm.
* negotiation algorithm.
* @param exchange the current request
* @param exchange the current request
* @param producibleTypesSupplier the media types that can be produced for the current request
* @param producibleTypesSupplier the media types that can be produced for the current request
* @return the selected media type
or {@code null}
* @return the selected media type
, or {@code null} if none
*/
*/
@Nullable
@Nullable
protected
MediaType
selectMediaType
(
ServerWebExchange
exchange
,
protected
MediaType
selectMediaType
(
ServerWebExchange
exchange
,
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractMessageWriterResultHandler.java
浏览文件 @
40148c05
...
@@ -110,14 +110,13 @@ public abstract class AbstractMessageWriterResultHandler extends HandlerResultHa
...
@@ -110,14 +110,13 @@ public abstract class AbstractMessageWriterResultHandler extends HandlerResultHa
* @return indicates completion or error
* @return indicates completion or error
* @since 5.0.2
* @since 5.0.2
*/
*/
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
@SuppressWarnings
({
"unchecked"
,
"rawtypes"
})
protected
Mono
<
Void
>
writeBody
(
@Nullable
Object
body
,
MethodParameter
bodyParameter
,
protected
Mono
<
Void
>
writeBody
(
@Nullable
Object
body
,
MethodParameter
bodyParameter
,
@Nullable
MethodParameter
actualParam
,
ServerWebExchange
exchange
)
{
@Nullable
MethodParameter
actualParam
,
ServerWebExchange
exchange
)
{
ResolvableType
bodyType
=
ResolvableType
.
forMethodParameter
(
bodyParameter
);
ResolvableType
bodyType
=
ResolvableType
.
forMethodParameter
(
bodyParameter
);
ResolvableType
actualType
=
(
actualParam
!=
null
?
ResolvableType
.
forMethodParameter
(
actualParam
)
:
bodyType
);
ResolvableType
actualType
=
(
actualParam
!=
null
?
ResolvableType
.
forMethodParameter
(
actualParam
)
:
bodyType
);
Class
<?>
bodyClass
=
bodyType
.
resolve
();
ReactiveAdapter
adapter
=
getAdapterRegistry
().
getAdapter
(
bodyType
.
resolve
(),
body
);
ReactiveAdapter
adapter
=
getAdapterRegistry
().
getAdapter
(
bodyClass
,
body
);
Publisher
<?>
publisher
;
Publisher
<?>
publisher
;
ResolvableType
elementType
;
ResolvableType
elementType
;
...
@@ -128,11 +127,11 @@ public abstract class AbstractMessageWriterResultHandler extends HandlerResultHa
...
@@ -128,11 +127,11 @@ public abstract class AbstractMessageWriterResultHandler extends HandlerResultHa
}
}
else
{
else
{
publisher
=
Mono
.
justOrEmpty
(
body
);
publisher
=
Mono
.
justOrEmpty
(
body
);
elementType
=
(
(
bodyClass
==
null
||
bodyClass
.
equals
(
Object
.
class
))
&&
body
!=
null
?
elementType
=
(
bodyType
.
toClass
()
==
Object
.
class
&&
body
!=
null
?
ResolvableType
.
forInstance
(
body
)
:
bodyType
);
ResolvableType
.
forInstance
(
body
)
:
bodyType
);
}
}
if
(
void
.
class
==
elementType
.
getRawClass
()
||
Void
.
class
==
elementType
.
getRawClass
()
)
{
if
(
elementType
.
resolve
()
==
void
.
class
||
elementType
.
resolve
()
==
Void
.
class
)
{
return
Mono
.
from
((
Publisher
<
Void
>)
publisher
);
return
Mono
.
from
((
Publisher
<
Void
>)
publisher
);
}
}
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/MatrixVariableMapMethodArgumentResolver.java
浏览文件 @
40148c05
...
@@ -105,8 +105,7 @@ public class MatrixVariableMapMethodArgumentResolver extends HandlerMethodArgume
...
@@ -105,8 +105,7 @@ public class MatrixVariableMapMethodArgumentResolver extends HandlerMethodArgume
if
(!
MultiValueMap
.
class
.
isAssignableFrom
(
parameter
.
getParameterType
()))
{
if
(!
MultiValueMap
.
class
.
isAssignableFrom
(
parameter
.
getParameterType
()))
{
ResolvableType
[]
genericTypes
=
ResolvableType
.
forMethodParameter
(
parameter
).
getGenerics
();
ResolvableType
[]
genericTypes
=
ResolvableType
.
forMethodParameter
(
parameter
).
getGenerics
();
if
(
genericTypes
.
length
==
2
)
{
if
(
genericTypes
.
length
==
2
)
{
Class
<?>
declaredClass
=
genericTypes
[
1
].
getRawClass
();
return
!
List
.
class
.
isAssignableFrom
(
genericTypes
[
1
].
toClass
());
return
(
declaredClass
==
null
||
!
List
.
class
.
isAssignableFrom
(
declaredClass
));
}
}
}
}
return
false
;
return
false
;
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelAttributeMethodArgumentResolver.java
浏览文件 @
40148c05
...
@@ -158,9 +158,7 @@ public class ModelAttributeMethodArgumentResolver extends HandlerMethodArgumentR
...
@@ -158,9 +158,7 @@ public class ModelAttributeMethodArgumentResolver extends HandlerMethodArgumentR
}
}
if
(
attribute
==
null
)
{
if
(
attribute
==
null
)
{
Class
<?>
attributeClass
=
attributeType
.
getRawClass
();
return
createAttribute
(
attributeName
,
attributeType
.
toClass
(),
context
,
exchange
);
Assert
.
state
(
attributeClass
!=
null
,
"No attribute class"
);
return
createAttribute
(
attributeName
,
attributeClass
,
context
,
exchange
);
}
}
ReactiveAdapter
adapterFrom
=
getAdapterRegistry
().
getAdapter
(
null
,
attribute
);
ReactiveAdapter
adapterFrom
=
getAdapterRegistry
().
getAdapter
(
null
,
attribute
);
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelInitializer.java
浏览文件 @
40148c05
...
@@ -120,7 +120,7 @@ class ModelInitializer {
...
@@ -120,7 +120,7 @@ class ModelInitializer {
Object
value
=
handlerResult
.
getReturnValue
();
Object
value
=
handlerResult
.
getReturnValue
();
if
(
value
!=
null
)
{
if
(
value
!=
null
)
{
ResolvableType
type
=
handlerResult
.
getReturnType
();
ResolvableType
type
=
handlerResult
.
getReturnType
();
ReactiveAdapter
adapter
=
this
.
adapterRegistry
.
getAdapter
(
type
.
getRawClass
(),
value
);
ReactiveAdapter
adapter
=
this
.
adapterRegistry
.
getAdapter
(
type
.
resolve
(),
value
);
if
(
isAsyncVoidType
(
type
,
adapter
))
{
if
(
isAsyncVoidType
(
type
,
adapter
))
{
return
Mono
.
from
(
adapter
.
toPublisher
(
value
));
return
Mono
.
from
(
adapter
.
toPublisher
(
value
));
}
}
...
@@ -131,7 +131,7 @@ class ModelInitializer {
...
@@ -131,7 +131,7 @@ class ModelInitializer {
}
}
private
boolean
isAsyncVoidType
(
ResolvableType
type
,
@Nullable
ReactiveAdapter
adapter
)
{
private
boolean
isAsyncVoidType
(
ResolvableType
type
,
@Nullable
ReactiveAdapter
adapter
)
{
return
adapter
!=
null
&&
(
adapter
.
isNoValue
()
||
type
.
resolveGeneric
()
==
Void
.
class
);
return
(
adapter
!=
null
&&
(
adapter
.
isNoValue
()
||
type
.
resolveGeneric
()
==
Void
.
class
)
);
}
}
private
String
getAttributeName
(
MethodParameter
param
)
{
private
String
getAttributeName
(
MethodParameter
param
)
{
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandler.java
浏览文件 @
40148c05
...
@@ -94,9 +94,9 @@ public class ResponseEntityResultHandler extends AbstractMessageWriterResultHand
...
@@ -94,9 +94,9 @@ public class ResponseEntityResultHandler extends AbstractMessageWriterResultHand
@Nullable
@Nullable
private
static
Class
<?>
resolveReturnValueType
(
HandlerResult
result
)
{
private
static
Class
<?>
resolveReturnValueType
(
HandlerResult
result
)
{
Class
<?>
valueType
=
result
.
getReturnType
().
getRaw
Class
();
Class
<?>
valueType
=
result
.
getReturnType
().
to
Class
();
Object
value
=
result
.
getReturnValue
();
Object
value
=
result
.
getReturnValue
();
if
(
(
valueType
==
null
||
valueType
.
equals
(
Object
.
class
))
&&
value
!=
null
)
{
if
(
valueType
==
Object
.
class
&&
value
!=
null
)
{
valueType
=
value
.
getClass
();
valueType
=
value
.
getClass
();
}
}
return
valueType
;
return
valueType
;
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandler.java
浏览文件 @
40148c05
/*
/*
* Copyright 2002-201
7
the original author or authors.
* Copyright 2002-201
8
the original author or authors.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* you may not use this file except in compliance with the License.
...
@@ -151,7 +151,7 @@ public class ViewResolutionResultHandler extends HandlerResultHandlerSupport
...
@@ -151,7 +151,7 @@ public class ViewResolutionResultHandler extends HandlerResultHandlerSupport
return
true
;
return
true
;
}
}
Class
<?>
type
=
result
.
getReturnType
().
getRaw
Class
();
Class
<?>
type
=
result
.
getReturnType
().
to
Class
();
ReactiveAdapter
adapter
=
getAdapter
(
result
);
ReactiveAdapter
adapter
=
getAdapter
(
result
);
if
(
adapter
!=
null
)
{
if
(
adapter
!=
null
)
{
if
(
adapter
.
isNoValue
())
{
if
(
adapter
.
isNoValue
())
{
...
@@ -160,11 +160,10 @@ public class ViewResolutionResultHandler extends HandlerResultHandlerSupport
...
@@ -160,11 +160,10 @@ public class ViewResolutionResultHandler extends HandlerResultHandlerSupport
type
=
result
.
getReturnType
().
getGeneric
().
toClass
();
type
=
result
.
getReturnType
().
getGeneric
().
toClass
();
}
}
return
(
type
!=
null
&&
return
(
CharSequence
.
class
.
isAssignableFrom
(
type
)
||
Rendering
.
class
.
isAssignableFrom
(
type
)
||
(
CharSequence
.
class
.
isAssignableFrom
(
type
)
||
Rendering
.
class
.
isAssignableFrom
(
type
)
||
Model
.
class
.
isAssignableFrom
(
type
)
||
Map
.
class
.
isAssignableFrom
(
type
)
||
Model
.
class
.
isAssignableFrom
(
type
)
||
Map
.
class
.
isAssignableFrom
(
type
)
||
void
.
class
.
equals
(
type
)
||
View
.
class
.
isAssignableFrom
(
type
)
||
void
.
class
.
equals
(
type
)
||
View
.
class
.
isAssignableFrom
(
type
)
||
!
BeanUtils
.
isSimpleProperty
(
type
));
!
BeanUtils
.
isSimpleProperty
(
type
)));
}
}
private
boolean
hasModelAnnotation
(
MethodParameter
parameter
)
{
private
boolean
hasModelAnnotation
(
MethodParameter
parameter
)
{
...
@@ -204,12 +203,12 @@ public class ViewResolutionResultHandler extends HandlerResultHandlerSupport
...
@@ -204,12 +203,12 @@ public class ViewResolutionResultHandler extends HandlerResultHandlerSupport
MethodParameter
parameter
=
result
.
getReturnTypeSource
();
MethodParameter
parameter
=
result
.
getReturnTypeSource
();
Locale
locale
=
LocaleContextHolder
.
getLocale
(
exchange
.
getLocaleContext
());
Locale
locale
=
LocaleContextHolder
.
getLocale
(
exchange
.
getLocaleContext
());
Class
<?>
clazz
=
valueType
.
getRaw
Class
();
Class
<?>
clazz
=
valueType
.
to
Class
();
if
(
clazz
==
null
)
{
if
(
clazz
==
Object
.
class
)
{
clazz
=
returnValue
.
getClass
();
clazz
=
returnValue
.
getClass
();
}
}
if
(
returnValue
==
NO_VALUE
||
Void
.
class
.
equals
(
clazz
)
||
void
.
class
.
equals
(
clazz
)
)
{
if
(
returnValue
==
NO_VALUE
||
clazz
==
void
.
class
||
clazz
==
Void
.
class
)
{
viewsMono
=
resolveViews
(
getDefaultViewName
(
exchange
),
locale
);
viewsMono
=
resolveViews
(
getDefaultViewName
(
exchange
),
locale
);
}
}
else
if
(
CharSequence
.
class
.
isAssignableFrom
(
clazz
)
&&
!
hasModelAnnotation
(
parameter
))
{
else
if
(
CharSequence
.
class
.
isAssignableFrom
(
clazz
)
&&
!
hasModelAnnotation
(
parameter
))
{
...
...
spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMapMethodArgumentResolver.java
浏览文件 @
40148c05
...
@@ -101,8 +101,7 @@ public class MatrixVariableMapMethodArgumentResolver implements HandlerMethodArg
...
@@ -101,8 +101,7 @@ public class MatrixVariableMapMethodArgumentResolver implements HandlerMethodArg
if
(!
MultiValueMap
.
class
.
isAssignableFrom
(
parameter
.
getParameterType
()))
{
if
(!
MultiValueMap
.
class
.
isAssignableFrom
(
parameter
.
getParameterType
()))
{
ResolvableType
[]
genericTypes
=
ResolvableType
.
forMethodParameter
(
parameter
).
getGenerics
();
ResolvableType
[]
genericTypes
=
ResolvableType
.
forMethodParameter
(
parameter
).
getGenerics
();
if
(
genericTypes
.
length
==
2
)
{
if
(
genericTypes
.
length
==
2
)
{
Class
<?>
declaredClass
=
genericTypes
[
1
].
getRawClass
();
return
!
List
.
class
.
isAssignableFrom
(
genericTypes
[
1
].
toClass
());
return
(
declaredClass
==
null
||
!
List
.
class
.
isAssignableFrom
(
declaredClass
));
}
}
}
}
return
false
;
return
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录