Skip to content

Commit 3331bb4

Browse files
Merge pull request #58 from omar-nassar/master
implementing 'convert to record TODOs'
2 parents 3dc5e0a + 427cec2 commit 3331bb4

File tree

7 files changed

+64
-91
lines changed

7 files changed

+64
-91
lines changed
Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
11
package com.siriusxi.ms.store.api.composite.dto;
22

3-
import lombok.AllArgsConstructor;
4-
import lombok.Data;
5-
import lombok.NoArgsConstructor;
6-
73
import java.util.List;
84

9-
// TODO convert it to record
10-
@Data
11-
@NoArgsConstructor(force = true)
12-
@AllArgsConstructor
13-
public class ProductAggregate {
14-
private final int productId;
15-
private final String name;
16-
private final int weight;
17-
private final List<RecommendationSummary> recommendations;
18-
private final List<ReviewSummary> reviews;
19-
private final ServiceAddresses serviceAddresses;
20-
}
5+
public record ProductAggregate (int productId,
6+
String name,
7+
int weight,
8+
List<RecommendationSummary> recommendations,
9+
List<ReviewSummary>reviews,
10+
ServiceAddresses serviceAddresses) {
11+
}
Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
package com.siriusxi.ms.store.api.composite.dto;
22

3-
import lombok.AllArgsConstructor;
4-
import lombok.Data;
5-
import lombok.NoArgsConstructor;
6-
7-
// TODO convert it to record
8-
@Data
9-
@NoArgsConstructor(force = true)
10-
@AllArgsConstructor
11-
public class RecommendationSummary {
12-
private final int recommendationId;
13-
private final String author;
14-
private final int rate;
15-
private final String content;
16-
}
3+
public record RecommendationSummary(int recommendationId,
4+
String author,
5+
int rate,
6+
String content) {
7+
}
Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
package com.siriusxi.ms.store.api.composite.dto;
22

