Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
6eb0e9e4
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,发现更多精彩内容 >>
提交
6eb0e9e4
编写于
9月 11, 2019
作者:
R
Rossen Stoyanchev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Unwrap decorated request or response
Closes: gh-23598
上级
9db41181
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
87 addition
and
23 deletion
+87
-23
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/JettyRequestUpgradeStrategy.java
...ve/socket/server/upgrade/JettyRequestUpgradeStrategy.java
+28
-9
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategy.java
...et/server/upgrade/ReactorNettyRequestUpgradeStrategy.java
+16
-2
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/TomcatRequestUpgradeStrategy.java
...e/socket/server/upgrade/TomcatRequestUpgradeStrategy.java
+28
-9
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/UndertowRequestUpgradeStrategy.java
...socket/server/upgrade/UndertowRequestUpgradeStrategy.java
+15
-3
未找到文件。
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/JettyRequestUpgradeStrategy.java
浏览文件 @
6eb0e9e4
/*
* Copyright 2002-201
8
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -18,6 +18,7 @@ package org.springframework.web.reactive.socket.server.upgrade;
import
java.io.IOException
;
import
java.util.function.Supplier
;
import
javax.servlet.ServletContext
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -32,7 +33,9 @@ import org.springframework.core.io.buffer.DataBufferFactory;
import
org.springframework.http.server.reactive.AbstractServerHttpRequest
;
import
org.springframework.http.server.reactive.AbstractServerHttpResponse
;
import
org.springframework.http.server.reactive.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpRequestDecorator
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.http.server.reactive.ServerHttpResponseDecorator
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.Assert
;
import
org.springframework.web.reactive.socket.HandshakeInfo
;
...
...
@@ -144,8 +147,8 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
ServerHttpRequest
request
=
exchange
.
getRequest
();
ServerHttpResponse
response
=
exchange
.
getResponse
();
HttpServletRequest
servletRequest
=
get
HttpServlet
Request
(
request
);
HttpServletResponse
servletResponse
=
get
HttpServlet
Response
(
response
);
HttpServletRequest
servletRequest
=
get
Native
Request
(
request
);
HttpServletResponse
servletResponse
=
get
Native
Response
(
response
);
HandshakeInfo
handshakeInfo
=
handshakeInfoFactory
.
get
();
DataBufferFactory
factory
=
response
.
bufferFactory
();
...
...
@@ -173,14 +176,30 @@ public class JettyRequestUpgradeStrategy implements RequestUpgradeStrategy, Life
return
Mono
.
empty
();
}
private
HttpServletRequest
getHttpServletRequest
(
ServerHttpRequest
request
)
{
Assert
.
isInstanceOf
(
AbstractServerHttpRequest
.
class
,
request
);
return
((
AbstractServerHttpRequest
)
request
).
getNativeRequest
();
private
static
HttpServletRequest
getNativeRequest
(
ServerHttpRequest
request
)
{
if
(
request
instanceof
AbstractServerHttpRequest
)
{
return
((
AbstractServerHttpRequest
)
request
).
getNativeRequest
();
}
else
if
(
request
instanceof
ServerHttpRequestDecorator
)
{
return
getNativeRequest
(((
ServerHttpRequestDecorator
)
request
).
getDelegate
());
}
else
{
throw
new
IllegalArgumentException
(
"Couldn't find HttpServletRequest in "
+
request
.
getClass
().
getName
());
}
}
private
HttpServletResponse
getHttpServletResponse
(
ServerHttpResponse
response
)
{
Assert
.
isInstanceOf
(
AbstractServerHttpResponse
.
class
,
response
);
return
((
AbstractServerHttpResponse
)
response
).
getNativeResponse
();
private
static
HttpServletResponse
getNativeResponse
(
ServerHttpResponse
response
)
{
if
(
response
instanceof
AbstractServerHttpResponse
)
{
return
((
AbstractServerHttpResponse
)
response
).
getNativeResponse
();
}
else
if
(
response
instanceof
ServerHttpResponseDecorator
)
{
return
getNativeResponse
(((
ServerHttpResponseDecorator
)
response
).
getDelegate
());
}
else
{
throw
new
IllegalArgumentException
(
"Couldn't find HttpServletResponse in "
+
response
.
getClass
().
getName
());
}
}
private
void
startLazily
(
HttpServletRequest
request
)
{
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategy.java
浏览文件 @
6eb0e9e4
/*
* Copyright 2002-201
8
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -24,6 +24,7 @@ import reactor.netty.http.server.HttpServerResponse;
import
org.springframework.core.io.buffer.NettyDataBufferFactory
;
import
org.springframework.http.server.reactive.AbstractServerHttpResponse
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.http.server.reactive.ServerHttpResponseDecorator
;
import
org.springframework.lang.Nullable
;
import
org.springframework.web.reactive.socket.HandshakeInfo
;
import
org.springframework.web.reactive.socket.WebSocketHandler
;
...
...
@@ -72,7 +73,7 @@ public class ReactorNettyRequestUpgradeStrategy implements RequestUpgradeStrateg
@Nullable
String
subProtocol
,
Supplier
<
HandshakeInfo
>
handshakeInfoFactory
)
{
ServerHttpResponse
response
=
exchange
.
getResponse
();
HttpServerResponse
reactorResponse
=
((
AbstractServerHttpResponse
)
response
).
getNativeResponse
(
);
HttpServerResponse
reactorResponse
=
getNativeResponse
(
response
);
HandshakeInfo
handshakeInfo
=
handshakeInfoFactory
.
get
();
NettyDataBufferFactory
bufferFactory
=
(
NettyDataBufferFactory
)
response
.
bufferFactory
();
...
...
@@ -85,4 +86,17 @@ public class ReactorNettyRequestUpgradeStrategy implements RequestUpgradeStrateg
});
}
private
static
HttpServerResponse
getNativeResponse
(
ServerHttpResponse
response
)
{
if
(
response
instanceof
AbstractServerHttpResponse
)
{
return
((
AbstractServerHttpResponse
)
response
).
getNativeResponse
();
}
else
if
(
response
instanceof
ServerHttpResponseDecorator
)
{
return
getNativeResponse
(((
ServerHttpResponseDecorator
)
response
).
getDelegate
());
}
else
{
throw
new
IllegalArgumentException
(
"Couldn't find native response in "
+
response
.
getClass
().
getName
());
}
}
}
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/TomcatRequestUpgradeStrategy.java
浏览文件 @
6eb0e9e4
/*
* Copyright 2002-201
8
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -19,6 +19,7 @@ package org.springframework.web.reactive.socket.server.upgrade;
import
java.io.IOException
;
import
java.util.Collections
;
import
java.util.function.Supplier
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -32,7 +33,9 @@ import org.springframework.core.io.buffer.DataBufferFactory;
import
org.springframework.http.server.reactive.AbstractServerHttpRequest
;
import
org.springframework.http.server.reactive.AbstractServerHttpResponse
;
import
org.springframework.http.server.reactive.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpRequestDecorator
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.http.server.reactive.ServerHttpResponseDecorator
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.Assert
;
import
org.springframework.web.reactive.socket.HandshakeInfo
;
...
...
@@ -130,8 +133,8 @@ public class TomcatRequestUpgradeStrategy implements RequestUpgradeStrategy {
ServerHttpRequest
request
=
exchange
.
getRequest
();
ServerHttpResponse
response
=
exchange
.
getResponse
();
HttpServletRequest
servletRequest
=
get
HttpServlet
Request
(
request
);
HttpServletResponse
servletResponse
=
get
HttpServlet
Response
(
response
);
HttpServletRequest
servletRequest
=
get
Native
Request
(
request
);
HttpServletResponse
servletResponse
=
get
Native
Response
(
response
);
HandshakeInfo
handshakeInfo
=
handshakeInfoFactory
.
get
();
DataBufferFactory
bufferFactory
=
response
.
bufferFactory
();
...
...
@@ -155,14 +158,30 @@ public class TomcatRequestUpgradeStrategy implements RequestUpgradeStrategy {
return
Mono
.
empty
();
}
private
HttpServletRequest
getHttpServletRequest
(
ServerHttpRequest
request
)
{
Assert
.
isInstanceOf
(
AbstractServerHttpRequest
.
class
,
request
,
"ServletServerHttpRequest required"
);
return
((
AbstractServerHttpRequest
)
request
).
getNativeRequest
();
private
static
HttpServletRequest
getNativeRequest
(
ServerHttpRequest
request
)
{
if
(
request
instanceof
AbstractServerHttpRequest
)
{
return
((
AbstractServerHttpRequest
)
request
).
getNativeRequest
();
}
else
if
(
request
instanceof
ServerHttpRequestDecorator
)
{
return
getNativeRequest
(((
ServerHttpRequestDecorator
)
request
).
getDelegate
());
}
else
{
throw
new
IllegalArgumentException
(
"Couldn't find HttpServletRequest in "
+
request
.
getClass
().
getName
());
}
}
private
HttpServletResponse
getHttpServletResponse
(
ServerHttpResponse
response
)
{
Assert
.
isInstanceOf
(
AbstractServerHttpResponse
.
class
,
response
,
"ServletServerHttpResponse required"
);
return
((
AbstractServerHttpResponse
)
response
).
getNativeResponse
();
private
static
HttpServletResponse
getNativeResponse
(
ServerHttpResponse
response
)
{
if
(
response
instanceof
AbstractServerHttpResponse
)
{
return
((
AbstractServerHttpResponse
)
response
).
getNativeResponse
();
}
else
if
(
response
instanceof
ServerHttpResponseDecorator
)
{
return
getNativeResponse
(((
ServerHttpResponseDecorator
)
response
).
getDelegate
());
}
else
{
throw
new
IllegalArgumentException
(
"Couldn't find HttpServletResponse in "
+
response
.
getClass
().
getName
());
}
}
private
WsServerContainer
getContainer
(
HttpServletRequest
request
)
{
...
...
spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/UndertowRequestUpgradeStrategy.java
浏览文件 @
6eb0e9e4
...
...
@@ -33,6 +33,7 @@ import reactor.core.publisher.Mono;
import
org.springframework.core.io.buffer.DataBufferFactory
;
import
org.springframework.http.server.reactive.AbstractServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpRequestDecorator
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.Assert
;
import
org.springframework.web.reactive.socket.HandshakeInfo
;
...
...
@@ -55,9 +56,7 @@ public class UndertowRequestUpgradeStrategy implements RequestUpgradeStrategy {
public
Mono
<
Void
>
upgrade
(
ServerWebExchange
exchange
,
WebSocketHandler
handler
,
@Nullable
String
subProtocol
,
Supplier
<
HandshakeInfo
>
handshakeInfoFactory
)
{
ServerHttpRequest
request
=
exchange
.
getRequest
();
Assert
.
isInstanceOf
(
AbstractServerHttpRequest
.
class
,
request
);
HttpServerExchange
httpExchange
=
((
AbstractServerHttpRequest
)
request
).
getNativeRequest
();
HttpServerExchange
httpExchange
=
getNativeRequest
(
exchange
.
getRequest
());
Set
<
String
>
protocols
=
(
subProtocol
!=
null
?
Collections
.
singleton
(
subProtocol
)
:
Collections
.
emptySet
());
Hybi13Handshake
handshake
=
new
Hybi13Handshake
(
protocols
,
false
);
...
...
@@ -77,6 +76,19 @@ public class UndertowRequestUpgradeStrategy implements RequestUpgradeStrategy {
return
Mono
.
empty
();
}
private
static
HttpServerExchange
getNativeRequest
(
ServerHttpRequest
request
)
{
if
(
request
instanceof
AbstractServerHttpRequest
)
{
return
((
AbstractServerHttpRequest
)
request
).
getNativeRequest
();
}
else
if
(
request
instanceof
ServerHttpRequestDecorator
)
{
return
getNativeRequest
(((
ServerHttpRequestDecorator
)
request
).
getDelegate
());
}
else
{
throw
new
IllegalArgumentException
(
"Couldn't find HttpServerExchange in "
+
request
.
getClass
().
getName
());
}
}
private
class
DefaultCallback
implements
WebSocketConnectionCallback
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录