Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibizlab-boot-starters
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibizlab-boot-starters
提交
ca60d913
提交
ca60d913
编写于
10月 31, 2022
作者:
chenxiang@lab.ibiz5.com
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Feign Page对象解析
上级
8ed0a3ff
变更
1
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
49 行增加
和
0 行删除
+49
-0
FeignPageDecoder.java
...rc/main/java/cn/ibizlab/util/client/FeignPageDecoder.java
+49
-0
未找到文件。
ibizlab-boot-starter/src/main/java/cn/ibizlab/util/client/FeignPageDecoder.java
0 → 100644
浏览文件 @
ca60d913
package
cn
.
ibizlab
.
util
.
client
;
import
com.alibaba.fastjson.util.ParameterizedTypeImpl
;
import
com.google.common.collect.Lists
;
import
feign.FeignException
;
import
feign.Response
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.ObjectFactory
;
import
org.springframework.boot.autoconfigure.http.HttpMessageConverters
;
import
org.springframework.cloud.openfeign.support.SpringDecoder
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.lang.reflect.ParameterizedType
;
import
java.lang.reflect.Type
;
import
java.util.List
;
@Slf4j
@Component
public
class
FeignPageDecoder
extends
SpringDecoder
{
public
FeignPageDecoder
(
ObjectFactory
<
HttpMessageConverters
>
messageConverters
)
{
super
(
messageConverters
);
}
@Override
public
Object
decode
(
final
Response
response
,
Type
type
)
throws
IOException
,
FeignException
{
if
(
type
instanceof
ParameterizedType
&&
((
ParameterizedType
)
type
).
getRawType
()
==
Page
.
class
)
{
try
{
((
ParameterizedType
)
type
).
getActualTypeArguments
()[
0
].
getClass
();
ParameterizedTypeImpl
ss
=
new
ParameterizedTypeImpl
(((
ParameterizedType
)
type
).
getActualTypeArguments
(),
null
,
List
.
class
);
Object
ret
=
super
.
decode
(
response
,
ss
);
return
new
PageImpl
((
List
)
ret
,
PageRequest
.
of
(
Integer
.
parseInt
(
response
.
headers
().
get
(
"x-page"
).
toArray
()[
0
].
toString
()),
Integer
.
parseInt
(
response
.
headers
().
get
(
"x-per-page"
).
toArray
()[
0
].
toString
()))
,
Long
.
parseLong
(
response
.
headers
().
get
(
"x-total"
).
toArray
()[
0
].
toString
()));
}
catch
(
Exception
e
)
{
log
.
error
(
"FeignDecode转换Page发生错误:"
+
e
.
getMessage
());
return
new
PageImpl
(
Lists
.
newArrayList
(),
PageRequest
.
of
(
0
,
0
),
0
);
}
}
return
super
.
decode
(
response
,
type
);
}
}
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录