Skip to content

Commit 4b6f457

Browse files
jorgecolladopivovarit
authored andcommitted
[Bael 1687] - Code Peer Review (eugenp#4034)
* [BAEL-1641] Find all pairs of numbers in an array that add up to a given sum * Commiting editor's suggested changes * Commiting article Spring Data Reactive Mongo DB microservice in Kotlin * Revert commit for BAEL 1687 - Moving those files to a new branch * [BAEL-1687] - Real-time data streaming using Reactive MongoDB and Kotlin * Reverting changes [BAEL-1641] - Not from this branch * [BAEL-1687] - Code Peer Review - Added suggested changes * [BAEL-1687] - Code Peer Review - Grzegorz's code refactor & delete unnecessary code * [BAEL-1687] - Code Peer Review - Grzegorz's code refactor & delete unnecessary code * [BAEL-1687] - Code Peer Review - Fixed emitter
1 parent f514212 commit 4b6f457

7 files changed

Lines changed: 50 additions & 61 deletions

File tree

algorithms/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@
2020
- [A Maze Solver in Java](http://www.baeldung.com/java-solve-maze)
2121
- [Create a Sudoku Solver in Java](http://www.baeldung.com/java-sudoku)
2222
- [Displaying Money Amounts in Words](http://www.baeldung.com/java-money-into-words)
23-
- [A Collaborative Filtering Recommendation System in Java](http://www.baeldung.com/java-collaborative-filtering-recommendations)
23+
- [A Collaborative Filtering Recommendation System in Java](http://www.baeldung.com/java-collaborative-filtering-recommendations)

spring-data-5-reactive/pom.xml

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,21 @@
88
<packaging>jar</packaging>
99
<name>Spring-5-data-reactive</name>
1010
<description>Spring-5-data-reactive with Springboot 2.0.1</description>
11-
11+
1212
<parent>
1313
<groupId>org.springframework.boot</groupId>
1414
<artifactId>spring-boot-starter-parent</artifactId>
1515
<version>2.0.1.RELEASE</version>
1616
<relativePath/> <!-- lookup parent from repository -->
1717
</parent>
1818

19+
<properties>
20+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
21+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
22+
<java.version>1.8</java.version>
23+
<kotlin.version>1.2.40</kotlin.version>
24+
</properties>
25+
1926
<dependencies>
2027
<dependency>
2128
<groupId>org.springframework.boot</groupId>
@@ -56,16 +63,32 @@
5663
<artifactId>kotlin-stdlib-jdk8</artifactId>
5764
<version>${kotlin.version}</version>
5865
</dependency>
66+
<dependency>
67+
<groupId>org.jetbrains.kotlin</groupId>
68+
<artifactId>kotlin-stdlib-jdk8</artifactId>
69+
<version>${kotlin.version}</version>
70+
</dependency>
71+
<dependency>
72+
<groupId>org.jetbrains.kotlin</groupId>
73+
<artifactId>kotlin-test</artifactId>
74+
<version>${kotlin.version}</version>
75+
<scope>test</scope>
76+
</dependency>
77+
<dependency>
78+
<groupId>org.jetbrains.kotlin</groupId>
79+
<artifactId>kotlin-stdlib-jdk8</artifactId>
80+
<version>${kotlin.version}</version>
81+
</dependency>
5982
</dependencies>
60-
83+
6184
<repositories>
6285
<repository>
6386
<id>spring-libs-snapshot</id>
6487
<name>Spring Snapshot Repository</name>
6588
<url>http://repo.spring.io/libs-snapshot</url>
6689
</repository>
6790
</repositories>
68-
91+
6992
<build>
7093
<sourceDirectory>src/main/kotlin</sourceDirectory>
7194
<plugins>
@@ -112,12 +135,4 @@
112135
</plugin>
113136
</plugins>
114137
</build>
115-
116-
<properties>
117-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
118-
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
119-
<kotlin.version>1.2.20</kotlin.version>
120-
<javax.ws.rs-api.version>2.1</javax.ws.rs-api.version>
121-
</properties>
122-
123138
</project>

spring-data-5-reactive/src/main/kotlin/com/baeldung/Application.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.jetbrains.kotlin.demo
1+
package com.baeldung
22

33
import org.springframework.boot.SpringApplication
44
import org.springframework.boot.autoconfigure.SpringBootApplication
@@ -9,4 +9,3 @@ class Application
99
fun main(args: Array<String>) {
1010
SpringApplication.run(Application::class.java, *args)
1111
}
12-
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package com.baeldung
22

3+
import org.springframework.data.mongodb.core.mapping.Document
34
import org.springframework.data.mongodb.repository.ReactiveMongoRepository
45

56
interface EventRepository : ReactiveMongoRepository<Event, String>
7+
8+
@Document
9+
data class Event(val id: String, val name: String)

spring-data-5-reactive/src/main/kotlin/com/baeldung/MongoConfig.kt

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,13 @@ import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRep
1313
@EnableReactiveMongoRepositories(basePackageClasses = arrayOf(EventRepository::class))
1414
class MongoConfig : AbstractReactiveMongoConfiguration() {
1515

16-
override fun reactiveMongoClient(): com.mongodb.reactivestreams.client.MongoClient {
17-
return mongoClient()
18-
}
16+
override fun reactiveMongoClient(): MongoClient = mongoClient()
1917

2018
@Bean
21-
fun mongoClient(): MongoClient {
22-
return MongoClients.create()
23-
}
19+
fun mongoClient(): MongoClient = MongoClients.create()
2420

25-
override fun getDatabaseName(): String {
26-
return "mongoDatabase"
27-
}
21+
override fun getDatabaseName(): String = "mongoDatabase"
2822

2923
@Bean
30-
override fun reactiveMongoTemplate(): ReactiveMongoTemplate {
31-
return ReactiveMongoTemplate(mongoClient(), databaseName)
32-
}
24+
override fun reactiveMongoTemplate(): ReactiveMongoTemplate = ReactiveMongoTemplate(mongoClient(), databaseName)
3325
}
Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,16 @@
11
package com.baeldung
22

3+
import org.springframework.http.MediaType
34
import org.springframework.web.bind.annotation.GetMapping
45
import org.springframework.web.bind.annotation.RequestParam
56
import org.springframework.web.bind.annotation.RestController
6-
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter
7-
import reactor.core.publisher.Flux
8-
import reactor.core.publisher.Mono
97
import java.util.*
10-
import javax.ws.rs.core.MediaType
118

129

1310
@RestController
1411
class SendEmitter(val eventRepository: EventRepository) {
1512

16-
private var emitter = SseEmitter()
17-
18-
/**
19-
* Save and send an SSE to all subscribed clients
20-
*/
21-
@GetMapping("/saveEvent")
22-
fun executeExample(@RequestParam("eventName") eventName: String): Flux<Event> {
23-
// Create new event
24-
var event = Event(UUID.randomUUID().toString(), eventName)
25-
// Save event
26-
var stream = eventRepository.saveAll(Mono.just(event))
27-
// Send event
28-
emitter.send(SseEmitter.event().data(event))
29-
// Return SSE
30-
return stream
31-
}
32-
33-
/**
34-
* Receive SSEs
35-
*/
36-
@GetMapping(value = "/receiveChanges")
37-
fun handle(): SseEmitter {
38-
// Create new emitter
39-
this.emitter = SseEmitter()
40-
// Return SSE
41-
return emitter
42-
}
13+
@GetMapping(value = "/save", produces = arrayOf(MediaType.TEXT_EVENT_STREAM_VALUE))
14+
fun executeExample(@RequestParam("eventName") eventName: String) =
15+
eventRepository.save(Event(UUID.randomUUID().toString(), eventName)).flux()
4316
}
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,39 @@
11
<html>
22
<body>
33

4-
<form method="get" action="/saveEvent">
4+
<!-- Save new event -->
5+
<form method="get" action="/save">
56
<input type="text" name="eventName">
67
<button type="submit">Save new event</button>
78
</form>
89

910

10-
<!-- Here will be painted each new received Server-Sent event's content-->
11+
<!-- Receive saved event -->
1112
<div id="content"></div>
1213

1314
<script>
14-
var source = new EventSource("receiveChanges");
15+
16+
17+
let source = new EventSource("save");
1518

1619
source.addEventListener('message', function (e) {
1720
console.log('New message is received');
1821
const index = JSON.parse(e.data);
19-
const content = "New event added: " + index.name + "<br>";
22+
const content = `New event added: ${index.name}<br>`;
2023
document.getElementById("content").innerHTML += content;
2124
}, false);
25+
2226
source.addEventListener('open', function(e) {
2327
console.log('The connection has been opened');
2428
}, false);
29+
2530
source.addEventListener('error', function(e) {
2631
if (e.readyState == EventSource.CLOSED){
2732
console.log('The connection has been closed');
2833
}
2934
}, false);
3035

36+
3137
</script>
3238
</body>
3339
<html>

0 commit comments

Comments
 (0)