3-
import lombok.AllArgsConstructor;
4-
import lombok.Data;
5-
import lombok.NoArgsConstructor;
6-
7-
// TODO convert it to record
8-
@Data
9-
@NoArgsConstructor(force = true)
10-
@AllArgsConstructor
11-
public class ReviewSummary {
12-
private final int reviewId;
13-
private final String author;
14-
private final String subject;
15-
private final String content;
3+
public record ReviewSummary(int reviewId,
4+
String author,
5+
String subject,
6+
String content){
167
}
Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
package com.siriusxi.ms.store.api.composite.dto;
22

3-
import lombok.AllArgsConstructor;
4-
import lombok.Data;
5-
import lombok.NoArgsConstructor;
6-
7-
// TODO convert it to record
8-
@Data
9-
@NoArgsConstructor(force = true)
10-
@AllArgsConstructor
11-
public class ServiceAddresses {
12-
private final String storeService;
13-
private final String productService;
14-
private final String reviewService;
15-
private final String recommendationService;
3+
public record ServiceAddresses( String storeService,
4+
String productService,
5+
String reviewService,
6+
String recommendationService) {
167
}

store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/StoreServiceApplication.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package com.siriusxi.ms.store.pcs;
22

3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
import com.fasterxml.jackson.annotation.PropertyAccessor;
35
import org.springframework.boot.SpringApplication;
46
import org.springframework.boot.autoconfigure.SpringBootApplication;
57
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
68
import org.springframework.context.annotation.Bean;
79
import org.springframework.context.annotation.ComponentScan;
810
import org.springframework.web.reactive.function.client.WebClient;
11+
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
912
import springfox.documentation.swagger2.annotations.EnableSwagger2WebFlux;
1013

1114
@SpringBootApplication
@@ -21,4 +24,10 @@ public static void main(String[] args) {
2124
public WebClient.Builder loadBalancedWebClientBuilder() {
2225
return WebClient.builder();
2326
}
27+
28+
@Bean
29+
public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() {
30+
return builder -> builder.visibility( PropertyAccessor.FIELD,
31+
JsonAutoDetect.Visibility.ANY);
32+
}
2433
}

store-services/store-service/src/main/java/com/siriusxi/ms/store/pcs/service/StoreServiceImpl.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,45 +38,45 @@ public void createProduct(ProductAggregate body) {
3838

3939
log.debug(
4040
"createCompositeProduct: creates a new composite entity for productId: {}",
41-
body.getProductId());
41+
body.productId());
4242

43-
var product = new Product(body.getProductId(), body.getName(), body.getWeight(), null);
43+
var product = new Product(body.productId(), body.name(), body.weight(), null);
4444
integration.createProduct(product);
4545

46-
if (body.getRecommendations() != null) {
47-
body.getRecommendations()
46+
if (body.recommendations() != null) {
47+
body.recommendations()
4848
.forEach(
4949
r -> {
5050
var recommendation =
5151
new Recommendation(
52-
body.getProductId(),
53-
r.getRecommendationId(),
54-
r.getAuthor(),
55-
r.getRate(),
56-
r.getContent(),
52+
body.productId(),
53+
r.recommendationId(),
54+
r.author(),
55+
r.rate(),
56+
r.content(),
5757
null);
5858
integration.createRecommendation(recommendation);
5959
});
6060
}
6161

62-
if (body.getReviews() != null) {
63-
body.getReviews()
62+
if (body.reviews() != null) {
63+
body.reviews()
6464
.forEach(
6565
r -> {
6666
Review review =
6767
new Review(
68-
body.getProductId(),
69-
r.getReviewId(),
70-
r.getAuthor(),
71-
r.getSubject(),
72-
r.getContent(),
68+
body.productId(),
69+
r.reviewId(),
70+
r.author(),
71+
r.subject(),
72+
r.content(),
7373
null);
7474
integration.createReview(review);
7575
});
7676
}
7777
log.debug(
7878
"createCompositeProduct: composite entities created for productId: {}",
79-
body.getProductId());
79+
body.productId());
8080

8181
} catch (RuntimeException re) {
8282
log.warn("createCompositeProduct failed: {}", re.toString());

store-services/store-service/src/test/java/com/siriusxi/ms/store/pcs/MessagingTests.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ public void createCompositeProduct1() {
6666
Event<Integer, Product> expectedEvent =
6767
new Event<>(
6868
CREATE,
69-
composite.getProductId(),
69+
composite.productId(),
7070
new Product(
71-
composite.getProductId(), composite.getName(), composite.getWeight(), null));
71+
composite.productId(), composite.name(), composite.weight(), null));
7272
assertThat(queueProducts, is(receivesPayloadThat(sameEventExceptCreatedAt(expectedEvent))));
7373

7474
// Assert none recommendations and review events
@@ -96,25 +96,25 @@ public void createCompositeProduct2() {
9696
Event<Integer, Product> expectedProductEvent =
9797
new Event<>(
9898
CREATE,
99-
composite.getProductId(),
99+
composite.productId(),
100100
new Product(
101-
composite.getProductId(), composite.getName(), composite.getWeight(), null));
101+
composite.productId(), composite.name(), composite.weight(), null));
102102
assertThat(queueProducts, receivesPayloadThat(sameEventExceptCreatedAt(expectedProductEvent)));
103103

104104
// Assert one create recommendation event queued up
105105
assertEquals(1, queueRecommendations.size());
106106

107-
RecommendationSummary rec = composite.getRecommendations().get(0);
107+
RecommendationSummary rec = composite.recommendations().get(0);
108108
Event<Integer, Recommendation> expectedRecommendationEvent =
109109
new Event<>(
110110
CREATE,
111-
composite.getProductId(),
111+
composite.productId(),
112112
new Recommendation(
113-
composite.getProductId(),
114-
rec.getRecommendationId(),
115-
rec.getAuthor(),
116-
rec.getRate(),
117-
rec.getContent(),
113+
composite.productId(),
114+
rec.recommendationId(),
115+
rec.author(),
116+
rec.rate(),
117+
rec.content(),
118118
null));
119119
assertThat(
120120
queueRecommendations,
@@ -123,17 +123,17 @@ public void createCompositeProduct2() {
123123
// Assert one create review event queued up
124124
assertEquals(1, queueReviews.size());
125125

126-
ReviewSummary rev = composite.getReviews().get(0);
126+
ReviewSummary rev = composite.reviews().get(0);
127127
Event<Integer, Review> expectedReviewEvent =
128128
new Event<>(
129129
CREATE,
130-
composite.getProductId(),
130+
composite.productId(),
131131
new Review(
132-
composite.getProductId(),
133-
rev.getReviewId(),
134-
rev.getAuthor(),
135-
rev.getSubject(),
136-
rev.getContent(),
132+
composite.productId(),
133+
rev.reviewId(),
134+
rev.author(),
135+
rev.subject(),
136+
rev.content(),
137137
null));
138138

139139
assertThat(queueReviews, receivesPayloadThat(sameEventExceptCreatedAt(expectedReviewEvent)));

0 commit comments

Comments
 (0)