Skip to content

Commit 3eb2432

Browse files
committed
Fix TODO in ReactorHttpServer
1 parent 1f4c6de commit 3eb2432

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

spring-web/src/test/java/org/springframework/http/server/reactive/bootstrap/ReactorHttpServer.java

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.http.server.reactive.bootstrap;
1818

19+
import java.util.concurrent.atomic.AtomicReference;
20+
1921
import reactor.core.Loopback;
2022
import reactor.ipc.netty.NettyContext;
2123

@@ -31,7 +33,7 @@ public class ReactorHttpServer extends HttpServerSupport implements HttpServer,
3133

3234
private reactor.ipc.netty.http.server.HttpServer reactorServer;
3335

34-
private NettyContext running;
36+
private AtomicReference<NettyContext> nettyContext = new AtomicReference<>();
3537

3638

3739
@Override
@@ -43,42 +45,39 @@ public void afterPropertiesSet() throws Exception {
4345
Assert.notNull(getHttpHandler());
4446
this.reactorHandler = new ReactorHttpHandlerAdapter(getHttpHandler());
4547
}
46-
this.reactorServer = reactor.ipc.netty.http.server.HttpServer.create(getHost(),
47-
getPort());
48+
this.reactorServer = reactor.ipc.netty.http.server.HttpServer
49+
.create(getHost(), getPort());
4850
}
4951

5052

5153
@Override
5254
public boolean isRunning() {
53-
NettyContext running = this.running;
54-
return running != null && running.channel()
55-
.isActive();
55+
NettyContext context = this.nettyContext.get();
56+
return (context != null && context.channel().isActive());
5657
}
5758

5859
@Override
5960
public Object connectedInput() {
60-
return reactorServer;
61+
return this.reactorServer;
6162
}
6263

6364
@Override
6465
public Object connectedOutput() {
65-
return reactorServer;
66+
return this.reactorServer;
6667
}
6768

6869
@Override
6970
public void start() {
70-
// TODO: should be made thread-safe (compareAndSet..)
71-
if (this.running == null) {
72-
this.running = this.reactorServer.newHandler(reactorHandler).block();
71+
if (this.nettyContext.get() == null) {
72+
this.nettyContext.set(this.reactorServer.newHandler(reactorHandler).block());
7373
}
7474
}
7575

7676
@Override
7777
public void stop() {
78-
NettyContext running = this.running;
79-
if (running != null) {
80-
this.running = null;
81-
running.dispose();
78+
NettyContext context = this.nettyContext.getAndSet(null);
79+
if (context != null) {
80+
context.dispose();
8281
}
8382
}
8483
}

0 commit comments

Comments
 (0)