Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
f6d8c7d2
Commit
f6d8c7d2
authored
May 05, 2020
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simplify ReactiveWebServerApplicationContext.ServerManager
Closes gh-21315
parent
a688ac3f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
113 additions
and
35 deletions
+113
-35
MockReactiveWebServerFactory.java
...oconfigure/web/reactive/MockReactiveWebServerFactory.java
+91
-0
ReactiveManagementContextFactoryTests.java
...e/web/reactive/ReactiveManagementContextFactoryTests.java
+1
-1
ReactiveWebServerApplicationContext.java
...reactive/context/ReactiveWebServerApplicationContext.java
+21
-34
No files found.
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/web/reactive/MockReactiveWebServerFactory.java
0 → 100644
View file @
f6d8c7d2
/*
* Copyright 2012-2020 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
web
.
reactive
;
import
java.util.Map
;
import
org.springframework.boot.web.reactive.server.AbstractReactiveWebServerFactory
;
import
org.springframework.boot.web.reactive.server.ReactiveWebServerFactory
;
import
org.springframework.boot.web.server.WebServer
;
import
org.springframework.boot.web.server.WebServerException
;
import
org.springframework.http.server.reactive.HttpHandler
;
import
static
org
.
mockito
.
Mockito
.
spy
;
/**
* Mock {@link ReactiveWebServerFactory}.
*
* @author Brian Clozel
*/
class
MockReactiveWebServerFactory
extends
AbstractReactiveWebServerFactory
{
private
MockReactiveWebServer
webServer
;
@Override
public
WebServer
getWebServer
(
HttpHandler
httpHandler
)
{
this
.
webServer
=
spy
(
new
MockReactiveWebServer
(
httpHandler
,
getPort
()));
return
this
.
webServer
;
}
MockReactiveWebServer
getWebServer
()
{
return
this
.
webServer
;
}
static
class
MockReactiveWebServer
implements
WebServer
{
private
final
int
port
;
private
HttpHandler
httpHandler
;
private
Map
<
String
,
HttpHandler
>
httpHandlerMap
;
MockReactiveWebServer
(
HttpHandler
httpHandler
,
int
port
)
{
this
.
httpHandler
=
httpHandler
;
this
.
port
=
port
;
}
MockReactiveWebServer
(
Map
<
String
,
HttpHandler
>
httpHandlerMap
,
int
port
)
{
this
.
httpHandlerMap
=
httpHandlerMap
;
this
.
port
=
port
;
}
HttpHandler
getHttpHandler
()
{
return
this
.
httpHandler
;
}
Map
<
String
,
HttpHandler
>
getHttpHandlerMap
()
{
return
this
.
httpHandlerMap
;
}
@Override
public
void
start
()
throws
WebServerException
{
}
@Override
public
void
stop
()
throws
WebServerException
{
}
@Override
public
int
getPort
()
{
return
this
.
port
;
}
}
}
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/web/reactive/ReactiveManagementContextFactoryTests.java
View file @
f6d8c7d2
...
@@ -60,7 +60,7 @@ class ReactiveManagementContextFactoryTests {
...
@@ -60,7 +60,7 @@ class ReactiveManagementContextFactoryTests {
@Bean
@Bean
ReactiveWebServerFactory
reactiveWebServerFactory
()
{
ReactiveWebServerFactory
reactiveWebServerFactory
()
{
return
mock
(
ReactiveWebServerFactory
.
class
);
return
new
MockReactiveWebServerFactory
(
);
}
}
@Bean
@Bean
...
...
spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/context/ReactiveWebServerApplicationContext.java
View file @
f6d8c7d2
...
@@ -31,6 +31,7 @@ import org.springframework.context.ApplicationContextException;
...
@@ -31,6 +31,7 @@ import org.springframework.context.ApplicationContextException;
import
org.springframework.http.server.reactive.HttpHandler
;
import
org.springframework.http.server.reactive.HttpHandler
;
import
org.springframework.http.server.reactive.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpRequest
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.http.server.reactive.ServerHttpResponse
;
import
org.springframework.util.Assert
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
/**
/**
...
@@ -90,7 +91,7 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
...
@@ -90,7 +91,7 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
String
webServerFactoryBeanName
=
getWebServerFactoryBeanName
();
String
webServerFactoryBeanName
=
getWebServerFactoryBeanName
();
ReactiveWebServerFactory
webServerFactory
=
getWebServerFactory
(
webServerFactoryBeanName
);
ReactiveWebServerFactory
webServerFactory
=
getWebServerFactory
(
webServerFactoryBeanName
);
boolean
lazyInit
=
getBeanFactory
().
getBeanDefinition
(
webServerFactoryBeanName
).
isLazyInit
();
boolean
lazyInit
=
getBeanFactory
().
getBeanDefinition
(
webServerFactoryBeanName
).
isLazyInit
();
this
.
serverManager
=
ServerManager
.
get
(
webServerFactory
,
lazyInit
);
this
.
serverManager
=
new
ServerManager
(
webServerFactory
,
lazyInit
);
}
}
initPropertySources
();
initPropertySources
();
}
}
...
@@ -124,8 +125,11 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
...
@@ -124,8 +125,11 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
private
WebServer
startReactiveWebServer
()
{
private
WebServer
startReactiveWebServer
()
{
ServerManager
serverManager
=
this
.
serverManager
;
ServerManager
serverManager
=
this
.
serverManager
;
ServerManager
.
start
(
serverManager
,
this
::
getHttpHandler
);
if
(
serverManager
!=
null
)
{
return
ServerManager
.
getWebServer
(
serverManager
);
serverManager
.
start
(
this
::
getHttpHandler
);
return
serverManager
.
server
;
}
return
null
;
}
}
/**
/**
...
@@ -166,11 +170,13 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
...
@@ -166,11 +170,13 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
private
void
stopAndReleaseReactiveWebServer
()
{
private
void
stopAndReleaseReactiveWebServer
()
{
ServerManager
serverManager
=
this
.
serverManager
;
ServerManager
serverManager
=
this
.
serverManager
;
try
{
if
(
serverManager
!=
null
)
{
ServerManager
.
stop
(
serverManager
);
try
{
}
serverManager
.
server
.
stop
();
finally
{
}
this
.
serverManager
=
null
;
finally
{
this
.
serverManager
=
null
;
}
}
}
}
}
...
@@ -181,7 +187,8 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
...
@@ -181,7 +187,8 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
*/
*/
@Override
@Override
public
WebServer
getWebServer
()
{
public
WebServer
getWebServer
()
{
return
ServerManager
.
getWebServer
(
this
.
serverManager
);
ServerManager
serverManager
=
this
.
serverManager
;
return
(
serverManager
!=
null
)
?
serverManager
.
server
:
null
;
}
}
@Override
@Override
...
@@ -225,6 +232,7 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
...
@@ -225,6 +232,7 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
private
volatile
HttpHandler
handler
;
private
volatile
HttpHandler
handler
;
private
ServerManager
(
ReactiveWebServerFactory
factory
,
boolean
lazyInit
)
{
private
ServerManager
(
ReactiveWebServerFactory
factory
,
boolean
lazyInit
)
{
Assert
.
notNull
(
factory
,
"ReactiveWebServerFactory must not be null"
);
this
.
handler
=
this
::
handleUninitialized
;
this
.
handler
=
this
::
handleUninitialized
;
this
.
server
=
factory
.
getWebServer
(
this
);
this
.
server
=
factory
.
getWebServer
(
this
);
this
.
lazyInit
=
lazyInit
;
this
.
lazyInit
=
lazyInit
;
...
@@ -243,31 +251,10 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
...
@@ -243,31 +251,10 @@ public class ReactiveWebServerApplicationContext extends GenericReactiveWebAppli
return
this
.
handler
;
return
this
.
handler
;
}
}
static
ServerManager
get
(
ReactiveWebServerFactory
factory
,
boolean
lazyInit
)
{
private
void
start
(
Supplier
<
HttpHandler
>
handlerSupplier
)
{
return
new
ServerManager
(
factory
,
lazyInit
);
this
.
handler
=
this
.
lazyInit
?
new
LazyHttpHandler
(
Mono
.
fromSupplier
(
handlerSupplier
))
}
:
handlerSupplier
.
get
();
this
.
server
.
start
();
static
WebServer
getWebServer
(
ServerManager
manager
)
{
return
(
manager
!=
null
)
?
manager
.
server
:
null
;
}
static
void
start
(
ServerManager
manager
,
Supplier
<
HttpHandler
>
handlerSupplier
)
{
if
(
manager
!=
null
&&
manager
.
server
!=
null
)
{
manager
.
handler
=
manager
.
lazyInit
?
new
LazyHttpHandler
(
Mono
.
fromSupplier
(
handlerSupplier
))
:
handlerSupplier
.
get
();
manager
.
server
.
start
();
}
}
static
void
stop
(
ServerManager
manager
)
{
if
(
manager
!=
null
&&
manager
.
server
!=
null
)
{
try
{
manager
.
server
.
stop
();
}
catch
(
Exception
ex
)
{
throw
new
IllegalStateException
(
ex
);
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment