This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git
commit 99172eb3cf32795062120153181ff764db5e19b8 Author: seanyinx <[email protected]> AuthorDate: Wed Jan 24 17:36:11 2018 +0800 SCB-237 linked pack demos with cucumber test Signed-off-by: seanyinx <[email protected]> --- acceptance-tests/acceptance-pack/pom.xml | 103 ++++++++++++++++++++- .../org/apache/servicecomb/saga/PackStepdefs.java | 68 ++++++++++---- .../test/resources/pack_success_scenario.feature | 10 +- .../servicecomb/saga/alpha/core/EventScanner.java | 1 - .../saga/alpha/server/AlphaEventController.java | 7 ++ .../src/main/resources/application.yaml | 3 + pom.xml | 3 +- .../servicecomb/saga/demo/pack/car/CarBooking.java | 48 ++++++---- .../saga/demo/pack/car/CarBookingController.java | 11 ++- .../saga/demo/pack/car/CarBookingService.java | 22 +++-- .../saga/demo/pack/hotel/HotelBooking.java | 48 ++++++---- .../demo/pack/hotel/HotelBookingController.java | 11 ++- .../saga/demo/pack/hotel/HotelBookingService.java | 24 ++--- saga-demo/pack-demo/pom.xml | 6 ++ saga-format/pom.xml | 4 +- 15 files changed, 274 insertions(+), 95 deletions(-) diff --git a/acceptance-tests/acceptance-pack/pom.xml b/acceptance-tests/acceptance-pack/pom.xml index 67938f6..cc4a384 100644 --- a/acceptance-tests/acceptance-pack/pom.xml +++ b/acceptance-tests/acceptance-pack/pom.xml @@ -28,6 +28,19 @@ <artifactId>acceptance-pack</artifactId> + <dependencies> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-core</artifactId> + <version>${jackson.version}</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + <version>${jackson.version}</version> + </dependency> + </dependencies> + <profiles> <profile> <id>docker</id> @@ -78,18 +91,94 @@ <tcp> <ports> <port>8080</port> + <port>8090</port> </ports> </tcp> <time>120000</time> </wait> <ports> <port>alpha.port:8080</port> + <port>alpha.rest.port:8090</port> </ports> <dependsOn> <dependsOn>postgres</dependsOn> </dependsOn> </run> </image> + <image> + <name>pack-car:${project.version}</name> + <alias>car</alias> + <run> + <env> + <JAVA_OPTS /> + </env> + <wait> + <log>Started [a-zA-Z]+ in [0-9.]+ seconds</log> + <tcp> + <ports> + <port>8080</port> + </ports> + </tcp> + <time>120000</time> + </wait> + <links> + <link>alpha:alpha-server.servicecomb.io</link> + </links> + <ports> + <port>car.port:8080</port> + </ports> + </run> + </image> + <image> + <name>pack-hotel:${project.version}</name> + <alias>hotel</alias> + <run> + <env> + <JAVA_OPTS /> + </env> + <wait> + <log>Started [a-zA-Z]+ in [0-9.]+ seconds</log> + <tcp> + <ports> + <port>8080</port> + </ports> + </tcp> + <time>120000</time> + </wait> + <links> + <link>alpha:alpha-server.servicecomb.io</link> + </links> + <ports> + <port>hotel.port:8080</port> + </ports> + </run> + </image> + <image> + <name>pack-booking:${project.version}</name> + <alias>booking</alias> + <run> + <env> + <JAVA_OPTS /> + </env> + <wait> + <log>Started [a-zA-Z]+ in [0-9.]+ seconds</log> + <tcp> + <ports> + <port>8080</port> + </ports> + </tcp> + <time>120000</time> + </wait> + <links> + <link>alpha:alpha-server.servicecomb.io</link> + <link>car:pack-car.servicecomb.io</link> + <link>hotel:pack-hotel.servicecomb.io</link> + </links> + <ports> + <port>booking.port:8080</port> + </ports> + </run> + </image> </images> </configuration> <executions> @@ -135,8 +224,20 @@ <configuration> <systemPropertyVariables> <alpha.cluster.address> - ${docker.hostname}:${alpha.port} + http://${docker.hostname}:${alpha.port} </alpha.cluster.address> + <alpha.rest.address> + http://${docker.hostname}:${alpha.rest.port} + </alpha.rest.address> + <car.service.address> + http://${docker.hostname}:${car.port} + </car.service.address> + <hotel.service.address> + http://${docker.hostname}:${hotel.port} + </hotel.service.address> + <booking.service.address> + http://${docker.hostname}:${booking.port} + </booking.service.address> <spring.datasource.url> jdbc:postgresql://${docker.hostname}:${postgres.port}/saga?useSSL=false </spring.datasource.url> diff --git a/acceptance-tests/acceptance-pack/src/test/java/org/apache/servicecomb/saga/PackStepdefs.java b/acceptance-tests/acceptance-pack/src/test/java/org/apache/servicecomb/saga/PackStepdefs.java index 0cd13a9..0d73423 100644 --- a/acceptance-tests/acceptance-pack/src/test/java/org/apache/servicecomb/saga/PackStepdefs.java +++ b/acceptance-tests/acceptance-pack/src/test/java/org/apache/servicecomb/saga/PackStepdefs.java @@ -18,30 +18,38 @@ package org.apache.servicecomb.saga; import static io.restassured.RestAssured.given; +import static java.util.Arrays.asList; import static org.hamcrest.core.Is.is; import java.lang.invoke.MethodHandles; -import java.util.Arrays; -import java.util.List; import java.util.Map; -import java.util.stream.Collectors; +import java.util.function.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cucumber.api.DataTable; +import cucumber.api.java.After; import cucumber.api.java8.En; public class PackStepdefs implements En { private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private static final String ALPHA_REST_ADDRESS = "alpha.rest.address"; + private static final String CAR_SERVICE_ADDRESS = "car.service.address"; + private static final String HOTEL_SERVICE_ADDRESS = "hotel.service.address"; + private static final String[] addresses = {CAR_SERVICE_ADDRESS, HOTEL_SERVICE_ADDRESS}; + + private static final Consumer<Map<String, String>[]> NO_OP_CONSUMER = (dataMap) -> { + }; + public PackStepdefs() { Given("^Car Service is up and running$", () -> { - probe(System.getProperty("car.service.address")); + probe(System.getProperty(CAR_SERVICE_ADDRESS)); }); And("^Hotel Service is up and running$", () -> { - probe(System.getProperty("hotel.service.address")); + probe(System.getProperty(HOTEL_SERVICE_ADDRESS)); }); When("^User ([A-Za-z]+) requests to book ([0-9]+) cars and ([0-9]+) rooms$", (username, cars, rooms) -> { @@ -58,43 +66,63 @@ public class PackStepdefs implements En { }); Then("^Alpha records the following events$", (DataTable dataTable) -> { - List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class); - log.info("events {}", maps); + Consumer<Map<String, String>[]> columnStrippingConsumer = dataMap -> { + for (Map<String, String> map : dataMap) + map.keySet().retainAll(dataTable.topCells()); + }; + + dataMatches(System.getProperty(ALPHA_REST_ADDRESS) + "/events", dataTable, columnStrippingConsumer); }); And("^Car Service contains the following booking orders$", (DataTable dataTable) -> { - List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class); - log.info("car orders {}", maps); - - bookingsMatches(dataTable, "car.service.address"); + dataMatches(System.getProperty(CAR_SERVICE_ADDRESS) + "/bookings", dataTable, NO_OP_CONSUMER); }); And("^Hotel Service contains the following booking orders$", (DataTable dataTable) -> { - List<Map<String, String>> maps = dataTable.asMaps(String.class, String.class); - log.info("hotel orders {}", maps); - - bookingsMatches(dataTable, "hotel.service.address"); + dataMatches(System.getProperty(HOTEL_SERVICE_ADDRESS) + "/bookings", dataTable, NO_OP_CONSUMER); }); } + @After + public void cleanUp() { + log.info("Cleaning up services"); + for (String address : addresses) { + given() + .when() + .delete(System.getProperty(address) + "/bookings") + .then() + .statusCode(is(200)); + } + + given() + .when() + .delete(System.getProperty(ALPHA_REST_ADDRESS) + "/events") + .then() + .statusCode(is(200)); + } + @SuppressWarnings("unchecked") - private void bookingsMatches(DataTable dataTable, String address) { - Map<String, String>[] bookings = given() + private void dataMatches(String address, DataTable dataTable, Consumer<Map<String, String>[]> dataProcessor) { + Map<String, String>[] dataMap = given() .when() - .post(System.getProperty(address) + "/bookings") + .get(address) .then() .statusCode(is(200)) .extract() .body() .as(Map[].class); - dataTable.diff(Arrays.stream(bookings).collect(Collectors.toList())); + dataProcessor.accept(dataMap); + + log.info("Retrieved data {} from service", dataMap); + dataTable.diff(DataTable.create(asList(dataMap))); } private void probe(String address) { + log.info("Connecting to service address {}", address); given() .when() - .post(address + "/info") + .get(address + "/info") .then() .statusCode(is(200)); } diff --git a/acceptance-tests/acceptance-pack/src/test/resources/pack_success_scenario.feature b/acceptance-tests/acceptance-pack/src/test/resources/pack_success_scenario.feature index da233b0..5013cb9 100644 --- a/acceptance-tests/acceptance-pack/src/test/resources/pack_success_scenario.feature +++ b/acceptance-tests/acceptance-pack/src/test/resources/pack_success_scenario.feature @@ -7,7 +7,7 @@ Feature: Alpha records transaction events When User Sean requests to book 2 cars and 1 rooms Then Alpha records the following events - | service name | event type | + | serviceName | type | | pack-booking | SagaStartedEvent | | pack-car | TxStartedEvent | | pack-car | TxEndedEvent | @@ -16,9 +16,9 @@ Feature: Alpha records transaction events | pack-booking | SagaEndedEvent | And Car Service contains the following booking orders - | user name | amount | confirmed | - | Sean | 2 | true | + | name | amount | confirmed | cancelled | + | Sean | 2 | true | false | And Hotel Service contains the following booking orders - | user name | amount | confirmed | - | Sean | 1 | true | + | name | amount | confirmed | cancelled | + | Sean | 1 | true | false | diff --git a/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/EventScanner.java b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/EventScanner.java index 80deeb3..2d51a74 100644 --- a/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/EventScanner.java +++ b/alpha/alpha-core/src/main/java/org/apache/servicecomb/saga/alpha/core/EventScanner.java @@ -133,7 +133,6 @@ public class EventScanner implements Runnable { EMPTY_PAYLOAD); } - // TODO: 2018/1/19 potentially compensation may be out of order if we don't wait till received compensated event for the previous one, since compensation is async private void compensate() { commandRepository.findFirstCommandToCompensate() .forEach(command -> { diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaEventController.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaEventController.java index 0f6e139..aa469c4 100644 --- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaEventController.java +++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/saga/alpha/server/AlphaEventController.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.servicecomb.saga.alpha.core.TxEvent; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -50,6 +51,12 @@ class AlphaEventController { return ResponseEntity.ok(eventVos); } + @DeleteMapping("/events") + ResponseEntity<String> clear() { + eventRepository.deleteAll(); + return ResponseEntity.ok("All events deleted"); + } + @JsonAutoDetect(fieldVisibility = Visibility.ANY) private static class TxEventVo extends TxEvent { private TxEventVo(TxEvent event) { diff --git a/alpha/alpha-server/src/main/resources/application.yaml b/alpha/alpha-server/src/main/resources/application.yaml index cf3c896..a4790e2 100644 --- a/alpha/alpha-server/src/main/resources/application.yaml +++ b/alpha/alpha-server/src/main/resources/application.yaml @@ -22,3 +22,6 @@ spring: url: jdbc:postgresql://postgresql.servicecomb.io:5432/saga?useSSL=false platform: postgresql # continue-on-error: true + +server: + port: 8090 diff --git a/pom.xml b/pom.xml index 9939b7f..13e9ca0 100755 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,6 @@ <module>pack-common</module> <module>integration-tests</module> <module>saga-persistence</module> - <module>acceptance-tests</module> </modules> <properties> @@ -64,6 +63,7 @@ <kryo.version>4.0.1</kryo.version> <javax.transaction.version>1.2</javax.transaction.version> <eclipse.link.version>2.7.1</eclipse.link.version> + <jackson.version>2.9.0</jackson.version> </properties> <name>ServiceComb Saga</name> @@ -710,6 +710,7 @@ <id>demo</id> <modules> <module>saga-demo</module> + <module>acceptance-tests</module> </modules> </profile> <profile> diff --git a/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBooking.java b/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBooking.java index 11b936d..94f40d4 100644 --- a/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBooking.java +++ b/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBooking.java @@ -17,50 +17,58 @@ package org.apache.servicecomb.saga.demo.pack.car; -public class CarBooking { +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.annotation.JsonIgnore; + +@JsonAutoDetect(fieldVisibility = Visibility.ANY) +class CarBooking { + @JsonIgnore private Integer id; private String name; - private Integer cars; - private boolean confirm; - private boolean cancel; + private Integer amount; + private boolean confirmed; + private boolean cancelled; - public Integer getId() { + Integer getId() { return id; } - public void setId(Integer id) { + void setId(Integer id) { this.id = id; } - public String getName() { + String getName() { return name; } - public void setName(String name) { + void setName(String name) { this.name = name; } - public Integer getCars() { - return cars; + Integer getAmount() { + return amount; } - public void setCars(Integer cars) { - this.cars = cars; + void setAmount(Integer amount) { + this.amount = amount; } - public boolean isConfirm() { - return confirm; + boolean isConfirmed() { + return confirmed; } - public void setConfirm(boolean confirm) { - this.confirm = confirm; + void confirm() { + this.confirmed = true; + this.cancelled = false; } - public boolean isCancel() { - return cancel; + boolean isCancelled() { + return cancelled; } - public void setCancel(boolean cancel) { - this.cancel = cancel; + void cancel() { + this.confirmed = false; + this.cancelled = true; } } diff --git a/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingController.java b/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingController.java index 60849aa..4528c22 100644 --- a/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingController.java +++ b/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingController.java @@ -18,6 +18,7 @@ package org.apache.servicecomb.saga.demo.pack.car; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -32,7 +33,7 @@ public class CarBookingController { @Autowired private CarBookingService service; - private AtomicInteger id = new AtomicInteger(0); + private final AtomicInteger id = new AtomicInteger(0); @GetMapping("/bookings") List<CarBooking> getAll() { return new ArrayList<>(service.getAllBookings()); @@ -43,8 +44,14 @@ public class CarBookingController { CarBooking booking = new CarBooking(); booking.setId(id.incrementAndGet()); booking.setName(name); - booking.setCars(cars); + booking.setAmount(cars); service.order(booking); return booking; } + + @DeleteMapping("/bookings") + void clear() { + service.clearAllBookings(); + id.set(0); + } } diff --git a/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java b/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java index 8c3f8f4..3be4d36 100644 --- a/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java +++ b/saga-demo/pack-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java @@ -21,29 +21,31 @@ import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable; import org.springframework.stereotype.Service; import java.util.Collection; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Service -public class CarBookingService { - private ConcurrentHashMap<Integer, CarBooking> bookings = new ConcurrentHashMap<>(); +class CarBookingService { + private Map<Integer, CarBooking> bookings = new ConcurrentHashMap<>(); @Compensable(compensationMethod = "cancel") - public void order(CarBooking booking) { - booking.setConfirm(true); - booking.setCancel(false); + void order(CarBooking booking) { + booking.confirm(); bookings.put(booking.getId(), booking); } - public void cancel(CarBooking booking) { + void cancel(CarBooking booking) { Integer id = booking.getId(); if (bookings.containsKey(id)) { - CarBooking origin = bookings.get(id); - origin.setConfirm(false); - origin.setCancel(true); + bookings.get(id).cancel(); } } - public Collection<CarBooking> getAllBookings() { + Collection<CarBooking> getAllBookings() { return bookings.values(); } + + void clearAllBookings() { + bookings.clear(); + } } diff --git a/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBooking.java b/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBooking.java index e7c748c..e621b23 100644 --- a/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBooking.java +++ b/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBooking.java @@ -17,50 +17,58 @@ package org.apache.servicecomb.saga.demo.pack.hotel; -public class HotelBooking { +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.annotation.JsonIgnore; + +@JsonAutoDetect(fieldVisibility = Visibility.ANY) +class HotelBooking { + @JsonIgnore private Integer id; private String name; - private Integer rooms; - private boolean confirm; - private boolean cancel; + private Integer amount; + private boolean confirmed; + private boolean cancelled; - public Integer getId() { + Integer getId() { return id; } - public void setId(Integer id) { + void setId(Integer id) { this.id = id; } - public String getName() { + String getName() { return name; } - public void setName(String name) { + void setName(String name) { this.name = name; } - public Integer getRooms() { - return rooms; + Integer getAmount() { + return amount; } - public void setRooms(Integer rooms) { - this.rooms = rooms; + void setAmount(Integer amount) { + this.amount = amount; } - public boolean isConfirm() { - return confirm; + boolean isConfirmed() { + return confirmed; } - public void setConfirm(boolean confirm) { - this.confirm = confirm; + void confirm() { + this.confirmed = true; + this.cancelled = false; } - public boolean isCancel() { - return cancel; + boolean isCancelled() { + return cancelled; } - public void setCancel(boolean cancel) { - this.cancel = cancel; + void cancel() { + this.confirmed = false; + this.cancelled = true; } } diff --git a/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingController.java b/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingController.java index 0474d71..22f9b2c 100644 --- a/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingController.java +++ b/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingController.java @@ -18,6 +18,7 @@ package org.apache.servicecomb.saga.demo.pack.hotel; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -32,7 +33,7 @@ public class HotelBookingController { @Autowired private HotelBookingService service; - private AtomicInteger id = new AtomicInteger(0); + private final AtomicInteger id = new AtomicInteger(0); @GetMapping("/bookings") List<HotelBooking> getAll() { @@ -44,8 +45,14 @@ public class HotelBookingController { HotelBooking booking = new HotelBooking(); booking.setId(id.incrementAndGet()); booking.setName(name); - booking.setRooms(rooms); + booking.setAmount(rooms); service.order(booking); return booking; } + + @DeleteMapping("/bookings") + void clear() { + service.clearAllBookings(); + id.set(0); + } } diff --git a/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingService.java b/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingService.java index d819843..9abf040 100644 --- a/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingService.java +++ b/saga-demo/pack-demo/hotel/src/main/java/org/apache/servicecomb/saga/demo/pack/hotel/HotelBookingService.java @@ -21,32 +21,34 @@ import org.apache.servicecomb.saga.omega.transaction.annotations.Compensable; import org.springframework.stereotype.Service; import java.util.Collection; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Service -public class HotelBookingService { - private ConcurrentHashMap<Integer, HotelBooking> bookings = new ConcurrentHashMap<>(); +class HotelBookingService { + private Map<Integer, HotelBooking> bookings = new ConcurrentHashMap<>(); @Compensable(compensationMethod = "cancel") - public void order(HotelBooking booking) { - if (booking.getRooms() > 2) { + void order(HotelBooking booking) { + if (booking.getAmount() > 2) { throw new IllegalArgumentException("can not order the rooms large than two"); } - booking.setConfirm(true); - booking.setCancel(false); + booking.confirm(); bookings.put(booking.getId(), booking); } - public void cancel(HotelBooking booking) { + void cancel(HotelBooking booking) { Integer id = booking.getId(); if (bookings.containsKey(id)) { - HotelBooking origin = bookings.get(id); - origin.setConfirm(false); - origin.setCancel(true); + bookings.get(id).cancel(); } } - public Collection<HotelBooking> getAllBookings() { + Collection<HotelBooking> getAllBookings() { return bookings.values(); } + + void clearAllBookings() { + bookings.clear(); + } } diff --git a/saga-demo/pack-demo/pom.xml b/saga-demo/pack-demo/pom.xml index 3b3453e..8deb910 100644 --- a/saga-demo/pack-demo/pom.xml +++ b/saga-demo/pack-demo/pom.xml @@ -34,4 +34,10 @@ <module>hotel</module> </modules> + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + </dependencies> </project> diff --git a/saga-format/pom.xml b/saga-format/pom.xml index 4d3952f..a6c0457 100644 --- a/saga-format/pom.xml +++ b/saga-format/pom.xml @@ -35,12 +35,12 @@ <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> - <version>2.9.0</version> + <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> - <version>2.9.0</version> + <version>${jackson.version}</version> </dependency> <dependency> <groupId>io.kamon</groupId> -- To stop receiving notification emails like this one, please contact [email protected].
