You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/09/11 06:08:43 UTC
[incubator-servicecomb-saga] 06/07: SCB-820 Clean up the
tcc-spring-demo
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 b2263b934d395ee116e3c3a176955a69586dcaa0
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Tue Sep 11 11:58:27 2018 +0800
SCB-820 Clean up the tcc-spring-demo
---
.../saga/demo/pack/booking/BookingController.java | 1 -
.../saga/demo/pack/car/CarBookingService.java | 1 +
saga-demo/tcc-spring-demo/inventory/pom.xml | 4 ++++
.../demo/pack/ordering/OrderingController.java | 15 ++++++--------
.../saga/demo/pack/payment/PaymentService.java | 5 +++--
.../demo/pack/payment/TccPaymentApplication.java | 12 +++++++++++
.../saga/demo/pack/payment/PaymentServiceTest.java | 24 ++++++++++++++++++++++
7 files changed, 50 insertions(+), 12 deletions(-)
diff --git a/saga-demo/saga-spring-demo/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java b/saga-demo/saga-spring-demo/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java
index f44abd9..5091321 100644
--- a/saga-demo/saga-spring-demo/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java
+++ b/saga-demo/saga-spring-demo/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java
@@ -39,7 +39,6 @@ public class BookingController {
@SagaStart
@PostMapping("/booking/{name}/{rooms}/{cars}")
-
public String order(@PathVariable String name, @PathVariable Integer rooms, @PathVariable Integer cars) {
template.postForEntity(
carServiceUrl + "/order/{name}/{cars}",
diff --git a/saga-demo/saga-spring-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java b/saga-demo/saga-spring-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java
index 3be4d36..e225280 100644
--- a/saga-demo/saga-spring-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java
+++ b/saga-demo/saga-spring-demo/car/src/main/java/org/apache/servicecomb/saga/demo/pack/car/CarBookingService.java
@@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+
@Service
class CarBookingService {
private Map<Integer, CarBooking> bookings = new ConcurrentHashMap<>();
diff --git a/saga-demo/tcc-spring-demo/inventory/pom.xml b/saga-demo/tcc-spring-demo/inventory/pom.xml
index 6c2a218..ca43065 100644
--- a/saga-demo/tcc-spring-demo/inventory/pom.xml
+++ b/saga-demo/tcc-spring-demo/inventory/pom.xml
@@ -47,6 +47,10 @@
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.servicecomb.saga</groupId>
+ <artifactId>omega-transport-resttemplate</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
diff --git a/saga-demo/tcc-spring-demo/ordering/src/main/java/org/apache/servicecomb/saga/demo/pack/ordering/OrderingController.java b/saga-demo/tcc-spring-demo/ordering/src/main/java/org/apache/servicecomb/saga/demo/pack/ordering/OrderingController.java
index 2859793..a19da78 100644
--- a/saga-demo/tcc-spring-demo/ordering/src/main/java/org/apache/servicecomb/saga/demo/pack/ordering/OrderingController.java
+++ b/saga-demo/tcc-spring-demo/ordering/src/main/java/org/apache/servicecomb/saga/demo/pack/ordering/OrderingController.java
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
@Controller
@@ -39,25 +40,21 @@ public class OrderingController {
@TccStart
@PostMapping("/order/{userName}/{productName}/{productUnit}/{unitPrice}")
+ @ResponseBody
public String ordering(
@PathVariable String userName,
@PathVariable String productName, @PathVariable Integer productUnit, @PathVariable Integer unitPrice) {
restTemplate.postForEntity(
- inventoryServiceUrl + "/products/order/{userName}/{producetName}/{productUnit}",
+ inventoryServiceUrl + "/products/order/{userName}/{productName}/{productUnit}",
null, String.class, userName, productName, productUnit);
-
+ int amount = productUnit * unitPrice;
+
restTemplate.postForEntity(paymentServiceUrl + "/payments/pay/{userName}/{amount}",
- null, String.class, userName, productUnit * unitPrice);
+ null, String.class, userName, amount);
return userName + " ordering " + productName + " with " + productUnit + " OK";
}
- @Autowired
- public void setRestTemplate(RestTemplate restTemplate) {
- this.restTemplate = restTemplate;
- }
-
-
}
diff --git a/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentService.java b/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentService.java
index d6c5d06..b10d72f 100644
--- a/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentService.java
+++ b/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentService.java
@@ -34,8 +34,8 @@ public class PaymentService {
private Map<Integer, Payment> payments = new ConcurrentHashMap<>();
- @Transactional
@Participate(confirmMethod = "confirm", cancelMethod = "cancel")
+ @Transactional
public void pay(Payment payment) {
Account account = getAccount(payment);
if (account.getCredit() >= payment.getAmount()) {
@@ -59,11 +59,12 @@ public class PaymentService {
@Transactional
public void confirm(Payment payment) {
Account account = getAccount(payment);
- accountDao.saveAndFlush(account);
payment.setConfirmed(true);
payment.setCancelled(false);
account.setBalance(account.getBalance() - payment.getAmount());
payment.setBalance(account.getBalance());
+ accountDao.saveAndFlush(account);
+
}
diff --git a/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/TccPaymentApplication.java b/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/TccPaymentApplication.java
index ade5b2b..40f67c4 100644
--- a/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/TccPaymentApplication.java
+++ b/saga-demo/tcc-spring-demo/payment/src/main/java/org/apache/servicecomb/saga/demo/pack/payment/TccPaymentApplication.java
@@ -18,8 +18,10 @@
package org.apache.servicecomb.saga.demo.pack.payment;
import org.apache.servicecomb.saga.omega.spring.EnableOmega;
+import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Profile;
@SpringBootApplication
@@ -29,4 +31,14 @@ public class TccPaymentApplication {
public static void main(String[] args) {
SpringApplication.run(TccPaymentApplication.class, args);
}
+
+ @Bean
+ CommandLineRunner kickOff(AccountDao accountDao) {
+ return args -> {
+ // Set up the account information
+ accountDao.save(new Account("UserA", 100, 90));
+ accountDao.save(new Account("UserB", 10, 10));
+ accountDao.save(new Account("UserC", 1, 1));
+ };
+ }
}
diff --git a/saga-demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentServiceTest.java b/saga-demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentServiceTest.java
index 77d0b9e..9807aa1 100644
--- a/saga-demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentServiceTest.java
+++ b/saga-demo/tcc-spring-demo/payment/src/test/java/org/apache/servicecomb/saga/demo/pack/payment/PaymentServiceTest.java
@@ -18,9 +18,13 @@
package org.apache.servicecomb.saga.demo.pack.payment;
import static org.hamcrest.MatcherAssert.assertThat;
+
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.fail;
+
+import org.hamcrest.core.IsNull;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -76,6 +80,26 @@ public class PaymentServiceTest {
}
@Test
+ public void testPaymentServicePaymentJustAsCredit() {
+ payment.setId(1);
+ payment.setUserName("UserB");
+ payment.setAmount(10);
+ paymentService.pay(payment);
+ assertThat(payment.getBalance(), IsNull.nullValue());
+ assertThat(paymentService.getAccount(payment).getCredit(), is(0));
+ assertThat(paymentService.getAccount(payment).getBalance(), is(10));
+ assertThat(paymentService.getAllTransactions().size(), is(1));
+
+ paymentService.confirm(payment);
+ assertThat(payment.isCancelled(), is(false));
+ assertThat(payment.isConfirmed(), is(true));
+ assertThat(paymentService.getAccount(payment).getCredit(), is(0));
+ assertThat(paymentService.getAccount(payment).getBalance(), is(0));
+ assertThat(payment.getBalance(), is(0));
+ }
+
+
+ @Test
public void getNoExitUserFromPaymentService() {
payment.setId(1);
payment.setAmount(10);