Skip to content

Commit 66f2018

Browse files
committed
Polish code for chapter 8 rewrite
1 parent 95262fb commit 66f2018

File tree

16 files changed

+127
-136
lines changed

16 files changed

+127
-136
lines changed

8/part1/chat/build.gradle

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,14 @@ configurations {
4646
}
4747

4848
dependencies {
49+
// tag::websocket[]
4950
compile('org.springframework.boot:spring-boot-starter-webflux')
50-
compile('org.springframework.boot:spring-boot-starter-actuator')
51-
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
52-
compile('org.springframework.boot:spring-boot-starter-data-mongodb-reactive')
53-
compile('org.springframework.boot:spring-boot-devtools')
5451
compile('org.projectlombok:lombok')
5552
compile('org.springframework.cloud:spring-cloud-starter-stream-rabbit')
5653
compile('org.springframework.cloud:spring-cloud-stream-reactive')
5754
compile('org.springframework.cloud:spring-cloud-starter-eureka')
58-
compile('org.springframework.cloud:spring-cloud-starter-hystrix')
5955
compile('org.springframework.cloud:spring-cloud-starter-config')
56+
// end::websocket[]
6057

6158
testCompile('org.springframework.boot:spring-boot-starter-test')
6259
}

8/part1/chat/src/main/java/com/greglturnquist/learningspringboot/chat/CommentService.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,34 @@
1515
*/
1616
package com.greglturnquist.learningspringboot.chat;
1717

18-
import org.slf4j.Logger;
19-
import org.slf4j.LoggerFactory;
2018
import reactor.core.publisher.Flux;
2119
import reactor.core.publisher.FluxSink;
2220
import reactor.core.publisher.Mono;
2321

22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
2424
import org.springframework.cloud.stream.annotation.EnableBinding;
2525
import org.springframework.cloud.stream.annotation.StreamListener;
2626
import org.springframework.cloud.stream.messaging.Sink;
2727
import org.springframework.stereotype.Service;
2828
import org.springframework.web.reactive.socket.WebSocketHandler;
2929
import org.springframework.web.reactive.socket.WebSocketSession;
30-
3130
import com.fasterxml.jackson.core.JsonProcessingException;
3231
import com.fasterxml.jackson.databind.ObjectMapper;
3332

