Skip to content

Commit 75ff212

Browse files
committed
BAEL-2275: Change constructor of Order
1 parent 91fc4ec commit 75ff212

File tree

12 files changed

+38
-43
lines changed

12 files changed

+38
-43
lines changed
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package com.baeldung.ddd;
2-
3-
import org.springframework.boot.SpringApplication;
4-
import org.springframework.boot.autoconfigure.SpringBootApplication;
5-
6-
@SpringBootApplication
7-
public class PersistingDddAggregatesApplication {
8-
9-
public static void main(String[] args) {
10-
SpringApplication.run(PersistingDddAggregatesApplication.class, args);
11-
}
12-
}
1+
package com.baeldung.ddd;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication(scanBasePackages = "com.baeldung.ddd.order")
7+
public class PersistingDddAggregatesApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(PersistingDddAggregatesApplication.class, args);
11+
}
12+
}

ddd/src/main/java/com/baeldung/ddd/layers/application/OrderController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ public OrderController(OrderService orderService) {
2222

2323
@PostMapping(produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
2424
CreateOrderResponse createOrder(@RequestBody final CreateOrderRequest createOrderRequest) {
25-
return new CreateOrderResponse(orderService
26-
.createOrder(createOrderRequest.getProducts())
27-
.toString());
25+
final ObjectId id = orderService.createOrder(createOrderRequest.getProduct());
26+
27+
return new CreateOrderResponse(id.toString());
2828
}
2929

3030
@PostMapping(value = "/{id}/products", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)

ddd/src/main/java/com/baeldung/ddd/layers/application/request/AddProductRequest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import com.fasterxml.jackson.annotation.JsonCreator;
55
import com.fasterxml.jackson.annotation.JsonProperty;
66

7+
import javax.validation.constraints.NotNull;
8+
79
public class AddProductRequest {
8-
private Product product;
10+
@NotNull private Product product;
911

1012
@JsonCreator
1113
public AddProductRequest(@JsonProperty("product") final Product product) {

ddd/src/main/java/com/baeldung/ddd/layers/application/request/CreateOrderRequest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@
44
import com.fasterxml.jackson.annotation.JsonCreator;
55
import com.fasterxml.jackson.annotation.JsonProperty;
66

7-
import java.util.ArrayList;
8-
import java.util.List;
7+
import javax.validation.constraints.NotNull;
98

109
public class CreateOrderRequest {
11-
private List<Product> products;
10+
@NotNull private Product product;
1211

1312
@JsonCreator
14-
public CreateOrderRequest(@JsonProperty("products") final List<Product> productList) {
15-
this.products = new ArrayList<>(productList);
13+
public CreateOrderRequest(@JsonProperty("product") @NotNull Product product) {
14+
this.product = product;
1615
}
1716

18-
public List<Product> getProducts() {
19-
return products;
17+
public Product getProduct() {
18+
return product;
2019
}
2120
}

ddd/src/main/java/com/baeldung/ddd/layers/domain/Order.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,11 @@ public class Order {
1414
private List<Product> products;
1515
private BigDecimal price;
1616

17-
public Order(final ObjectId id, final List<Product> products) {
17+
public Order(final ObjectId id, final Product product) {
1818
this.id = id;
19-
this.products = new ArrayList<>(products);
19+
this.products = new ArrayList<>(Collections.singletonList(product));
2020
this.status = OrderStatus.CREATED;
21-
this.price = products
22-
.stream()
23-
.map(Product::getPrice)
24-
.reduce(BigDecimal.ZERO, BigDecimal::add);
21+
this.price = product.getPrice();
2522
}
2623

2724
public void complete() {

ddd/src/main/java/com/baeldung/ddd/layers/domain/service/DomainOrderService.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@
22

33
import com.baeldung.ddd.layers.domain.Order;
44
import com.baeldung.ddd.layers.domain.Product;
5-
import com.baeldung.ddd.layers.domain.exception.DomainException;
65
import com.baeldung.ddd.layers.domain.repository.OrderRepository;
76
import org.bson.types.ObjectId;
87

9-
import java.util.List;
10-
118
public class DomainOrderService implements OrderService {
129

1310
private final OrderRepository orderRepository;
@@ -17,8 +14,8 @@ public DomainOrderService(OrderRepository orderRepository) {
1714
}
1815

1916
@Override
20-
public ObjectId createOrder(List<Product> products) {
21-
final Order order = new Order(ObjectId.get(), products);
17+
public ObjectId createOrder(final Product product) {
18+
final Order order = new Order(ObjectId.get(), product);
2219
orderRepository.save(order);
2320

2421
return order.getId();

ddd/src/main/java/com/baeldung/ddd/layers/domain/service/OrderService.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
import com.baeldung.ddd.layers.domain.Product;
44
import org.bson.types.ObjectId;
55

6-
import java.util.List;
7-
86
public interface OrderService {
9-
ObjectId createOrder(List<Product> products);
7+
ObjectId createOrder(final Product product);
108

119
void addProduct(ObjectId id, Product product);
1210

ddd/src/main/java/com/baeldung/ddd/layers/infrastracture/configuration/DomainConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.baeldung.ddd.layers.infrastracture.configuration;
22

3+
import com.baeldung.ddd.layers.DomainLayerApplication;
34
import com.baeldung.ddd.layers.domain.repository.OrderRepository;
45
import com.baeldung.ddd.layers.domain.service.DomainOrderService;
56
import com.baeldung.ddd.layers.domain.service.OrderService;
67
import org.springframework.context.annotation.Bean;
8+
import org.springframework.context.annotation.ComponentScan;
79
import org.springframework.context.annotation.Configuration;
810

911
@Configuration
12+
@ComponentScan(basePackageClasses = DomainLayerApplication.class)
1013
public class DomainConfiguration {
1114

1215
@Bean
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.baeldung.ddd.layers.infrastracture.configuration;
22

3+
import com.baeldung.ddd.layers.infrastracture.repository.SpringDataOrderRepository;
34
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
45

5-
@EnableMongoRepositories
6+
@EnableMongoRepositories(basePackageClasses = SpringDataOrderRepository.class)
67
public class MongoDBConfiguration {
78
}

ddd/src/test/java/com/baeldung/ddd/layers/domain/OrderProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
import org.bson.types.ObjectId;
44

55
import java.math.BigDecimal;
6-
import java.util.Arrays;
76

87
public class OrderProvider {
98
public static Order getCreatedOrder() {
10-
return new Order(ObjectId.get(), Arrays.asList(new Product(BigDecimal.TEN, "productName")));
9+
return new Order(ObjectId.get(), new Product(BigDecimal.TEN, "productName"));
1110
}
1211

1312
public static Order getCompletedOrder() {

0 commit comments

Comments
 (0)