Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
带水的鱼儿
spring-framework
提交
a42540e6
S
spring-framework
项目概览
带水的鱼儿
/
spring-framework
与 Fork 源项目一致
从无法访问的项目Fork
通知
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,发现更多精彩内容 >>
提交
a42540e6
编写于
6月 08, 2021
作者:
R
Rossen Stoyanchev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Multipart writer detects custom Jackson encoder
Closes gh-27017
上级
cc2b980e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
47 addition
and
12 deletion
+47
-12
spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java
...springframework/http/codec/support/BaseDefaultCodecs.java
+2
-0
spring-web/src/test/java/org/springframework/http/codec/support/ClientCodecConfigurerTests.java
...mework/http/codec/support/ClientCodecConfigurerTests.java
+21
-4
spring-web/src/test/java/org/springframework/http/codec/support/ServerCodecConfigurerTests.java
...mework/http/codec/support/ServerCodecConfigurerTests.java
+24
-8
未找到文件。
spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java
浏览文件 @
a42540e6
...
@@ -221,6 +221,7 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure
...
@@ -221,6 +221,7 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure
public
void
jackson2JsonEncoder
(
Encoder
<?>
encoder
)
{
public
void
jackson2JsonEncoder
(
Encoder
<?>
encoder
)
{
this
.
jackson2JsonEncoder
=
encoder
;
this
.
jackson2JsonEncoder
=
encoder
;
initObjectWriters
();
initObjectWriters
();
initTypedWriters
();
}
}
@Override
@Override
...
@@ -233,6 +234,7 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure
...
@@ -233,6 +234,7 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure
public
void
jackson2SmileEncoder
(
Encoder
<?>
encoder
)
{
public
void
jackson2SmileEncoder
(
Encoder
<?>
encoder
)
{
this
.
jackson2SmileEncoder
=
encoder
;
this
.
jackson2SmileEncoder
=
encoder
;
initObjectWriters
();
initObjectWriters
();
initTypedWriters
();
}
}
@Override
@Override
...
...
spring-web/src/test/java/org/springframework/http/codec/support/ClientCodecConfigurerTests.java
浏览文件 @
a42540e6
...
@@ -123,12 +123,28 @@ public class ClientCodecConfigurerTests {
...
@@ -123,12 +123,28 @@ public class ClientCodecConfigurerTests {
}
}
@Test
@Test
public
void
jackson2CodecCustomization
s
()
{
public
void
jackson2CodecCustomization
()
{
Jackson2JsonDecoder
decoder
=
new
Jackson2JsonDecoder
();
Jackson2JsonDecoder
decoder
=
new
Jackson2JsonDecoder
();
Jackson2JsonEncoder
encoder
=
new
Jackson2JsonEncoder
();
Jackson2JsonEncoder
encoder
=
new
Jackson2JsonEncoder
();
this
.
configurer
.
defaultCodecs
().
jackson2JsonDecoder
(
decoder
);
this
.
configurer
.
defaultCodecs
().
jackson2JsonDecoder
(
decoder
);
this
.
configurer
.
defaultCodecs
().
jackson2JsonEncoder
(
encoder
);
this
.
configurer
.
defaultCodecs
().
jackson2JsonEncoder
(
encoder
);
List
<
HttpMessageReader
<?>>
readers
=
this
.
configurer
.
getReaders
();
Jackson2JsonDecoder
actualDecoder
=
findCodec
(
readers
,
Jackson2JsonDecoder
.
class
);
assertThat
(
actualDecoder
).
isSameAs
(
decoder
);
assertThat
(
findCodec
(
readers
,
ServerSentEventHttpMessageReader
.
class
).
getDecoder
()).
isSameAs
(
decoder
);
List
<
HttpMessageWriter
<?>>
writers
=
this
.
configurer
.
getWriters
();
Jackson2JsonEncoder
actualEncoder
=
findCodec
(
writers
,
Jackson2JsonEncoder
.
class
);
assertThat
(
actualEncoder
).
isSameAs
(
encoder
);
MultipartHttpMessageWriter
multipartWriter
=
findCodec
(
writers
,
MultipartHttpMessageWriter
.
class
);
actualEncoder
=
findCodec
(
multipartWriter
.
getPartWriters
(),
Jackson2JsonEncoder
.
class
);
assertThat
(
actualEncoder
).
isSameAs
(
encoder
);
}
@Test
public
void
objectMapperCustomization
()
{
ObjectMapper
objectMapper
=
new
ObjectMapper
();
ObjectMapper
objectMapper
=
new
ObjectMapper
();
this
.
configurer
.
defaultCodecs
().
configureDefaultCodec
(
codec
->
{
this
.
configurer
.
defaultCodecs
().
configureDefaultCodec
(
codec
->
{
if
(
codec
instanceof
Jackson2CodecSupport
)
{
if
(
codec
instanceof
Jackson2CodecSupport
)
{
...
@@ -138,13 +154,14 @@ public class ClientCodecConfigurerTests {
...
@@ -138,13 +154,14 @@ public class ClientCodecConfigurerTests {
List
<
HttpMessageReader
<?>>
readers
=
this
.
configurer
.
getReaders
();
List
<
HttpMessageReader
<?>>
readers
=
this
.
configurer
.
getReaders
();
Jackson2JsonDecoder
actualDecoder
=
findCodec
(
readers
,
Jackson2JsonDecoder
.
class
);
Jackson2JsonDecoder
actualDecoder
=
findCodec
(
readers
,
Jackson2JsonDecoder
.
class
);
assertThat
(
actualDecoder
).
isSameAs
(
decoder
);
assertThat
(
actualDecoder
.
getObjectMapper
()).
isSameAs
(
objectMapper
);
assertThat
(
actualDecoder
.
getObjectMapper
()).
isSameAs
(
objectMapper
);
assertThat
(
findCodec
(
readers
,
ServerSentEventHttpMessageReader
.
class
).
getDecoder
()).
isSameAs
(
decoder
);
List
<
HttpMessageWriter
<?>>
writers
=
this
.
configurer
.
getWriters
();
List
<
HttpMessageWriter
<?>>
writers
=
this
.
configurer
.
getWriters
();
Jackson2JsonEncoder
actualEncoder
=
findCodec
(
writers
,
Jackson2JsonEncoder
.
class
);
Jackson2JsonEncoder
actualEncoder
=
findCodec
(
writers
,
Jackson2JsonEncoder
.
class
);
assertThat
(
actualEncoder
).
isSameAs
(
encoder
);
assertThat
(
actualEncoder
.
getObjectMapper
()).
isSameAs
(
objectMapper
);
MultipartHttpMessageWriter
multipartWriter
=
findCodec
(
writers
,
MultipartHttpMessageWriter
.
class
);
actualEncoder
=
findCodec
(
multipartWriter
.
getPartWriters
(),
Jackson2JsonEncoder
.
class
);
assertThat
(
actualEncoder
.
getObjectMapper
()).
isSameAs
(
objectMapper
);
assertThat
(
actualEncoder
.
getObjectMapper
()).
isSameAs
(
objectMapper
);
}
}
...
...
spring-web/src/test/java/org/springframework/http/codec/support/ServerCodecConfigurerTests.java
浏览文件 @
a42540e6
/*
/*
* Copyright 2002-202
0
the original author or authors.
* Copyright 2002-202
1
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.
...
@@ -125,15 +125,19 @@ public class ServerCodecConfigurerTests {
...
@@ -125,15 +125,19 @@ public class ServerCodecConfigurerTests {
@Test
@Test
public
void
jackson2EncoderOverride
()
{
public
void
jackson2EncoderOverride
()
{
Jackson2JsonDecoder
decoder
=
new
Jackson2JsonDecoder
();
Jackson2JsonEncoder
encoder
=
new
Jackson2JsonEncoder
();
Jackson2JsonEncoder
encoder
=
new
Jackson2JsonEncoder
();
this
.
configurer
.
defaultCodecs
().
jackson2JsonDecoder
(
decoder
);
this
.
configurer
.
defaultCodecs
().
jackson2JsonEncoder
(
encoder
);
this
.
configurer
.
defaultCodecs
().
jackson2JsonEncoder
(
encoder
);
assertThat
(
this
.
configurer
.
getWriters
().
stream
()
List
<
HttpMessageReader
<?>>
readers
=
this
.
configurer
.
getReaders
();
.
filter
(
writer
->
ServerSentEventHttpMessageWriter
.
class
.
equals
(
writer
.
getClass
()))
Jackson2JsonDecoder
actualDecoder
=
findCodec
(
readers
,
Jackson2JsonDecoder
.
class
);
.
map
(
writer
->
(
ServerSentEventHttpMessageWriter
)
writer
)
assertThat
(
actualDecoder
).
isSameAs
(
decoder
);
.
findFirst
()
.
map
(
ServerSentEventHttpMessageWriter:
:
getEncoder
)
List
<
HttpMessageWriter
<?>>
writers
=
this
.
configurer
.
getWriters
();
.
filter
(
e
->
e
==
encoder
).
orElse
(
null
)).
isSameAs
(
encoder
);
Jackson2JsonEncoder
actualEncoder
=
findCodec
(
writers
,
Jackson2JsonEncoder
.
class
);
assertThat
(
actualEncoder
).
isSameAs
(
encoder
);
assertThat
(
findCodec
(
writers
,
ServerSentEventHttpMessageWriter
.
class
).
getEncoder
()).
isSameAs
(
encoder
);
}
}
@Test
@Test
...
@@ -261,7 +265,19 @@ public class ServerCodecConfigurerTests {
...
@@ -261,7 +265,19 @@ public class ServerCodecConfigurerTests {
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
private
<
T
>
T
findCodec
(
List
<?>
codecs
,
Class
<
T
>
type
)
{
private
<
T
>
T
findCodec
(
List
<?>
codecs
,
Class
<
T
>
type
)
{
return
(
T
)
codecs
.
stream
().
filter
(
type:
:
isInstance
).
findFirst
().
get
();
return
(
T
)
codecs
.
stream
()
.
map
(
c
->
{
if
(
c
instanceof
EncoderHttpMessageWriter
)
{
return
((
EncoderHttpMessageWriter
<?>)
c
).
getEncoder
();
}
else
if
(
c
instanceof
DecoderHttpMessageReader
)
{
return
((
DecoderHttpMessageReader
<?>)
c
).
getDecoder
();
}
else
{
return
c
;
}
})
.
filter
(
type:
:
isInstance
).
findFirst
().
get
();
}
}
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录