3433
/**
3534
* @author Greg Turnquist
3635
*/
37-
// tag::code[]
36+
// tag::code-1[]
3837
@Service
3938
@EnableBinding(Sink.class)
4039
public class CommentService implements WebSocketHandler {
4140

4241
private final static Logger log =
4342
LoggerFactory.getLogger(CommentService.class);
43+
// end::code-1[]
4444

45+
// tag::code-2[]
4546
private ObjectMapper mapper;
4647
private Flux<Comment> flux;
4748
private FluxSink<Comment> webSocketCommentSink;
@@ -54,7 +55,9 @@ public class CommentService implements WebSocketHandler {
5455
.publish()
5556
.autoConnect();
5657
}
58+
// end::code-2[]
5759

60+
// tag::broadcast[]
5861
@StreamListener(Sink.INPUT)
5962
public void broadcast(Comment comment) {
6063
if (webSocketCommentSink != null) {
@@ -63,7 +66,9 @@ public void broadcast(Comment comment) {
6366
webSocketCommentSink.next(comment);
6467
}
6568
}
69+
// end::broadcast[]
6670

71+
// tag::handle[]
6772
@Override
6873
public Mono<Void> handle(WebSocketSession session) {
6974
return session.send(this.flux
@@ -79,6 +84,7 @@ public Mono<Void> handle(WebSocketSession session) {
7984
.log("wrap-as-websocket-message"))
8085
.log("publish-to-websocket");
8186
}
87+
// end::handle[]
8288

8389
}
8490
// end::code[]

8/part1/chat/src/main/java/com/greglturnquist/learningspringboot/chat/WebSocketConfig.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
public class WebSocketConfig {
3535
// end::websocket-1[]
3636

37+
// tag::websocket-2[]
3738
@Bean
3839
HandlerMapping webSocketMapping(CommentService commentService) {
3940
Map<String, WebSocketHandler> urlMap = new HashMap<>();
@@ -51,9 +52,12 @@ HandlerMapping webSocketMapping(CommentService commentService) {
5152

5253
return mapping;
5354
}
55+
// end::websocket-2[]
5456

57+
// tag::websocket-3[]
5558
@Bean
5659
WebSocketHandlerAdapter handlerAdapter() {
5760
return new WebSocketHandlerAdapter();
5861
}
62+
// end::websocket-3[]
5963
}

8/part1/comments/src/main/java/com/greglturnquist/learningspringboot/comments/CommentService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package com.greglturnquist.learningspringboot.comments;
1717

18+
import org.slf4j.Logger;
19+
import org.slf4j.LoggerFactory;
1820
import reactor.core.publisher.Flux;
1921

2022
import org.springframework.boot.CommandLineRunner;
@@ -36,6 +38,8 @@
3638
public class CommentService {
3739
// end::stream-1[]
3840

41+
private static final Logger log = LoggerFactory.getLogger(CommentService.class);
42+
3943
private final CommentRepository repository;
4044

4145
private final CounterService counterService;
@@ -53,6 +57,7 @@ public Flux<Comment> save(@Input(Processor.INPUT) Flux<Comment> newComment) {
5357
return repository
5458
.saveAll(newComment)
5559
.map(comment -> {
60+
log.info("Saving new comment " + comment);
5661
counterService.increment(
5762
"comments.total.consumed");
5863
counterService.increment(

8/part1/images/build.gradle

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,7 @@ dependencies {
6060
compile('org.springframework.cloud:spring-cloud-starter-config')
6161

6262
compile('org.projectlombok:lombok')
63-
64-
// tag::websocket[]
65-
compile('org.webjars:requirejs:2.2.0')
66-
compile('org.webjars.npm:stompjs:2.3.3') {
67-
// We are using SockJS for websocket functionality
68-
exclude module: 'websocket'
69-
}
70-
compile('org.webjars.bower:sockjs-client:1.1.0')
71-
// end::websocket[]
72-
63+
7364
testCompile('org.springframework.boot:spring-boot-starter-test')
7465
testCompile("io.projectreactor:reactor-test")
7566
}

8/part1/images/src/main/resources/templates/index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ <h1>Learning Spring Boot - 2nd Edition</h1>
9494
ul.appendChild(li);
9595
}
9696
// end::stomp[]
97-
9897
})();
9998
/*]]>*/
10099
</script>

8/part2/chat/src/main/java/com/greglturnquist/learningspringboot/chat/InboundChatService.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,6 @@ public InboundChatService(ChatServiceStreams chatServiceStreams) {
3838
this.chatServiceStreams = chatServiceStreams;
3939
}
4040

41-
public Mono<?> broadcast(String message) {
42-
return Mono.fromRunnable(() -> {
43-
chatServiceStreams.clientToBroker().send(
44-
MessageBuilder
45-
.withPayload(message)
46-
.build());
47-
});
48-
}
49-
5041
@Override
5142
public Mono<Void> handle(WebSocketSession session) {
5243
return session
@@ -60,5 +51,14 @@ public Mono<Void> handle(WebSocketSession session) {
6051
.log("inbound-broadcast-to-broker")
6152
.then();
6253
}
54+
55+
public Mono<?> broadcast(String message) {
56+
return Mono.fromRunnable(() -> {
57+
chatServiceStreams.clientToBroker().send(
58+
MessageBuilder
59+
.withPayload(message)
60+
.build());
61+
});
62+
}
6363
}
6464
// end::code[]

8/part2/chat/src/main/java/com/greglturnquist/learningspringboot/chat/OutboundChatService.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
*/
1616
package com.greglturnquist.learningspringboot.chat;
1717

18-
import org.slf4j.Logger;
19-
import org.slf4j.LoggerFactory;
2018
import reactor.core.publisher.Flux;
2119
import reactor.core.publisher.FluxSink;
2220
import reactor.core.publisher.Mono;
2321

22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
2424
import org.springframework.cloud.stream.annotation.EnableBinding;
2525
import org.springframework.cloud.stream.annotation.StreamListener;
2626
import org.springframework.stereotype.Service;
@@ -30,6 +30,7 @@
3030
/**
3131
* @author Greg Turnquist
3232
*/
33+
// tag::code[]
3334
@Service
3435
@EnableBinding(ChatServiceStreams.class)
3536
public class OutboundChatService implements WebSocketHandler {
@@ -59,10 +60,12 @@ public void listen(String message) {
5960

6061
@Override
6162
public Mono<Void> handle(WebSocketSession session) {
62-
return session.send(this.flux
63-
.map(session::textMessage)
64-
.log("outbound-wrap-as-websocket-message"))
63+
return session
64+
.send(this.flux
65+
.map(session::textMessage)
66+
.log("outbound-wrap-as-websocket-message"))
6567
.log("outbound-publish-to-websocket");
6668

6769
}
6870
}
71+
// end::code[]

8/part2/chat/src/main/java/com/greglturnquist/learningspringboot/chat/WebSocketConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
public class WebSocketConfig {
3535
// end::websocket-1[]
3636

37+
// tag::websocket-config[]
3738
@Bean
3839
HandlerMapping webSocketMapping(CommentService commentService,
3940
InboundChatService inboundChatService,
@@ -57,6 +58,7 @@ HandlerMapping webSocketMapping(CommentService commentService,
5758

5859
return mapping;
5960
}
61+
// end::websocket-config[]
6062

6163
@Bean
6264
WebSocketHandlerAdapter handlerAdapter() {

8/part2/images/build.gradle

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,6 @@ dependencies {
6666

6767
compile('org.projectlombok:lombok')
6868

69-
// tag::websocket[]
70-
compile('org.webjars:requirejs:2.2.0')
71-
compile('org.webjars.npm:stompjs:2.3.3') {
72-
exclude module: 'websocket' // We are using SockJS for websocket functionality
73-
}
74-
compile('org.webjars.bower:sockjs-client:1.1.0')
75-
// end::websocket[]
76-
7769
testCompile('org.springframework.boot:spring-boot-starter-test')
7870
}
7971

0 commit comments

Comments
 (0)