Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
a1639387
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 搜索 >>
提交
a1639387
编写于
6月 03, 2016
作者:
R
Rossen Stoyanchev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Message converters are configurable
上级
b20ea757
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
51 addition
and
31 deletion
+51
-31
spring-web-reactive/src/main/java/org/springframework/web/reactive/result/method/annotation/RequestMappingHandlerAdapter.java
...esult/method/annotation/RequestMappingHandlerAdapter.java
+30
-20
spring-web-reactive/src/main/java/org/springframework/web/reactive/result/method/annotation/SessionAttributeMethodArgumentResolver.java
...od/annotation/SessionAttributeMethodArgumentResolver.java
+0
-1
spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/freemarker/FreeMarkerView.java
...k/web/reactive/result/view/freemarker/FreeMarkerView.java
+1
-0
spring-web-reactive/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java
...ngframework/web/reactive/DispatcherHandlerErrorTests.java
+4
-5
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingIntegrationTests.java
...ult/method/annotation/RequestMappingIntegrationTests.java
+16
-5
未找到文件。
spring-web-reactive/src/main/java/org/springframework/web/reactive/result/method/annotation/RequestMappingHandlerAdapter.java
浏览文件 @
a1639387
...
...
@@ -17,9 +17,7 @@
package
org.springframework.web.reactive.result.method.annotation
;
import
java.lang.reflect.Method
;
import
java.nio.ByteBuffer
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
...
...
@@ -34,16 +32,9 @@ import org.springframework.beans.factory.BeanFactoryAware;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.config.ConfigurableBeanFactory
;
import
org.springframework.core.codec.support.ByteBufferDecoder
;
import
org.springframework.core.codec.support.ByteBufferEncoder
;
import
org.springframework.core.codec.support.JacksonJsonDecoder
;
import
org.springframework.core.codec.support.JacksonJsonEncoder
;
import
org.springframework.core.codec.support.Jaxb2Decoder
;
import
org.springframework.core.codec.support.Jaxb2Encoder
;
import
org.springframework.core.codec.support.JsonObjectDecoder
;
import
org.springframework.core.codec.support.StringDecoder
;
import
org.springframework.core.codec.support.StringEncoder
;
import
org.springframework.core.convert.ConversionService
;
import
org.springframework.
core.convert.support.Default
ConversionService
;
import
org.springframework.
format.support.DefaultFormatting
ConversionService
;
import
org.springframework.http.converter.reactive.CodecHttpMessageConverter
;
import
org.springframework.http.converter.reactive.HttpMessageConverter
;
import
org.springframework.ui.ExtendedModelMap
;
...
...
@@ -68,13 +59,20 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
private
final
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
=
new
ArrayList
<>();
private
ConversionService
conversionService
=
new
DefaultConversionService
();
private
final
List
<
HttpMessageConverter
<?>>
messageConverters
=
new
ArrayList
<>
();
private
final
Map
<
Class
<?>,
ExceptionHandlerMethodResolver
>
exceptionHandlerCache
=
new
ConcurrentHashMap
<>(
64
);
private
ConversionService
conversionService
=
new
DefaultFormattingConversionService
();
private
ConfigurableBeanFactory
beanFactory
;
private
final
Map
<
Class
<?>,
ExceptionHandlerMethodResolver
>
exceptionHandlerCache
=
new
ConcurrentHashMap
<>(
64
);
public
RequestMappingHandlerAdapter
()
{
this
.
messageConverters
.
add
(
new
CodecHttpMessageConverter
<>(
new
ByteBufferDecoder
()));
this
.
messageConverters
.
add
(
new
CodecHttpMessageConverter
<>(
new
StringDecoder
()));
}
/**
...
...
@@ -93,6 +91,18 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
return
this
.
argumentResolvers
;
}
public
void
setMessageConverters
(
List
<
HttpMessageConverter
<?>>
messageConverters
)
{
this
.
messageConverters
.
clear
();
this
.
messageConverters
.
addAll
(
messageConverters
);
}
/**
* Provide the message converters to use for argument resolution.
*/
public
List
<
HttpMessageConverter
<?>>
getMessageConverters
()
{
return
this
.
messageConverters
;
}
public
void
setConversionService
(
ConversionService
conversionService
)
{
this
.
conversionService
=
conversionService
;
}
...
...
@@ -121,12 +131,12 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
public
void
afterPropertiesSet
()
throws
Exception
{
if
(
ObjectUtils
.
isEmpty
(
this
.
argumentResolvers
))
{
List
<
HttpMessageConverter
<?>>
converters
=
Arrays
.
asList
(
new
CodecHttpMessageConverter
<
ByteBuffer
>(
new
ByteBufferEncoder
(),
new
ByteBufferDecoder
()),
new
CodecHttpMessageConverter
<
String
>(
new
StringEncoder
(),
new
StringDecoder
()),
new
CodecHttpMessageConverter
<
Object
>(
new
Jaxb2Encoder
(),
new
Jaxb2Decoder
()),
new
CodecHttpMessageConverter
<
Object
>(
new
JacksonJsonEncoder
(),
new
JacksonJsonDecoder
(
new
JsonObjectDecoder
())));
//
List<HttpMessageConverter<?>> converters = Arrays.asList(
//
new CodecHttpMessageConverter<ByteBuffer>(new ByteBufferEncoder(), new ByteBufferDecoder()),
//
new CodecHttpMessageConverter<String>(new StringEncoder(), new StringDecoder()),
//
new CodecHttpMessageConverter<Object>(new Jaxb2Encoder(), new Jaxb2Decoder()),
//
new CodecHttpMessageConverter<Object>(new JacksonJsonEncoder(),
//
new JacksonJsonDecoder(new JsonObjectDecoder())));
// Annotation-based argument resolution
ConversionService
cs
=
getConversionService
();
...
...
@@ -134,7 +144,7 @@ public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactory
this
.
argumentResolvers
.
add
(
new
RequestParamMapMethodArgumentResolver
());
this
.
argumentResolvers
.
add
(
new
PathVariableMethodArgumentResolver
(
cs
,
getBeanFactory
()));
this
.
argumentResolvers
.
add
(
new
PathVariableMapMethodArgumentResolver
());
this
.
argumentResolvers
.
add
(
new
RequestBodyArgumentResolver
(
converters
,
cs
));
this
.
argumentResolvers
.
add
(
new
RequestBodyArgumentResolver
(
getMessageConverters
()
,
cs
));
this
.
argumentResolvers
.
add
(
new
RequestHeaderMethodArgumentResolver
(
cs
,
getBeanFactory
()));
this
.
argumentResolvers
.
add
(
new
RequestHeaderMapMethodArgumentResolver
());
this
.
argumentResolvers
.
add
(
new
CookieValueMethodArgumentResolver
(
cs
,
getBeanFactory
()));
...
...
spring-web-reactive/src/main/java/org/springframework/web/reactive/result/method/annotation/SessionAttributeMethodArgumentResolver.java
浏览文件 @
a1639387
...
...
@@ -48,7 +48,6 @@ public class SessionAttributeMethodArgumentResolver extends AbstractNamedValueMe
return
parameter
.
hasParameterAnnotation
(
SessionAttribute
.
class
);
}
@Override
protected
NamedValueInfo
createNamedValueInfo
(
MethodParameter
parameter
)
{
SessionAttribute
annot
=
parameter
.
getParameterAnnotation
(
SessionAttribute
.
class
);
...
...
spring-web-reactive/src/main/java/org/springframework/web/reactive/result/view/freemarker/FreeMarkerView.java
浏览文件 @
a1639387
...
...
@@ -166,6 +166,7 @@ public class FreeMarkerView extends AbstractUrlBasedView {
Locale
locale
=
Locale
.
getDefault
();
// TODO
DataBuffer
dataBuffer
=
exchange
.
getResponse
().
bufferFactory
().
allocateBuffer
();
try
{
// TODO: pass charset
Writer
writer
=
new
OutputStreamWriter
(
dataBuffer
.
asOutputStream
());
getTemplate
(
locale
).
process
(
freeMarkerModel
,
writer
);
}
...
...
spring-web-reactive/src/test/java/org/springframework/web/reactive/DispatcherHandlerErrorTests.java
浏览文件 @
a1639387
...
...
@@ -32,6 +32,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.codec.support.StringDecoder
;
import
org.springframework.core.codec.support.StringEncoder
;
import
org.springframework.core.convert.ConversionService
;
import
org.springframework.core.convert.support.DefaultConversionService
;
import
org.springframework.core.io.buffer.DataBuffer
;
import
org.springframework.core.io.buffer.DefaultDataBufferFactory
;
...
...
@@ -230,11 +231,9 @@ public class DispatcherHandlerErrorTests {
@Bean
public
ResponseBodyResultHandler
resultHandler
()
{
List
<
HttpMessageConverter
<?>>
converters
=
Collections
.
singletonList
(
new
CodecHttpMessageConverter
<>(
new
StringEncoder
(),
new
StringDecoder
()));
return
new
ResponseBodyResultHandler
(
converters
,
new
DefaultConversionService
());
HttpMessageConverter
<
String
>
converter
=
new
CodecHttpMessageConverter
<>(
new
StringEncoder
());
ConversionService
conversionService
=
new
DefaultConversionService
();
return
new
ResponseBodyResultHandler
(
Collections
.
singletonList
(
converter
),
conversionService
);
}
@Bean
...
...
spring-web-reactive/src/test/java/org/springframework/web/reactive/result/method/annotation/RequestMappingIntegrationTests.java
浏览文件 @
a1639387
...
...
@@ -44,6 +44,9 @@ import org.springframework.core.codec.support.ByteBufferDecoder;
import
org.springframework.core.codec.support.ByteBufferEncoder
;
import
org.springframework.core.codec.support.JacksonJsonDecoder
;
import
org.springframework.core.codec.support.JacksonJsonEncoder
;
import
org.springframework.core.codec.support.Jaxb2Decoder
;
import
org.springframework.core.codec.support.Jaxb2Encoder
;
import
org.springframework.core.codec.support.JsonObjectDecoder
;
import
org.springframework.core.codec.support.StringDecoder
;
import
org.springframework.core.codec.support.StringEncoder
;
import
org.springframework.core.convert.ConversionService
;
...
...
@@ -392,10 +395,20 @@ public class RequestMappingIntegrationTests extends AbstractHttpHandlerIntegrati
@Bean
public
RequestMappingHandlerAdapter
handlerAdapter
()
{
RequestMappingHandlerAdapter
handlerAdapter
=
new
RequestMappingHandlerAdapter
();
handlerAdapter
.
setMessageConverters
(
getDefaultMessageConverters
());
handlerAdapter
.
setConversionService
(
conversionService
());
return
handlerAdapter
;
}
private
List
<
HttpMessageConverter
<?>>
getDefaultMessageConverters
()
{
return
Arrays
.
asList
(
new
CodecHttpMessageConverter
<>(
new
ByteBufferEncoder
(),
new
ByteBufferDecoder
()),
new
CodecHttpMessageConverter
<>(
new
StringEncoder
(),
new
StringDecoder
()),
new
CodecHttpMessageConverter
<>(
new
Jaxb2Encoder
(),
new
Jaxb2Decoder
()),
new
CodecHttpMessageConverter
<>(
new
JacksonJsonEncoder
(),
new
JacksonJsonDecoder
(
new
JsonObjectDecoder
())));
}
@Bean
public
ConversionService
conversionService
()
{
// TODO: test failures with DefaultConversionService
...
...
@@ -407,11 +420,9 @@ public class RequestMappingIntegrationTests extends AbstractHttpHandlerIntegrati
@Bean
public
ResponseBodyResultHandler
responseBodyResultHandler
()
{
List
<
HttpMessageConverter
<?>>
converters
=
Arrays
.
asList
(
new
ResourceHttpMessageConverter
(),
new
CodecHttpMessageConverter
<>(
new
ByteBufferEncoder
(),
new
ByteBufferDecoder
()),
new
CodecHttpMessageConverter
<>(
new
StringEncoder
(),
new
StringDecoder
()),
new
CodecHttpMessageConverter
<>(
new
JacksonJsonEncoder
(),
new
JacksonJsonDecoder
()));
List
<
HttpMessageConverter
<?>>
converters
=
new
ArrayList
<>();
converters
.
add
(
new
ResourceHttpMessageConverter
());
converters
.
addAll
(
getDefaultMessageConverters
());
return
new
ResponseBodyResultHandler
(
converters
,
conversionService
());
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录