22
33import java .util .Collections ;
44import java .util .List ;
5- import java .util .Optional ;
65import java .util .concurrent .ThreadLocalRandom ;
76
87import benchmark .model .Fortune ;
9- import benchmark .model .Message ;
108import benchmark .model .World ;
119import benchmark .repository .DbRepository ;
1210import reactor .core .publisher .Flux ;
2119import static java .util .Comparator .comparing ;
2220
2321@ Component
24- public class WebfluxHandler {
22+ public class DbHandler {
2523
2624 private final DbRepository dbRepository ;
2725
28- public WebfluxHandler (DbRepository dbRepository ) {
26+ public DbHandler (DbRepository dbRepository ) {
2927 this .dbRepository = dbRepository ;
3028 }
3129
32- public Mono <ServerResponse > plaintext (ServerRequest request ) {
33- return ServerResponse .ok ()
34- .contentType (MediaType .TEXT_PLAIN )
35- .bodyValue ("Hello, World!" );
36- }
37-
38- public Mono <ServerResponse > json (ServerRequest request ) {
39- return ServerResponse .ok ()
40- .contentType (MediaType .APPLICATION_JSON )
41- .bodyValue (new Message ("Hello, World!" ));
42- }
43-
4430 public Mono <ServerResponse > db (ServerRequest request ) {
4531 int id = randomWorldNumber ();
4632 Mono <World > world = dbRepository .getWorld (id )
@@ -52,7 +38,7 @@ public Mono<ServerResponse> db(ServerRequest request) {
5238 }
5339
5440 public Mono <ServerResponse > queries (ServerRequest request ) {
55- int queries = getQueries (request );
41+ int queries = parseQueryCount (request . queryParams (). getFirst ( "queries" ) );
5642
5743 Mono <List <World >> worlds = Flux .range (0 , queries )
5844 .flatMap (i -> dbRepository .getWorld (randomWorldNumber ()))
@@ -64,21 +50,21 @@ public Mono<ServerResponse> queries(ServerRequest request) {
6450 });
6551 }
6652
67- private static int parseQueryCount (Optional < String > maybeTextValue ) {
68- if (! maybeTextValue . isPresent () ) {
53+ private static int parseQueryCount (String maybeTextValue ) {
54+ if (maybeTextValue == null ) {
6955 return 1 ;
7056 }
7157 int parsedValue ;
7258 try {
73- parsedValue = Integer .parseInt (maybeTextValue . get () );
59+ parsedValue = Integer .parseInt (maybeTextValue );
7460 } catch (NumberFormatException e ) {
7561 return 1 ;
7662 }
7763 return Math .min (500 , Math .max (1 , parsedValue ));
7864 }
7965
8066 public Mono <ServerResponse > updates (ServerRequest request ) {
81- int queries = getQueries (request );
67+ int queries = parseQueryCount (request . queryParams (). getFirst ( "queries" ) );
8268
8369 Mono <List <World >> worlds = Flux .range (0 , queries )
8470 .flatMap (i -> dbRepository .findAndUpdateWorld (randomWorldNumber (), randomWorldNumber ()))
@@ -101,10 +87,6 @@ public Mono<ServerResponse> fortunes(ServerRequest request) {
10187 .render ("fortunes" , Collections .singletonMap ("fortunes" , result ));
10288 }
10389
104- private static int getQueries (ServerRequest request ) {
105- return parseQueryCount (request .queryParam ("queries" ));
106- }
107-
10890 private static int randomWorldNumber () {
10991 return 1 + ThreadLocalRandom .current ().nextInt (10000 );
11092 }
0 commit comments