diff --git a/java-spring/accounts-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsCommandSideServiceIntegrationTest.java b/java-spring/accounts-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsCommandSideServiceIntegrationTest.java index 29ffb9e..c015229 100644 --- a/java-spring/accounts-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsCommandSideServiceIntegrationTest.java +++ b/java-spring/accounts-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsCommandSideServiceIntegrationTest.java @@ -25,7 +25,7 @@ public class AccountsCommandSideServiceIntegrationTest { private int port; private String baseUrl(String path) { - return "http://localhost:" + port + "/" + path; + return "http://localhost:" + port + "/api" + path; } @Autowired diff --git a/java-spring/accounts-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountController.java b/java-spring/accounts-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountController.java index f908622..c2c6dbe 100644 --- a/java-spring/accounts-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountController.java +++ b/java-spring/accounts-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountController.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.CompletableFuture; @RestController -@RequestMapping("/accounts") +@RequestMapping("/api/accounts") public class AccountController { private AccountService accountService; diff --git a/java-spring/accounts-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountControllerIntegrationTest.java b/java-spring/accounts-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountControllerIntegrationTest.java index 593b1ea..e1be1e1 100644 --- a/java-spring/accounts-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountControllerIntegrationTest.java +++ b/java-spring/accounts-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/accounts/AccountControllerIntegrationTest.java @@ -35,7 +35,7 @@ public class AccountControllerIntegrationTest { @Test public void shouldCreateAccount() throws Exception { - mockMvc.perform(post("/accounts") + mockMvc.perform(post("/api/accounts") .contentType(MediaType.APPLICATION_JSON) .content("{\"customerId\" : \"00000000-00000000\", \"initialBalance\" : 500}") .accept(MediaType.APPLICATION_JSON)) @@ -44,7 +44,7 @@ public class AccountControllerIntegrationTest { @Test public void shouldRejectBadRequest() throws Exception { - mockMvc.perform(post("/accounts") + mockMvc.perform(post("/api/accounts") .contentType(MediaType.APPLICATION_JSON) .content("{\"initialBalanceXXX\" : 500}") .accept(MediaType.APPLICATION_JSON)) diff --git a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountChangeInfo.java b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountChangeInfo.java deleted file mode 100644 index b988eb1..0000000 --- a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountChangeInfo.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.accounts; - -import org.apache.commons.lang.builder.EqualsBuilder; -import org.apache.commons.lang.builder.HashCodeBuilder; - -public class AccountChangeInfo { - - private String changeId; - private String transactionId; - private String transactionType; - private long amount; - private long balanceDelta; - - public AccountChangeInfo(String changeId, String transactionId, String transactionType, long amount, long balanceDelta) { - this.changeId = changeId; - this.transactionId = transactionId; - this.transactionType = transactionType; - this.amount = amount; - this.balanceDelta = balanceDelta; - } - - @Override - public boolean equals(Object o) { - return EqualsBuilder.reflectionEquals(this, o); - } - - @Override - public int hashCode() { - return HashCodeBuilder.reflectionHashCode(this); - } -} diff --git a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfo.java b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfo.java index 46eab5d..0fc343f 100644 --- a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfo.java +++ b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfo.java @@ -1,11 +1,10 @@ package net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.accounts; +import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountChangeInfo; import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountTransactionInfo; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Created by cer on 11/21/14. @@ -18,13 +17,19 @@ public class AccountInfo { private String description; private long balance; private List changes; - private List transactions; + private Map transactions; + private Map transferStates; private String version; + private Date date; private AccountInfo() { } - public AccountInfo(String id, String customerId, String title, String description, long balance, List changes, List transactions, String version) { + public AccountInfo(String id, String customerId, String title, String description, long balance, List changes, Map transactions, String version) { + this(id, customerId, title, description, balance, changes, transactions, version, new Date()); + } + + public AccountInfo(String id, String customerId, String title, String description, long balance, List changes, Map transactions, String version, Date date) { this.id = id; this.customerId = customerId; @@ -34,6 +39,7 @@ public class AccountInfo { this.changes = changes; this.transactions = transactions; this.version = version; + this.date = date; } public String getId() { @@ -57,14 +63,26 @@ public class AccountInfo { } public List getChanges() { - return changes; + return changes == null ? Collections.EMPTY_LIST : changes; } public List getTransactions() { - return transactions; + return transactions == null ? Collections.EMPTY_LIST : new ArrayList<>(transactions.values()); } public String getVersion() { return version; } + + public Date getDate() { + return date; + } + + public Map getTransferStates() { + return transferStates; + } + + public void setTransferStates(Map transferStates) { + this.transferStates = transferStates; + } } diff --git a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateService.java b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateService.java index ecc47fb..d727b1c 100644 --- a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateService.java +++ b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateService.java @@ -1,15 +1,18 @@ package net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.accounts; import com.mongodb.WriteResult; +import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountChangeInfo; import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountTransactionInfo; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import java.math.BigDecimal; -import java.util.Collections; +import java.util.Date; import static net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.accounts.MoneyUtil.toIntegerRepr; import static org.springframework.data.mongodb.core.query.Criteria.where; @@ -28,29 +31,33 @@ public class AccountInfoUpdateService { public void create(String accountId, String customerId, String title, BigDecimal initialBalance, String description, String version) { try { - accountInfoRepository.save(new AccountInfo( - accountId, - customerId, - title, - description, - toIntegerRepr(initialBalance), - Collections.emptyList(), - Collections.emptyList(), - version)); + AccountChangeInfo ci = new AccountChangeInfo(); + ci.setAmount(toIntegerRepr(initialBalance)); + WriteResult x = mongoTemplate.upsert(new Query(where("id").is(accountId).and("version").exists(false)), + new Update() + .set("customerId", customerId) + .set("title", title) + .set("description", description) + .set("balance", toIntegerRepr(initialBalance)) + .push("changes", ci) + .set("date", new Date()) + .set("version", version), + AccountInfo.class); logger.info("Saved in mongo"); + + } catch (DuplicateKeyException t) { + logger.warn("When saving ", t); } catch (Throwable t) { - logger.error("Error during saving: "); logger.error("Error during saving: ", t); throw new RuntimeException(t); } } - public void addTransaction(String eventId, String fromAccountId, AccountTransactionInfo ti) { - mongoTemplate.updateMulti(new Query(where("id").is(fromAccountId)), /* wrong .and("version").lt(eventId) */ + public void addTransaction(String accountId, AccountTransactionInfo ti) { + mongoTemplate.upsert(new Query(where("id").is(accountId)), new Update(). - push("transactions", ti). - set("version", eventId), + set("transactions." + ti.getTransactionId(), ti), AccountInfo.class); } @@ -64,5 +71,10 @@ public class AccountInfoUpdateService { AccountInfo.class); } - + public void updateTransactionStatus(String accountId, String transactionId, TransferState status) { + mongoTemplate.upsert(new Query(where("id").is(accountId)), + new Update(). + set("transferStates." + transactionId, status), + AccountInfo.class); + } } diff --git a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryService.java b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryService.java index fc4e12e..f8b736f 100644 --- a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryService.java +++ b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryService.java @@ -1,9 +1,6 @@ package net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.accounts; -import io.eventuate.CompletableFutureUtil; - import java.util.List; -import java.util.concurrent.CompletableFuture; public class AccountQueryService { @@ -13,15 +10,17 @@ public class AccountQueryService { this.accountInfoRepository = accountInfoRepository; } - public CompletableFuture findByAccountId(String accountId) { + public AccountInfo findByAccountId(String accountId) { AccountInfo account = accountInfoRepository.findOne(accountId); if (account == null) - return CompletableFutureUtil.failedFuture(new AccountNotFoundException(accountId)); + throw new AccountNotFoundException(accountId); else - return CompletableFuture.completedFuture(account); + if(account.getTransferStates()!=null) + account.getTransactions().stream().forEach(ati -> ati.setStatus(account.getTransferStates().get(ati.getTransactionId()))); + return account; } - public CompletableFuture> findByCustomerId(String customerId) { - return CompletableFuture.completedFuture(accountInfoRepository.findByCustomerId(customerId)); + public List findByCustomerId(String customerId) { + return accountInfoRepository.findByCustomerId(customerId); } } diff --git a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryWorkflow.java b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryWorkflow.java index 047e894..a8f0780 100644 --- a/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryWorkflow.java +++ b/java-spring/accounts-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQueryWorkflow.java @@ -3,12 +3,14 @@ package net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.ac import io.eventuate.DispatchedEvent; import io.eventuate.EventHandlerMethod; import io.eventuate.EventSubscriber; -import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.accounts.AccountChangedEvent; -import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.accounts.AccountCreditedEvent; -import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.accounts.AccountDebitedEvent; -import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.accounts.AccountOpenedEvent; +import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.accounts.*; +import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.transactions.CreditRecordedEvent; +import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.transactions.DebitRecordedEvent; +import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.transactions.FailedDebitRecordedEvent; import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.transactions.MoneyTransferCreatedEvent; +import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountChangeInfo; import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountTransactionInfo; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,20 +59,36 @@ public class AccountQueryWorkflow { de.getEvent().getDetails().getDate(), de.getEvent().getDetails().getDescription()); - accountInfoUpdateService.addTransaction(eventId, fromAccountId, ti); - accountInfoUpdateService.addTransaction(eventId, toAccountId, ti); + accountInfoUpdateService.addTransaction(fromAccountId, ti); + accountInfoUpdateService.addTransaction(toAccountId, ti); } @EventHandlerMethod public void recordDebit(DispatchedEvent de) { + String accountId = de.getEntityId(); + String transactionId = de.getEvent().getTransactionId(); + + accountInfoUpdateService.updateTransactionStatus(accountId, transactionId, TransferState.DEBITED); saveChange(de, -1); } @EventHandlerMethod public void recordCredit(DispatchedEvent de) { + String accountId = de.getEntityId(); + String transactionId = de.getEvent().getTransactionId(); + + accountInfoUpdateService.updateTransactionStatus(accountId, transactionId, TransferState.COMPLETED); saveChange(de, +1); } + @EventHandlerMethod + public void recordFailed(DispatchedEvent de) { + String accountId = de.getEntityId(); + String transactionId = de.getEvent().getTransactionId(); + + accountInfoUpdateService.updateTransactionStatus(accountId, transactionId, TransferState.FAILED_DUE_TO_INSUFFICIENT_FUNDS); + } + public void saveChange(DispatchedEvent de, int delta) { String changeId = de.getEventId().asString(); String transactionId = de.getEvent().getTransactionId(); diff --git a/java-spring/accounts-query-side-backend/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateServiceTest.java b/java-spring/accounts-query-side-backend/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateServiceTest.java index 2b7baec..4a11089 100644 --- a/java-spring/accounts-query-side-backend/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateServiceTest.java +++ b/java-spring/accounts-query-side-backend/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountInfoUpdateServiceTest.java @@ -4,7 +4,9 @@ import io.eventuate.javaclient.spring.jdbc.EventuateJdbcEventStoreConfiguration; import io.eventuate.javaclient.spring.jdbc.IdGenerator; import io.eventuate.javaclient.spring.jdbc.IdGeneratorImpl; import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.accounts.AccountCreditedEvent; +import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountChangeInfo; import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountTransactionInfo; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -14,11 +16,9 @@ import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; import java.math.BigDecimal; import java.util.Date; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import static org.junit.Assert.*; @@ -54,14 +54,14 @@ public class AccountInfoUpdateServiceTest { accountInfoUpdateService.create(accountId, customerId, title, initialBalance, description, version); - AccountInfo accountInfo = accountQueryService.findByAccountId(accountId).get(); + AccountInfo accountInfo = accountQueryService.findByAccountId(accountId); assertEquals(accountId, accountInfo.getId()); assertEquals(customerId, accountInfo.getCustomerId()); assertEquals(title, accountInfo.getTitle()); assertEquals(description, accountInfo.getDescription()); assertEquals(initialBalance.longValue() * 100, accountInfo.getBalance()); - assertTrue(accountInfo.getChanges().isEmpty()); + assertEquals(1, accountInfo.getChanges().size()); assertTrue(accountInfo.getTransactions().isEmpty()); assertEquals(version, accountInfo.getVersion()); @@ -76,22 +76,74 @@ public class AccountInfoUpdateServiceTest { accountInfoUpdateService.updateBalance(accountId, changeId, 500, change); - accountInfo = accountQueryService.findByAccountId(accountId).get(); + accountInfo = accountQueryService.findByAccountId(accountId); assertEquals(initialBalance.add(new BigDecimal(5)).longValue() * 100, accountInfo.getBalance()); assertFalse(accountInfo.getChanges().isEmpty()); - assertEquals(change, accountInfo.getChanges().get(0)); + assertEquals(change, accountInfo.getChanges().get(1)); String eventId = x.genId().asString(); AccountTransactionInfo ti = new AccountTransactionInfo(transactionId, accountId, accountId, 5, new Date(), "A transfer"); - accountInfoUpdateService.addTransaction(eventId, accountId, ti); + accountInfoUpdateService.addTransaction(accountId, ti); - accountInfo = accountQueryService.findByAccountId(accountId).get(); + accountInfo = accountQueryService.findByAccountId(accountId); assertFalse(accountInfo.getTransactions().isEmpty()); assertEquals(ti, accountInfo.getTransactions().get(0)); } + @Test + public void shouldHandleDuplicateSaveAccountInfo() throws ExecutionException, InterruptedException { + IdGenerator x = new IdGeneratorImpl(); + String accountId = x.genId().asString(); + String customerId = x.genId().asString(); + String version = x.genId().asString(); + + String title = "Checking account"; + BigDecimal initialBalance = new BigDecimal("1345"); + String description = "Some account"; + + accountInfoUpdateService.create(accountId, customerId, title, initialBalance, description, version); + accountInfoUpdateService.create(accountId, customerId, title, initialBalance, description, version); + } + + @Test + public void shouldUpdateTransactionStatus() { + IdGenerator x = new IdGeneratorImpl(); + String accountId = x.genId().asString(); + String customerId = x.genId().asString(); + String version = x.genId().asString(); + + String title = "Checking account"; + BigDecimal initialBalance = new BigDecimal("1345"); + String description = "Some account"; + + accountInfoUpdateService.create(accountId, customerId, title, initialBalance, description, version); + + String transactionId = x.genId().asString(); + + AccountTransactionInfo transactionInfo = new AccountTransactionInfo(); + transactionInfo.setTransactionId(transactionId); + transactionInfo.setStatus(TransferState.INITIAL); + + accountInfoUpdateService.addTransaction(accountId, transactionInfo); + + AccountInfo accountInfo = accountQueryService.findByAccountId(accountId); + assertEquals(accountId, accountInfo.getId()); + assertFalse(accountInfo.getTransactions().isEmpty()); + assertEquals(1, accountInfo.getTransactions().size()); + + assertEquals(TransferState.INITIAL, accountInfo.getTransactions().get(0).getStatus()); + + accountInfoUpdateService.updateTransactionStatus(accountId, transactionId, TransferState.COMPLETED); + + accountInfo = accountQueryService.findByAccountId(accountId); + assertEquals(accountId, accountInfo.getId()); + assertFalse(accountInfo.getTransactions().isEmpty()); + assertEquals(1, accountInfo.getTransactions().size()); + + assertEquals(TransferState.COMPLETED, accountInfo.getTransactions().get(0).getStatus()); + } } \ No newline at end of file diff --git a/java-spring/accounts-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsQuerySideServiceIntegrationTest.java b/java-spring/accounts-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsQuerySideServiceIntegrationTest.java index dab85cd..663888e 100644 --- a/java-spring/accounts-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsQuerySideServiceIntegrationTest.java +++ b/java-spring/accounts-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/AccountsQuerySideServiceIntegrationTest.java @@ -30,7 +30,7 @@ public class AccountsQuerySideServiceIntegrationTest { private int port; private String baseUrl(String path) { - return "http://localhost:" + port + "/" + path; + return "http://localhost:" + port + "/api" + path; } @Autowired diff --git a/java-spring/accounts-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/queryside/accounts/AccountQueryController.java b/java-spring/accounts-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/queryside/accounts/AccountQueryController.java index 3521389..455ddf1 100644 --- a/java-spring/accounts-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/queryside/accounts/AccountQueryController.java +++ b/java-spring/accounts-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/queryside/accounts/AccountQueryController.java @@ -4,18 +4,19 @@ import net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.acc import net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.accounts.AccountNotFoundException; import net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.accounts.AccountQueryService; -import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountTransactionInfo; -import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.GetAccountResponse; +import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @RestController +@RequestMapping("/api") public class AccountQueryController { private AccountQueryService accountInfoQueryService; @@ -26,21 +27,35 @@ public class AccountQueryController { } @RequestMapping(value = "/accounts/{accountId}", method = RequestMethod.GET) - public CompletableFuture get(@PathVariable String accountId) { - return accountInfoQueryService.findByAccountId(accountId) - .thenApply(accountInfo -> new GetAccountResponse(accountInfo.getId(), new BigDecimal(accountInfo.getBalance()), accountInfo.getTitle(), accountInfo.getDescription())); + public ResponseEntity get(@PathVariable String accountId) { + AccountInfo accountInfo = accountInfoQueryService.findByAccountId(accountId); + return ResponseEntity.ok().body(new GetAccountResponse(accountInfo.getId(), new BigDecimal(accountInfo.getBalance()), accountInfo.getTitle(), accountInfo.getDescription())); } - @RequestMapping(value = "/accounts", method = RequestMethod.GET) - public CompletableFuture> getAccountsForCustomer(@RequestParam("customerId") String customerId) { - return accountInfoQueryService.findByCustomerId(customerId) - .thenApply(accountInfoList -> accountInfoList.stream().map(accountInfo -> new GetAccountResponse(accountInfo.getId(), new BigDecimal(accountInfo.getBalance()), accountInfo.getTitle(), accountInfo.getDescription())).collect(Collectors.toList())); + @RequestMapping(value = "/customers/{customerId}/accounts", method = RequestMethod.GET) + public ResponseEntity getAccountsForCustomer(@PathVariable("customerId") String customerId) { + return ResponseEntity.ok().body( + new GetAccountsResponse( + accountInfoQueryService.findByCustomerId(customerId) + .stream() + .map(accountInfo -> new GetAccountResponse( + accountInfo.getId(), + new BigDecimal(accountInfo.getBalance()), + accountInfo.getTitle(), + accountInfo.getDescription())) + .collect(Collectors.toList()) + ) + ); } @RequestMapping(value = "/accounts/{accountId}/history", method = RequestMethod.GET) - public CompletableFuture> getTransactionsHistory(@PathVariable String accountId) { - return accountInfoQueryService.findByAccountId(accountId) - .thenApply(AccountInfo::getTransactions); + public ResponseEntity getTransactionsHistory(@PathVariable String accountId) { + AccountInfo accountInfo = accountInfoQueryService.findByAccountId(accountId); + List historyEntries = new ArrayList<>(); + historyEntries.add(new AccountOpenInfo(accountInfo.getDate(), AccountHistoryEntry.EntryType.account, accountInfo.getChanges().get(0).getAmount())); + accountInfo.getTransactions().forEach(historyEntries::add); + + return ResponseEntity.ok().body(new AccountHistoryResponse(historyEntries)); } @ResponseStatus(value= HttpStatus.NOT_FOUND, reason="account not found") diff --git a/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/controller/GatewayController.java b/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/controller/GatewayController.java index 941f175..347ba21 100755 --- a/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/controller/GatewayController.java +++ b/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/controller/GatewayController.java @@ -4,6 +4,7 @@ import net.chrisrichardson.eventstore.javaexamples.banking.apigateway.ApiGateway import net.chrisrichardson.eventstore.javaexamples.banking.apigateway.utils.ContentRequestTransformer; import net.chrisrichardson.eventstore.javaexamples.banking.apigateway.utils.HeadersRequestTransformer; import net.chrisrichardson.eventstore.javaexamples.banking.apigateway.utils.URLRequestTransformer; +import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpUriRequest; @@ -12,9 +13,12 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.multiaction.NoSuchRequestHandlingMethodException; @@ -26,6 +30,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.URISyntaxException; import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.springframework.web.bind.annotation.RequestMethod.GET; import static org.springframework.web.bind.annotation.RequestMethod.POST; @@ -52,13 +57,20 @@ public class GatewayController { .build(); } - @RequestMapping(value = "/**", method = {GET, POST}) + @RequestMapping(value = "/api/**", method = {GET, POST}) + @ResponseBody public ResponseEntity proxyRequest(HttpServletRequest request) throws NoSuchRequestHandlingMethodException, IOException, URISyntaxException { HttpUriRequest proxiedRequest = createHttpUriRequest(request); logger.info("request: {}", proxiedRequest); HttpResponse proxiedResponse = httpClient.execute(proxiedRequest); logger.info("Response {}", proxiedResponse.getStatusLine().getStatusCode()); - return new ResponseEntity<>(read(proxiedResponse.getEntity().getContent()), HttpStatus.valueOf(proxiedResponse.getStatusLine().getStatusCode())); + return new ResponseEntity<>(read(proxiedResponse.getEntity().getContent()), processHeaders(proxiedResponse.getAllHeaders()), HttpStatus.valueOf(proxiedResponse.getStatusLine().getStatusCode())); + } + + private HttpHeaders processHeaders(Header[] headers) { + HttpHeaders result = new HttpHeaders(); + Stream.of(headers).filter(h -> h.getName().equalsIgnoreCase("Content-Type")).forEach( h -> result.set(h.getName(), h.getValue())); + return result; } private HttpUriRequest createHttpUriRequest(HttpServletRequest request) throws URISyntaxException, NoSuchRequestHandlingMethodException, IOException { diff --git a/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/ContentRequestTransformer.java b/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/ContentRequestTransformer.java old mode 100755 new mode 100644 diff --git a/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/HeadersRequestTransformer.java b/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/HeadersRequestTransformer.java old mode 100755 new mode 100644 diff --git a/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/ProxyRequestTransformer.java b/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/ProxyRequestTransformer.java old mode 100755 new mode 100644 diff --git a/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/URLRequestTransformer.java b/java-spring/api-gateway-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/apigateway/utils/URLRequestTransformer.java old mode 100755 new mode 100644 diff --git a/java-spring/api-gateway-service/src/main/resources/application.properties b/java-spring/api-gateway-service/src/main/resources/application.properties index 61fe212..578ae6c 100755 --- a/java-spring/api-gateway-service/src/main/resources/application.properties +++ b/java-spring/api-gateway-service/src/main/resources/application.properties @@ -5,18 +5,21 @@ customers.queryside.service.host=localhost transfers.commandside.service.host=localhost -api.gateway.endpoints[0].path=[/]*accounts.* +api.gateway.endpoints[0].path=[/]*api/accounts.* api.gateway.endpoints[0].method=GET api.gateway.endpoints[0].location=http://${accounts.queryside.service.host}:8080 -api.gateway.endpoints[1].path=[/]*accounts.* -api.gateway.endpoints[1].method=POST -api.gateway.endpoints[1].location=http://${accounts.commandside.service.host}:8080 -api.gateway.endpoints[2].path=[/]*customers.* -api.gateway.endpoints[2].method=GET -api.gateway.endpoints[2].location=http://${customers.queryside.service.host}:8080 -api.gateway.endpoints[3].path=[/]*customers.* -api.gateway.endpoints[3].method=POST -api.gateway.endpoints[3].location=http://${customers.commandside.service.host}:8080 -api.gateway.endpoints[4].path=[/]*transfers.* +api.gateway.endpoints[1].path=[/]*api/customers.*/accounts +api.gateway.endpoints[1].method=GET +api.gateway.endpoints[1].location=http://${accounts.queryside.service.host}:8080 +api.gateway.endpoints[2].path=[/]*api/accounts.* +api.gateway.endpoints[2].method=POST +api.gateway.endpoints[2].location=http://${accounts.commandside.service.host}:8080 +api.gateway.endpoints[3].path=[/]*api/customers.* +api.gateway.endpoints[3].method=GET +api.gateway.endpoints[3].location=http://${customers.queryside.service.host}:8080 +api.gateway.endpoints[4].path=[/]*api/customers.* api.gateway.endpoints[4].method=POST -api.gateway.endpoints[4].location=http://${transfers.commandside.service.host}:8080 \ No newline at end of file +api.gateway.endpoints[4].location=http://${customers.commandside.service.host}:8080 +api.gateway.endpoints[5].path=[/]*api/transfers.* +api.gateway.endpoints[5].method=POST +api.gateway.endpoints[5].location=http://${transfers.commandside.service.host}:8080 \ No newline at end of file diff --git a/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/MoneyTransferIntegrationTest.java b/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/MoneyTransferIntegrationTest.java index 6516ee4..0f7df9c 100644 --- a/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/MoneyTransferIntegrationTest.java +++ b/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/MoneyTransferIntegrationTest.java @@ -6,7 +6,7 @@ import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.a import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.accounts.AccountService; import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.transactions.MoneyTransfer; import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.transactions.MoneyTransferService; -import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.transactions.TransferState; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.transactions.TransferDetails; import org.junit.Assert; import org.junit.Test; diff --git a/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQuerySideIntegrationTest.java b/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQuerySideIntegrationTest.java index bb1bfbd..46cba9b 100644 --- a/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQuerySideIntegrationTest.java +++ b/java-spring/backend-integration-tests/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/accounts/AccountQuerySideIntegrationTest.java @@ -6,7 +6,7 @@ import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.a import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.accounts.AccountService; import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.transactions.MoneyTransfer; import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.transactions.MoneyTransferService; -import net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.transactions.TransferState; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.transactions.TransferDetails; import org.junit.Assert; import org.junit.Test; @@ -17,6 +17,7 @@ import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.math.BigDecimal; +import java.util.concurrent.CompletableFuture; import static net.chrisrichardson.eventstorestore.javaexamples.testutil.TestUtil.await; import static net.chrisrichardson.eventstorestore.javaexamples.testutil.TestUtil.eventually; @@ -55,10 +56,10 @@ public class AccountQuerySideIntegrationTest { updatedTransaction -> Assert.assertEquals(TransferState.COMPLETED, updatedTransaction.getEntity().getState())); eventually( - () -> accountQueryService.findByAccountId(fromAccount.getEntityId()), + () -> CompletableFuture.completedFuture(accountQueryService.findByAccountId(fromAccount.getEntityId())), accountInfo -> Assert.assertEquals(70 * 100, accountInfo.getBalance())); eventually( - () -> accountQueryService.findByAccountId(toAccount.getEntityId()), + () -> CompletableFuture.completedFuture(accountQueryService.findByAccountId(toAccount.getEntityId())), accountInfo -> Assert.assertEquals(380 * 100, accountInfo.getBalance())); } } diff --git a/java-spring/common-auth-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/controller/AuthController.java b/java-spring/common-auth-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/controller/AuthController.java index c86f4f5..59143b9 100644 --- a/java-spring/common-auth-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/controller/AuthController.java +++ b/java-spring/common-auth-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/controller/AuthController.java @@ -28,6 +28,7 @@ import static org.springframework.web.bind.annotation.RequestMethod.POST; */ @RestController @Validated +@RequestMapping("/api") public class AuthController { @Autowired diff --git a/java-spring/common-auth/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/AuthConfiguration.java b/java-spring/common-auth/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/AuthConfiguration.java index ea6fcac..df5e1cd 100755 --- a/java-spring/common-auth/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/AuthConfiguration.java +++ b/java-spring/common-auth/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/AuthConfiguration.java @@ -80,7 +80,7 @@ public class AuthConfiguration extends WebSecurityConfigurerAdapter { .authorizeRequests() .antMatchers("/index.html", "/", "/**.js", "/**.css").permitAll() .antMatchers("/swagger-ui.html", "/v2/api-docs").permitAll() - .antMatchers(HttpMethod.POST, "/customers", "/login").permitAll() + .antMatchers(HttpMethod.POST, "/api/customers", "/api/login").permitAll() .anyRequest().authenticated().and() .addFilterAfter(new StatelessAuthenticationFilter(tokenAuthenticationService), BasicAuthenticationFilter.class); } diff --git a/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountChangeInfo.java b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountChangeInfo.java new file mode 100644 index 0000000..6e4eeb5 --- /dev/null +++ b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountChangeInfo.java @@ -0,0 +1,80 @@ +package net.chrisrichardson.eventstore.javaexamples.banking.common.accounts; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; + +import java.util.Date; + +public class AccountChangeInfo { + + private String changeId; + private String transactionId; + private String transactionType; + private long amount; + private long balanceDelta; + + public AccountChangeInfo() { + } + + public AccountChangeInfo(String changeId, String transactionId, String transactionType, long amount, long balanceDelta) { + this(new Date(), changeId, transactionId, transactionType, amount, balanceDelta); + } + + public AccountChangeInfo(Date date, String changeId, String transactionId, String transactionType, long amount, long balanceDelta) { + this.changeId = changeId; + this.transactionId = transactionId; + this.transactionType = transactionType; + this.amount = amount; + this.balanceDelta = balanceDelta; + } + + public String getChangeId() { + return changeId; + } + + public void setChangeId(String changeId) { + this.changeId = changeId; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public String getTransactionType() { + return transactionType; + } + + public void setTransactionType(String transactionType) { + this.transactionType = transactionType; + } + + public long getAmount() { + return amount; + } + + public void setAmount(long amount) { + this.amount = amount; + } + + public long getBalanceDelta() { + return balanceDelta; + } + + public void setBalanceDelta(long balanceDelta) { + this.balanceDelta = balanceDelta; + } + + @Override + public boolean equals(Object o) { + return EqualsBuilder.reflectionEquals(this, o); + } + + @Override + public int hashCode() { + return HashCodeBuilder.reflectionHashCode(this); + } +} diff --git a/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountHistoryEntry.java b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountHistoryEntry.java new file mode 100644 index 0000000..f91c2e7 --- /dev/null +++ b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountHistoryEntry.java @@ -0,0 +1,50 @@ +package net.chrisrichardson.eventstore.javaexamples.banking.common.accounts; + +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; + +import java.util.Date; + +/** + * Created by popikyardo on 9/1/16. + */ +@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, + include = JsonTypeInfo.As.PROPERTY, + property = "entryType") +@JsonSubTypes({ + @JsonSubTypes.Type(value = AccountTransactionInfo.class, name = "transaction"), + @JsonSubTypes.Type(value = AccountOpenInfo.class, name = "account") +}) +public class AccountHistoryEntry { + + protected Date date; + protected EntryType entryType; + + public AccountHistoryEntry() { + } + + public AccountHistoryEntry(Date date, EntryType entryType) { + this.date = date; + this.entryType = entryType; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public EntryType getEntryType() { + return entryType; + } + + public void setEntryType(EntryType entryType) { + this.entryType = entryType; + } + + public enum EntryType { + transaction, account + } +} diff --git a/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountHistoryResponse.java b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountHistoryResponse.java new file mode 100644 index 0000000..b20d958 --- /dev/null +++ b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountHistoryResponse.java @@ -0,0 +1,26 @@ +package net.chrisrichardson.eventstore.javaexamples.banking.common.accounts; + +import java.util.List; + +/** + * Created by popikyardo on 9/1/16. + */ +public class AccountHistoryResponse { + private List transactionsHistory; + + public AccountHistoryResponse() { + } + + public AccountHistoryResponse(List transactionsHistory) { + + this.transactionsHistory = transactionsHistory; + } + + public List getTransactionsHistory() { + return transactionsHistory; + } + + public void setTransactionsHistory(List transactionsHistory) { + this.transactionsHistory = transactionsHistory; + } +} diff --git a/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountOpenInfo.java b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountOpenInfo.java new file mode 100644 index 0000000..e661d4b --- /dev/null +++ b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountOpenInfo.java @@ -0,0 +1,27 @@ +package net.chrisrichardson.eventstore.javaexamples.banking.common.accounts; + +import java.util.Date; + +/** + * Created by popikyardo on 9/1/16. + */ +public class AccountOpenInfo extends AccountHistoryEntry { + + private long initialBalance; + + public AccountOpenInfo() { + } + + public AccountOpenInfo(Date date, EntryType entryType, long initialBalance) { + super(date, entryType); + this.initialBalance=initialBalance; + } + + public long getInitialBalance() { + return initialBalance; + } + + public void setInitialBalance(long initialBalance) { + this.initialBalance = initialBalance; + } +} diff --git a/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountTransactionInfo.java b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountTransactionInfo.java index d168bf5..6cc88d5 100644 --- a/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountTransactionInfo.java +++ b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/AccountTransactionInfo.java @@ -1,19 +1,20 @@ package net.chrisrichardson.eventstore.javaexamples.banking.common.accounts; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import java.util.Date; -public class AccountTransactionInfo { +public class AccountTransactionInfo extends AccountHistoryEntry{ private String transactionId; private String fromAccountId; private String toAccountId; private long amount; - private Date date; private String description; + private TransferState status = TransferState.INITIAL; public AccountTransactionInfo() { } @@ -35,6 +36,7 @@ public class AccountTransactionInfo { this.amount = amount; this.date = date; this.description = description; + this.entryType = EntryType.transaction; } public String getTransactionId() { @@ -69,14 +71,6 @@ public class AccountTransactionInfo { this.amount = amount; } - public Date getDate() { - return date; - } - - public void setDate(Date date) { - this.date = date; - } - public String getDescription() { return description; } @@ -85,6 +79,14 @@ public class AccountTransactionInfo { this.description = description; } + public TransferState getStatus() { + return status; + } + + public void setStatus(TransferState status) { + this.status = status; + } + @Override public boolean equals(Object o) { return EqualsBuilder.reflectionEquals(this, o); diff --git a/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/GetAccountsResponse.java b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/GetAccountsResponse.java new file mode 100644 index 0000000..814f3f8 --- /dev/null +++ b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/accounts/GetAccountsResponse.java @@ -0,0 +1,25 @@ +package net.chrisrichardson.eventstore.javaexamples.banking.common.accounts; + +import java.util.List; + +/** + * Created by popikyardo on 9/1/16. + */ +public class GetAccountsResponse { + private List accounts; + + public GetAccountsResponse() { + } + + public GetAccountsResponse(List accounts) { + this.accounts = accounts; + } + + public List getAccounts() { + return accounts; + } + + public void setAccounts(List accounts) { + this.accounts = accounts; + } +} diff --git a/java-spring/transactions-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/transactions/TransferState.java b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/transactions/TransferState.java similarity index 51% rename from java-spring/transactions-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/transactions/TransferState.java rename to java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/transactions/TransferState.java index 539d2ad..993f12d 100644 --- a/java-spring/transactions-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/transactions/TransferState.java +++ b/java-spring/common/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/common/transactions/TransferState.java @@ -1,4 +1,4 @@ -package net.chrisrichardson.eventstore.javaexamples.banking.backend.commandside.transactions; +package net.chrisrichardson.eventstore.javaexamples.banking.common.transactions; public enum TransferState { NEW, INITIAL, DEBITED, COMPLETED, FAILED_DUE_TO_INSUFFICIENT_FUNDS diff --git a/java-spring/customers-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/customers/CustomerConfiguration.java b/java-spring/customers-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/customers/CustomerConfiguration.java index 6b631e8..2e8a30c 100644 --- a/java-spring/customers-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/customers/CustomerConfiguration.java +++ b/java-spring/customers-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/customers/CustomerConfiguration.java @@ -4,10 +4,12 @@ import io.eventuate.AggregateRepository; import io.eventuate.EventuateAggregateStore; import io.eventuate.javaclient.spring.EnableEventHandlers; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @EnableEventHandlers +@ComponentScan public class CustomerConfiguration { @Bean diff --git a/java-spring/customers-command-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceConfiguration.java b/java-spring/customers-command-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceConfiguration.java index 4f85215..f6d3897 100644 --- a/java-spring/customers-command-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceConfiguration.java +++ b/java-spring/customers-command-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceConfiguration.java @@ -6,7 +6,6 @@ import net.chrisrichardson.eventstore.javaexamples.banking.web.commandside.custo import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.web.HttpMessageConverters; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.http.converter.HttpMessageConverter; @@ -15,7 +14,6 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConvert @Configuration @Import({CustomersCommandSideWebConfiguration.class, EventuateHttpStompClientConfiguration.class, CommonSwaggerConfiguration.class}) @EnableAutoConfiguration -@ComponentScan public class CustomersCommandSideServiceConfiguration { diff --git a/java-spring/customers-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceIntegrationTest.java b/java-spring/customers-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceIntegrationTest.java index 2062000..670462f 100644 --- a/java-spring/customers-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceIntegrationTest.java +++ b/java-spring/customers-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersCommandSideServiceIntegrationTest.java @@ -25,7 +25,7 @@ public class CustomersCommandSideServiceIntegrationTest { private int port; private String baseUrl(String path) { - return "http://localhost:" + port + "/" + path; + return "http://localhost:" + port + "/api" + path; } @Autowired diff --git a/java-spring/customers-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/customers/CustomerController.java b/java-spring/customers-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/customers/CustomerController.java index 5da5cee..14ff012 100644 --- a/java-spring/customers-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/customers/CustomerController.java +++ b/java-spring/customers-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/customers/CustomerController.java @@ -15,7 +15,7 @@ import java.util.concurrent.CompletableFuture; * Created by popikyardo on 03.02.16. */ @RestController -@RequestMapping("/customers") +@RequestMapping("/api/customers") public class CustomerController { private CustomerService customerService; diff --git a/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/CustomerInfoUpdateService.java b/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/CustomerInfoUpdateService.java index fd70386..3964683 100644 --- a/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/CustomerInfoUpdateService.java +++ b/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/CustomerInfoUpdateService.java @@ -5,6 +5,7 @@ import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.Quer import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.ToAccountInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.dao.DuplicateKeyException; import java.util.Collections; @@ -13,36 +14,38 @@ import java.util.Collections; */ public class CustomerInfoUpdateService { - private Logger logger = LoggerFactory.getLogger(getClass()); + private Logger logger = LoggerFactory.getLogger(getClass()); - private QuerySideCustomerRepository accountInfoRepository; + private QuerySideCustomerRepository querySideCustomerRepository; - public CustomerInfoUpdateService(QuerySideCustomerRepository accountInfoRepository) { - this.accountInfoRepository = accountInfoRepository; - } - - public void create(String id, CustomerInfo customerInfo) { - try { - accountInfoRepository.save(new QuerySideCustomer(id, - customerInfo.getName(), - customerInfo.getEmail(), - customerInfo.getSsn(), - customerInfo.getPhoneNumber(), - customerInfo.getAddress(), - Collections.emptyMap() - ) - ); - logger.info("Saved in mongo"); - } catch (Throwable t) { - logger.error("Error during saving: ", t); - throw new RuntimeException(t); + public CustomerInfoUpdateService(QuerySideCustomerRepository querySideCustomerRepository) { + this.querySideCustomerRepository = querySideCustomerRepository; } - } - public void addToAccount(String id, ToAccountInfo accountInfo) { - QuerySideCustomer customer = accountInfoRepository.findOne(id); - customer.getToAccounts().put(accountInfo.getId(), accountInfo); - accountInfoRepository.save(customer); - } + public void create(String id, CustomerInfo customerInfo) { + try { + querySideCustomerRepository.save(new QuerySideCustomer(id, + customerInfo.getName(), + customerInfo.getEmail(), + customerInfo.getSsn(), + customerInfo.getPhoneNumber(), + customerInfo.getAddress(), + Collections.emptyMap() + ) + ); + logger.info("Saved in mongo"); + } catch (DuplicateKeyException t) { + logger.warn("When saving ", t); + } catch (Throwable t) { + logger.error("Error during saving: ", t); + throw new RuntimeException(t); + } + } + + public void addToAccount(String id, ToAccountInfo accountInfo) { + QuerySideCustomer customer = querySideCustomerRepository.findOne(id); + customer.getToAccounts().put(accountInfo.getId(), accountInfo); + querySideCustomerRepository.save(customer); + } } diff --git a/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/QuerySideCustomerConfiguration.java b/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/QuerySideCustomerConfiguration.java index 3c7b47f..2fb0cb3 100644 --- a/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/QuerySideCustomerConfiguration.java +++ b/java-spring/customers-query-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/queryside/customers/QuerySideCustomerConfiguration.java @@ -2,6 +2,7 @@ package net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.cu import io.eventuate.javaclient.spring.EnableEventHandlers; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; @@ -12,6 +13,7 @@ import org.springframework.data.mongodb.repository.config.EnableMongoRepositorie @Configuration @EnableMongoRepositories @EnableEventHandlers +@ComponentScan public class QuerySideCustomerConfiguration { @Bean public CustomerQueryWorkflow customerQueryWorkflow(CustomerInfoUpdateService accountInfoUpdateService) { diff --git a/java-spring/customers-query-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceConfiguration.java b/java-spring/customers-query-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceConfiguration.java index 333f104..eee2af9 100644 --- a/java-spring/customers-query-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceConfiguration.java +++ b/java-spring/customers-query-side-service/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceConfiguration.java @@ -1,21 +1,19 @@ package net.chrisrichardson.eventstore.javaexamples.banking.web; import io.eventuate.javaclient.spring.httpstomp.EventuateHttpStompClientConfiguration; -import net.chrisrichardson.eventstore.javaexamples.banking.backend.queryside.customers.QuerySideCustomerConfiguration; import net.chrisrichardson.eventstore.javaexamples.banking.commonswagger.CommonSwaggerConfiguration; +import net.chrisrichardson.eventstore.javaexamples.banking.web.customers.queryside.CustomersQuerySideWebConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.web.HttpMessageConverters; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; @Configuration -@Import({QuerySideCustomerConfiguration.class, EventuateHttpStompClientConfiguration.class, CommonSwaggerConfiguration.class}) +@Import({CustomersQuerySideWebConfiguration.class, EventuateHttpStompClientConfiguration.class, CommonSwaggerConfiguration.class}) @EnableAutoConfiguration -@ComponentScan public class CustomersQuerySideServiceConfiguration { diff --git a/java-spring/customers-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceIntegrationTest.java b/java-spring/customers-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceIntegrationTest.java index fb4cd23..f48c868 100644 --- a/java-spring/customers-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceIntegrationTest.java +++ b/java-spring/customers-query-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/CustomersQuerySideServiceIntegrationTest.java @@ -1,9 +1,8 @@ package net.chrisrichardson.eventstore.javaexamples.banking.web; -import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.*; +import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.CustomerInfo; +import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.CustomerResponse; import net.chrisrichardson.eventstorestore.javaexamples.testutil.CustomersTestUtils; -import org.apache.tomcat.jni.Thread; -import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -13,7 +12,6 @@ import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.web.client.RestTemplate; -import rx.Observable; import javax.annotation.PostConstruct; @@ -29,7 +27,7 @@ public class CustomersQuerySideServiceIntegrationTest { private int port; private String baseUrl(String path) { - return "http://localhost:" + port + "/" + path; + return "http://localhost:" + port + "/api" + path; } @Autowired @@ -51,12 +49,6 @@ public class CustomersQuerySideServiceIntegrationTest { final CustomerResponse customerResponse = restTemplate.postForEntity(baseUrl("/customers"), customerInfo, CustomerResponse.class).getBody(); final String customerId = customerResponse.getId(); - try { - java.lang.Thread.sleep(10000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - customersTestUtils.assertCustomerResponse(customerId, customerInfo); } diff --git a/java-spring/customers-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/customers/queryside/CustomerQueryController.java b/java-spring/customers-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/customers/queryside/CustomerQueryController.java index a78d857..95b347c 100644 --- a/java-spring/customers-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/customers/queryside/CustomerQueryController.java +++ b/java-spring/customers-query-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/customers/queryside/CustomerQueryController.java @@ -14,6 +14,7 @@ import java.util.concurrent.CompletableFuture; * Created by Main on 05.02.2016. */ @RestController +@RequestMapping("/api") public class CustomerQueryController { private CustomerQueryService customerQueryService; diff --git a/java-spring/docker-compose-eventuate-local.yml b/java-spring/docker-compose-eventuate-local.yml index 0f347d8..cd542c7 100644 --- a/java-spring/docker-compose-eventuate-local.yml +++ b/java-spring/docker-compose-eventuate-local.yml @@ -3,7 +3,7 @@ apigateway: working_dir: /app volumes: - ./api-gateway-service/build/libs:/app - command: java -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transactions.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside + command: java -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transfers.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside ports: - "8080:8080" links: diff --git a/java-spring/e2e-test/src/test/java/net/chrisrichardson/eventstore/examples/bank/web/EndToEndTest.java b/java-spring/e2e-test/src/test/java/net/chrisrichardson/eventstore/examples/bank/web/EndToEndTest.java index 29684ab..7f9f293 100644 --- a/java-spring/e2e-test/src/test/java/net/chrisrichardson/eventstore/examples/bank/web/EndToEndTest.java +++ b/java-spring/e2e-test/src/test/java/net/chrisrichardson/eventstore/examples/bank/web/EndToEndTest.java @@ -18,7 +18,7 @@ public class EndToEndTest extends AbstractRestAPITest { CustomersTestUtils customersTestUtils = new CustomersTestUtils(restTemplate, baseUrl("/customers/")); public String baseUrl(String path) { - return "http://" + getenv("SERVICE_HOST", "localhost") + ":" + 8080 + "/" + path; + return "http://" + getenv("SERVICE_HOST", "localhost") + ":" + 8080 + "/api" + path; } @Override diff --git a/java-spring/monolithic-service/build.gradle b/java-spring/monolithic-service/build.gradle index aa36857..45c1d91 100644 --- a/java-spring/monolithic-service/build.gradle +++ b/java-spring/monolithic-service/build.gradle @@ -22,7 +22,7 @@ dependencies { } task copyWebStatic(type: Copy) { - from "../../prebuilt-web-client" + from "../../js-frontend/build" into "build/resources/main/static" } diff --git a/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingAuthTest.java b/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingAuthTest.java index 173f31d..2499229 100644 --- a/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingAuthTest.java +++ b/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingAuthTest.java @@ -43,7 +43,7 @@ public class BankingAuthTest { } private String baseUrl(String path) { - return "http://localhost:" + port + "/" + path; + return "http://localhost:" + port + "/api" + path; } @Test diff --git a/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingWebIntegrationTest.java b/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingWebIntegrationTest.java index f07ac9d..745e2b4 100644 --- a/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingWebIntegrationTest.java +++ b/java-spring/monolithic-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/BankingWebIntegrationTest.java @@ -32,7 +32,7 @@ public class BankingWebIntegrationTest extends AbstractRestAPITest { @Override public String baseUrl(String path) { - return "http://localhost:" + port + "/" + path; + return "http://localhost:" + port + "/api" + path; } @Override diff --git a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AbstractRestAPITest.java b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AbstractRestAPITest.java index 6055ed1..44942a4 100644 --- a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AbstractRestAPITest.java +++ b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AbstractRestAPITest.java @@ -1,9 +1,6 @@ package net.chrisrichardson.eventstorestore.javaexamples.testutil; -import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.AccountTransactionInfo; -import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.CreateAccountRequest; -import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.CreateAccountResponse; -import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.GetAccountResponse; +import net.chrisrichardson.eventstore.javaexamples.banking.common.accounts.*; import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.CustomerInfo; import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.CustomerResponse; import net.chrisrichardson.eventstore.javaexamples.banking.common.customers.QuerySideCustomer; @@ -51,12 +48,6 @@ public abstract class AbstractRestAPITest { Assert.assertNotNull(fromAccountId); Assert.assertNotNull(toAccountId); - try { - Thread.sleep(10000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - assertAccountBalance(fromAccountId, initialFromAccountBalance); assertAccountBalance(toAccountId, initialToAccountBalance); @@ -68,21 +59,21 @@ public abstract class AbstractRestAPITest { assertAccountBalance(toAccountId, finalToAccountBalance); eventually( - new Producer() { + new Producer() { @Override - public CompletableFuture produce() { + public CompletableFuture produce() { return CompletableFuture.completedFuture(getAuthenticatedRestTemplate().getForEntity(baseUrl("/accounts/" + fromAccountId + "/history"), - AccountTransactionInfo[].class)); + AccountHistoryResponse.class)); } }, - new Verifier() { + new Verifier() { @Override - public void verify(AccountTransactionInfo[] transactionInfos) { - Optional first = Arrays.asList(transactionInfos).stream().filter(ti -> ti.getTransactionId().equals(moneyTransfer.getMoneyTransferId())).findFirst(); + public void verify(AccountHistoryResponse accountHistoryResponse) { + Optional first = accountHistoryResponse.getTransactionsHistory().stream().filter( ahe -> ahe.getEntryType() == AccountHistoryEntry.EntryType.transaction && ((AccountTransactionInfo)ahe).getTransactionId().equals(moneyTransfer.getMoneyTransferId())).findFirst(); assertTrue(first.isPresent()); - AccountTransactionInfo ti = first.get(); + AccountTransactionInfo ti = (AccountTransactionInfo)first.get(); assertEquals(fromAccountId, ti.getFromAccountId()); assertEquals(toAccountId, ti.getToAccountId()); @@ -104,12 +95,6 @@ public abstract class AbstractRestAPITest { Assert.assertNotNull(customerId); assertEquals(customerInfo, customerResponse.getCustomerInfo()); - try { - Thread.sleep(10000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - getCustomersTestUtils().assertCustomerResponse(customerId, customerInfo); final CreateAccountResponse account = getAuthenticatedRestTemplate().postForEntity(baseUrl("/accounts"), @@ -123,17 +108,17 @@ public abstract class AbstractRestAPITest { assertAccountBalance(accountId, initialFromAccountBalance); eventually( - new Producer() { + new Producer() { @Override - public CompletableFuture produce() { - return CompletableFuture.completedFuture(getAuthenticatedRestTemplate().getForEntity(baseUrl("/accounts?customerId=" + customerId), - GetAccountResponse[].class)); + public CompletableFuture produce() { + return CompletableFuture.completedFuture(getAuthenticatedRestTemplate().getForEntity(baseUrl("/customers/"+customerId+"/accounts"), + GetAccountsResponse.class)); } }, - new Verifier() { + new Verifier() { @Override - public void verify(GetAccountResponse[] accountResponses) { - assertTrue(Arrays.asList(accountResponses).stream().filter(acc -> acc.getAccountId().equals(accountId)).findFirst().isPresent()); + public void verify(GetAccountsResponse accountResponses) { + assertTrue(accountResponses.getAccounts().stream().filter(acc -> acc.getAccountId().equals(accountId)).findFirst().isPresent()); } }); } diff --git a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AuthenticatedRestTemplate.java b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AuthenticatedRestTemplate.java index bd980e4..991c18e 100644 --- a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AuthenticatedRestTemplate.java +++ b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/AuthenticatedRestTemplate.java @@ -1,6 +1,5 @@ package net.chrisrichardson.eventstorestore.javaexamples.testutil; -import net.chrisrichardson.eventstore.javaexamples.banking.commonauth.utils.BasicAuthUtils; import org.springframework.http.HttpMethod; import org.springframework.web.client.RestTemplate; diff --git a/java-spring/common-auth/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/utils/BasicAuthUtils.java b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/BasicAuthUtils.java similarity index 95% rename from java-spring/common-auth/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/utils/BasicAuthUtils.java rename to java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/BasicAuthUtils.java index 4f29ba1..da496a9 100644 --- a/java-spring/common-auth/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/commonauth/utils/BasicAuthUtils.java +++ b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/BasicAuthUtils.java @@ -1,4 +1,4 @@ -package net.chrisrichardson.eventstore.javaexamples.banking.commonauth.utils; +package net.chrisrichardson.eventstorestore.javaexamples.testutil; import org.apache.tomcat.util.codec.binary.Base64; import org.springframework.http.*; diff --git a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/CustomersTestUtils.java b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/CustomersTestUtils.java index 4fc4fe1..a9e6e6e 100644 --- a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/CustomersTestUtils.java +++ b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/CustomersTestUtils.java @@ -6,7 +6,6 @@ import org.springframework.web.client.RestTemplate; import java.util.concurrent.CompletableFuture; -import static net.chrisrichardson.eventstorestore.javaexamples.testutil.TestUtil.awaitSuccessfulRequest; import static net.chrisrichardson.eventstorestore.javaexamples.testutil.TestUtil.eventually; /** diff --git a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/TestUtil.java b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/TestUtil.java index 025cdb1..2c84554 100644 --- a/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/TestUtil.java +++ b/java-spring/testutil/src/main/java/net/chrisrichardson/eventstorestore/javaexamples/testutil/TestUtil.java @@ -1,7 +1,5 @@ package net.chrisrichardson.eventstorestore.javaexamples.testutil; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import rx.Observable; import rx.Subscriber; import rx.functions.Action1; @@ -13,7 +11,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import java.util.function.Supplier; public class TestUtil { @@ -25,18 +22,6 @@ public class TestUtil { } } - public static T awaitSuccessfulRequest(Supplier> func, Func1 predicate) { - try { - return Observable.interval(400, TimeUnit.MILLISECONDS) - .take(50) - .map(x -> func.get()) - .filter(re -> re.getStatusCode().equals(HttpStatus.OK) && re.getBody() != null && predicate.call(re.getBody())) - .toBlocking().first().getBody(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - static class Tuple2 { private A first; @@ -52,7 +37,7 @@ public class TestUtil { } - static class Success implements Outcome { + static class Success implements Outcome { T value; @@ -69,51 +54,26 @@ public class TestUtil { } } - public static void eventually(final Producer producer, final Verifier verifier) { - final int n = 150; - Object possibleException = Observable.timer(0, 200, TimeUnit.MILLISECONDS).flatMap(new Func1>>() { - - @Override - public Observable> call(Long aLong) { - try { - return fromCompletableFuture(producer.produce()).map(new Func1>() { - @Override - public Outcome call(T t) { - return new Success(t); - } - }); - } catch (Exception e) { - Outcome value = new Failure(e); - return Observable.just(value); - } + public static void eventually(Producer producer, Verifier predicate) { + Throwable laste = null; + for (int i = 0; i < 30 ; i++) { + try { + T x = producer.produce().get(30, TimeUnit.SECONDS); + predicate.verify(x); + return; + } catch (Throwable t) { + laste = t; } - }).map(new Func1, Throwable>() { - @Override - public Throwable call(Outcome t) { - try { - if (t instanceof Success) { - verifier.verify(((Success) t).value); - return null; - } else - return ((Failure) t).t; - } catch (Throwable e) { - return e; - } + try { + TimeUnit.SECONDS.sleep(1); + } catch (InterruptedException e) { + throw new RuntimeException(e); } - }).take(n).zipWith(Observable.range(0, n), new Func2>() { - @Override - public Tuple2 call(Throwable e, Integer idx) { - return new Tuple2(e, idx); - } - }).skipWhile(new Func1, Boolean>() { - @Override - public Boolean call(Tuple2 tuple2) { - return tuple2.first != null && tuple2.second < n - 1; - } - }).first().toBlocking().getIterator().next().first; - - if (possibleException != null) - throw new RuntimeException((Throwable) possibleException); + } + if (laste != null) + throw new RuntimeException("Last exception was", laste); + else + throw new RuntimeException("predicate never satisfied"); } private static Observable fromCompletableFuture(CompletableFuture future) { diff --git a/java-spring/transactions-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/transactions/MoneyTransfer.java b/java-spring/transactions-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/transactions/MoneyTransfer.java index 896e8b7..849175a 100644 --- a/java-spring/transactions-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/transactions/MoneyTransfer.java +++ b/java-spring/transactions-command-side-backend/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/backend/commandside/transactions/MoneyTransfer.java @@ -4,6 +4,7 @@ import io.eventuate.Event; import io.eventuate.EventUtil; import io.eventuate.ReflectiveMutableCommandProcessingAggregate; import net.chrisrichardson.eventstore.javaexamples.banking.backend.common.transactions.*; +import net.chrisrichardson.eventstore.javaexamples.banking.common.transactions.TransferState; import java.util.List; diff --git a/java-spring/transactions-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/TransactionsCommandSideServiceIntegrationTest.java b/java-spring/transactions-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/TransactionsCommandSideServiceIntegrationTest.java index 0ec3a77..8d82dfd 100644 --- a/java-spring/transactions-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/TransactionsCommandSideServiceIntegrationTest.java +++ b/java-spring/transactions-command-side-service/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/TransactionsCommandSideServiceIntegrationTest.java @@ -20,7 +20,7 @@ public class TransactionsCommandSideServiceIntegrationTest { private int port; private String baseUrl(String path) { - return "http://localhost:" + port + "/" + path; + return "http://localhost:" + port + "/api" + path; } @Autowired diff --git a/java-spring/transactions-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferController.java b/java-spring/transactions-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferController.java index 7c5649f..8c8a348 100644 --- a/java-spring/transactions-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferController.java +++ b/java-spring/transactions-command-side-web/src/main/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferController.java @@ -16,7 +16,7 @@ import java.util.Date; import java.util.concurrent.CompletableFuture; @RestController -@RequestMapping("/transfers") +@RequestMapping("/api/transfers") public class MoneyTransferController { private final MoneyTransferService moneyTransferService; diff --git a/java-spring/transactions-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferControllerIntegrationTest.java b/java-spring/transactions-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferControllerIntegrationTest.java index f49d009..4aa88a7 100644 --- a/java-spring/transactions-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferControllerIntegrationTest.java +++ b/java-spring/transactions-command-side-web/src/test/java/net/chrisrichardson/eventstore/javaexamples/banking/web/commandside/transactions/MoneyTransferControllerIntegrationTest.java @@ -36,7 +36,7 @@ public class MoneyTransferControllerIntegrationTest { @Test public void shouldCreateAccount() throws Exception { - mockMvc.perform(post("/transfers") + mockMvc.perform(post("/api/transfers") .contentType(MediaType.APPLICATION_JSON) .content("{\"fromAccountId\" : \"fromAccountId\", \"toAccountId\" : \"toAccountId\", \"amount\" : \"500\"}") .accept(MediaType.APPLICATION_JSON)) @@ -45,7 +45,7 @@ public class MoneyTransferControllerIntegrationTest { @Test public void shouldRejectBadRequest() throws Exception { - mockMvc.perform(post("/transfers") + mockMvc.perform(post("/api/transfers") .contentType(MediaType.APPLICATION_JSON) .content("{\"fromAccountId\" : \"fromAccountIdXXXXXX\"}, {\"toAccountId\" : \"toAccountId\"}, {\"amount\" : \"500\"}") .accept(MediaType.APPLICATION_JSON)) diff --git a/js-frontend/build/app.3a9a7c962cfa5ee06c64.js.map b/js-frontend/build/app.3a9a7c962cfa5ee06c64.js.map deleted file mode 100644 index 117be76..0000000 --- a/js-frontend/build/app.3a9a7c962cfa5ee06c64.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/client.js?","webpack:///./src/app.js?","webpack:///./~/redux-router/server.js?","webpack:///./~/redux-router/lib/server.js?","webpack:///./~/redux-router/lib/matchMiddleware.js?","webpack:///./src/reducers/index.js?","webpack:///./src/reducers/auth/index.js?","webpack:///./src/reducers/auth/configure.js?","webpack:///./src/constants/ACTION_TYPES.js?","webpack:///./src/utils/defineActionTypes.js?","webpack:///./src/reducers/createDataReducer.js?","webpack:///./src/reducers/auth/authenticate.js?","webpack:///./src/reducers/auth/signin.js?","webpack:///./src/reducers/createFormReducer.js?","webpack:///./src/reducers/auth/signup.js?","webpack:///./src/reducers/auth/signout.js?","webpack:///./src/reducers/auth/user.js?","webpack:///./src/reducers/data/index.js?","webpack:///./src/reducers/data/accounts.js?","webpack:///./src/reducers/data/transfers.js?","webpack:///./src/reducers/data/entities.js?","webpack:///./src/reducers/data/bookmarkAccount.js?","webpack:///./src/reducers/ui/index.js?","webpack:///./src/reducers/ui/account.js?","webpack:///./src/reducers/ui/errors.js?","webpack:///./src/reducers/ui/bookmarkAccount.js?","webpack:///./src/reducers/ui/transfersMake.js?","webpack:///./src/actions/configure.js?","webpack:///./src/utils/constants.js?","webpack:///./src/actions/authenticate.js?","webpack:///./src/utils/sessionStorage.js?","webpack:///./src/utils/root.js?","webpack:///./src/utils/api.js?","webpack:///./src/utils/fetch.js?","webpack:///./src/utils/handleFetchResponse.js?","webpack:///./src/actions/entities.js?","webpack:///./src/utils/actions.js?","webpack:///./src/utils/clientSettings.js?","webpack:///./src/utils/parseEndpointConfig.js?","webpack:///./src/utils/parseUrl.js?","webpack:///./src/components/AuthComponent.js?","webpack:///./src/utils/readProp.js?","webpack:///./src/components/partials/Container.js?","webpack:///./src/components/HeaderLinks.js?","webpack:///./src/actions/signOut.js?","webpack:///./src/views/MyAccounts.js?","webpack:///./src/views/modals/index.js?","webpack:///./src/views/modals/Add3rdPartyAccountModal.js?","webpack:///./src/controls/bootstrap/ButtonLoader.js?","webpack:///./src/controls/bootstrap/Input.js?","webpack:///./src/controls/bootstrap/AuxErrorLabel.js?","webpack:///./src/views/modals/NewAccountModal.js?","webpack:///./src/views/modals/RemoveAccountModal.js?","webpack:///./src/components/partials/IndexPanel.js?","webpack:///./src/components/Money.js?","webpack:///./src/views/Account.js?","webpack:///./src/components/TransfersTable.js?","webpack:///./src/components/AccountInfo.js?","webpack:///./src/utils/blockedExecution.js?","webpack:///./src/views/SignIn.js?","webpack:///./src/controls/bootstrap/EmailSignInForm.js?","webpack:///./src/actions/signIn.js?","webpack:///./src/views/SignUp.js?","webpack:///./src/controls/bootstrap/EmailSignUpForm.js?","webpack:///./src/entities/formToPayloadMappers.js?","webpack:///./src/actions/signUp.js?"],"names":["reactRoot","window","document","getElementById","then","provider","render","process","env","NODE_ENV","firstChild","attributes","console","error","initialize","App","props","children","Component","cookies","isServer","currentLocation","userAgent","reducer","app","router","routes","reduxReactRouter","createHistoryMethod","store","createHistory","dispatch","default","emailSignInPath","customersPath","currentUserPath","accountsPath","transfersPath","storage","tokenFormat","handleLoginResponse","resp","data","handleAccountUpdateResponse","handleTokenValidationResponse","redirectPath","blank","global","navigator","log","mainReducer","auth","ui","authStateReducer","configure","signIn","signUp","signOut","authentication","user","configReducer","AUTH","CONFIGURE_START","CONFIGURE_COMPLETE","CONFIGURE_ERROR","c","AUTHENTICATE_START","AUTHENTICATE_COMPLETE","AUTHENTICATE_ERROR","SIGN_IN_START","SIGN_IN_COMPLETE","SIGN_IN_ERROR","SIGN_IN_FORM_UPDATE","SIGN_UP_START","SIGN_UP_COMPLETE","SIGN_UP_ERROR","SIGN_UP_FORM_UPDATE","SIGN_OUT_START","SIGN_OUT_COMPLETE","ENTITIES","REQUESTED","RECEIVED","RECEIVED_LIST","ACCOUNTS","LIST_START","LIST_COMPLETE","LIST_ERROR","LIST_REF_START","LIST_REF_COMPLETE","LIST_REF_ERROR","CREATE_START","CREATE_COMPLETE","CREATE_ERROR","CREATE_FORM_UPDATE","EDIT_START","EDIT_COMPLETE","EDIT_ERROR","EDIT_FORM_UPDATE","CREATE_REF_START","CREATE_REF_COMPLETE","CREATE_REF_ERROR","CREATE_REF_FORM_UPDATE","CREATE_REF_OWNER_LOOKUP_START","CREATE_REF_OWNER_LOOKUP_COMPLETE","CREATE_REF_ACCOUNT_LOOKUP_START","CREATE_REF_ACCOUNT_LOOKUP_COMPLETE","ACCOUNT","SINGLE_START","SINGLE_COMPLETE","SINGLE_ERROR","DELETE_START","DELETE_COMPLETE","DELETE_ERROR","TRANSFERS","MAKE_START","MAKE_COMPLETE","MAKE_ERROR","MAKE_FORM_UPDATE","ERROR","START","STOP","defineActionTypes","TODO_DEFINE","Symbol","defineActionType","obj","result","Object","keys","reduce","memo","namespace","value","types","namespaceTypes","trim","split","filter","key","test","Set","size","length","forEach","t","entries","type","createByIdDataReducer","next","KEY_REQUEST","KEY_SUCCESS","KEY_ERROR","state","action","id","errors","createDataReducer","payloadActionNameProp","payloadStateNameProp","payloadAssignFn","k","initialState","loading","formReducer","payload","isSealed","aggregate","valid","authReducer","signInReducer","createFormReducer","KEY_UPDATE","form","signUpReducer","signOutInitialState","signOutReducer","initalState","isSignedIn","userReducer","dataReducer","transfers","entities","accounts","bookmarkAccount","ownAccountsReducer","otherAccountsReducer","toAccounts","map","createAccountReducer","editAccountReducer","own","other","create","edit","selectedEvents","nodeInitialState","entity","hashMap","item","accountId","optionsLoaderInitialState","options","accountsDisabled","ownersLookup","accountsLookup","optionsLoaderReducer","isOwnerSetBlank","isOwnerSelected","nextAccountsDisabled","nextForm","account","nextErrors","uiReducer","transfersMake","setEndpointKeys","storeCurrentEndpointKey","C","SET_ENDPOINT_KEYS","STORE_CURRENT_ENDPOINT_KEY","endpoints","currentEndpointKey","defaultEndpointKey","endpoint","settings","INITIAL_CONFIG_KEY","DEFAULT_CONFIG_KEY","SAVED_CONFIG_KEY","SAVED_CREDS_KEY","SAVED_USER_INFO","authenticateStart","authenticateComplete","authenticateError","authenticate","forceReread","savedUserPromise","Promise","rs","rj","currentHeaders","accessToken","reason","savedUser","userData","err","catch","resolve","setCurrentSettings","getCurrentSettings","setCurrentEndpoint","getCurrentEndpoint","setCurrentEndpointKey","getCurrentEndpointKey","setDefaultEndpointKey","getDefaultEndpointKey","resetConfig","destroySession","getInitialEndpointKey","isApiRequest","getSessionEndpointKey","getSessionEndpoint","getEmailSignInUrl","getEmailSignUpUrl","getCurrentUserUrl","getAccountsUrl","getCustomersUrl","getTransfersUrl","getApiUrl","getTokenFormat","persistUserData","retrieveUserData","retrieveHeaders","persistData","retrieveData","authState","currentSettings","currentEndpoint","s","e","sessionKeys","localStorage","removeItem","remove","path","cookiePath","unescapeQuotes","val","replace","get","getItem","url","configKey","apiUrl","JSON","stringify","setItem","set","expires","cookieExpiry","parse","Function","eval","apiSignIn","apiSignUp","apiGetCurrentUser","apiCreateAccount","apiCreateRefAccount","apiMakeTransfer","apiRetrieveAccounts","apiRetrieveTransfers","apiRetrieveAccount","apiDeleteAccount","apiRetrieveUsers","apiRetrieveUser","makeQuery","params","encodeURIComponent","join","body","headers","method","customerId","title","initialBalance","balance","description","owner","fromAccountId","amount","reject","message","email","getAuthHeaders","updateAuthCredentials","nextHeaders","newHeaders","blankHeaders","parseResponse","response","json","status","rest","jvmPattern","m","name","accountsList","accountCreate","accountRefCreate","fetchOwnAccounts","fetchAccount","deleteAccount","errorMessageTimedOut","api","entityRequested","entityReceived","accountsListRequested","accountsListReceived","accountsListError","accountsRefListReceived","accountCreateStart","accountCreateComplete","accountCreateError","accountCreateFormUpdate","accountRefCreateStart","accountRefCreateComplete","accountRefCreateError","accountRefCreateFormUpdate","accountRequested","accountComplete","accountError","userId","list","readUntilChanged","initialData","initialDataFlat","setTimeout","call","deleteAccountRequested","deleteAccountComplete","deleteAccountError","errorMessageStart","errorMessageStop","timeout","createRefOwnerLookupStart","createRefOwnerLookupComplete","createRefAccountLookupStart","createRefAccountLookupComplete","createRefOwnerLookup","lookup","customers","arr","fullName","firstName","lastName","i","label","createRefAccountLookup","makeTransferRequested","makeTransferComplete","makeTransferError","makeTransferFormUpdate","makeTransfer","moneyTransferId","getTransfersRequested","getTransfersComplete","getTransfersError","getTransfers","makeActionCreator","argNames","args","arg","index","applyConfig","defaultSettings","forceHardRedirect","initialCredentials","passwordResetSuccessUrl","location","href","confirmationSuccessUrl","parseExpiry","parseInt","reset","match","parseEndpointConfig","defaultEndpoint","signOutPath","emailRegistrationPath","accountUpdatePath","accountDeletePath","passwordResetPath","passwordUpdatePath","tokenValidationPath","authProviderPaths","github","facebook","google","getFirstObjectKey","constructor","Array","defaultConfig","configName","normalizeTokenKeys","getAllParams","getRedirectInfo","token","auth_token","client_id","client","config","endpointKey","getAnchorSearch","rawAnchor","hash","getSearchQs","rawQs","search","qs","qsObj","getAnchorQs","anchorQs","anchorQsObj","stripKeys","q","buildCredentials","authHeaders","getLocationWithoutParams","newSearch","newAnchorQs","newAnchor","newLocation","pathname","authKeys","authRedirectHeaders","authRedirectPath","requireAuthentication","AuthComponent","isAuthenticated","redirectAfterLogin","checkRedirect","nextProps","mapStateToProps","read","src","defaultVal","pathItem","Container","propTypes","node","BS","HeaderLinks","evt","buttonSet","isRegister","isLogin","condition","bind","signOutStart","signOutComplete","Modals","A","resetModals","showAccountModal","show3rdPartyAccountModal","showDeleteAccountModal","MyAccounts","setState","close","accountToRemove","ssn","phoneNumber","address","city","street1","street2","zipCode","errorLine","ownAccountsData","ownAccounts","idx","remove3rdPartyAccountModal","refAccountsData","refAccounts","concat","createAccountModal","create3rdPartyAccountModal","createAccountModalConfirmed","create3rdPartyAccountModalConfirmed","remove3rdPartyAccountModalConfirmed","formValidation","prop","push","hasErrors","Add3rdPartyAccountModal","preventDefault","validationErrors","onHide","input","disabled","ownersLoading","formErrors","show","display","getOwnersOptions","handleInput","handleSubmit","ButtonLoader","icon","spinColor","bsStyle","spinColorDark","spinColorLight","spinConfig","position","marginRight","width","height","top","onClick","className","style","bsSize","renderIcon","bool","object","string","func","isRequired","defaultProps","lines","radius","AuthInput","ev","onChange","target","paddingLeft","marginBottom","left","renderErrorList","array","AuxErrorLabel","NewAccountModal","event","actionLabel","RemoveAccountBookmarkModal","titleRaw","descriptionRaw","balanceRaw","entityId","Number","toFixed","handleAction","IndexPanel","header","moneyText","isNaN","absNum","Math","abs","Money","unsaved","Account","ensureTransfers","ensureAccounts","cb","forceFetch","all","transfer","spinnerResult","transferTo","itemAccountId","substr","transferDisabled","initiateTransfer","TransfersTable","forAccount","currentAccountId","transfersMarkup","toAccountId","sort","a","b","date","transactionId","isOriginating","directionMarkup","counterAccountMarkup","transferTimestamp","Date","timeAgoTitle","toLocaleDateString","toLocaleTimeString","AccountInfo","ensureData","blocked","fn","useCb","isBlocked","SignIn","query","signInProps","inputProps","password","EmailSignInForm","formData","submit","ex","shape","emailSignIn","emailSignInFormUpdate","emailSignInStart","emailSignInComplete","emailSignInError","SignUp","EmailSignUpForm","getIn","customerInfoMap","address1","address2","fname","lname","zip","emailSignUpFormUpdate","emailSignUpStart","emailSignUpComplete","emailSignUpError","emailSignUp"],"mappings":"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;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4HAA2H;AAC3H;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6C;;;;;;;ACpEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;;;;;;;;;AC/BA;;AAEA;;;;AACA;;;;AACA;;;;;;AAPA;;;AASA,KAAMwB,cAAc,4BAAgB;AAClCC,uBADkC;AAElCT,uBAFkC;AAGlCU;AAHkC,EAAhB,CAApB;;mBAMeF,W;;;;;;;;;;;;;;;;;ACZf;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,KAAMG,mBAAmB,4BAAgB;AACvCC,sCADuC;AAEvCC,gCAFuC;AAGvCC,gCAHuC;AAIvCC,mCAJuC;AAKvCC,4CALuC;AAMvCC;AANuC,EAAhB,CAAzB,C,CAZA;;;mBAqBeN,gB;;;;;;;;;;;;;;;;;;mQCrBf;;;;;AAGA;;;;AACA;;;;;;AAEO,KAAMO,wCAAgB,iCAAkB,CAC3C,uBAAEC,IAAF,CAAOC,eADoC,EAE3C,uBAAED,IAAF,CAAOE,kBAFoC,EAG3C,uBAAEF,IAAF,CAAOG,eAHoC,CAAlB,EAK3B,QAL2B,EAM3B,QAN2B,EAO3B;AAAA,OAACC,CAAD,yDAAK,EAAL;AAAA,uBAAkBA,CAAlB;AAAA,EAP2B,CAAtB;AASP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","file":"app.3a9a7c962cfa5ee06c64.js","sourcesContent":["/**\n * Created by andrew on 12/02/16.\n */\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { initialize } from \"./app\";\n/**\n * Fire-up React Router.\n */\nconst reactRoot = window.document.getElementById(\"root\");\ninitialize().then(({ provider }) => {\n ReactDOM.render(provider, reactRoot);\n});\n\n\n/**\n * Detect whether the server-side render has been discarded due to an invalid checksum.\n */\nif (process.env.NODE_ENV !== \"production\") {\n if (!reactRoot.firstChild || !reactRoot.firstChild.attributes ||\n !reactRoot.firstChild.attributes[\"data-react-checksum\"]) {\n console.error(\"Server-side React render was discarded. Make sure that your initial render does not contain any client-side code.\");\n }\n}\n\n\n/** WEBPACK FOOTER **\n ** ./src/client.js\n **/","/**\n * Created by andrew on 12/02/16.\n */\n\nimport React from \"react\";\nimport { createStore, compose, applyMiddleware, combineReducers} from \"redux\";\nimport { Provider, connect} from \"react-redux\";\nimport thunk from \"redux-thunk\";\nimport createLogger from 'redux-logger';\nimport { Route, IndexRoute, Link, IndexLink } from \"react-router\";\nimport { ReduxRouter} from \"redux-router\";\nimport { createHistory, createHashHistory, createMemoryHistory } from \"history\";\nimport { pushState, routerStateReducer, reduxReactRouter as clientRouter} from \"redux-router\";\nimport { reduxReactRouter as serverRouter } from \"redux-router/server\";\n\nimport mainReducer from './reducers';\n\nimport { configure as reduxAuthConfigure } from './actions/configure';\nimport { requireAuthentication } from './components/AuthComponent';\nimport Container from \"./components/partials/Container\";\nimport MyAccounts from \"./views/MyAccounts\";\nimport Account from \"./views/Account\";\nimport SignIn from \"./views/SignIn\";\nimport SignUp from \"./views/SignUp\";\n\nclass App extends React.Component {\n render() {\n return (\n {this.props.children}\n );\n }\n}\n\nexport function initialize({cookies, isServer, currentLocation, userAgent} = {}) {\n\n const reducer = combineReducers({\n app: mainReducer,\n router: routerStateReducer\n });\n\n const routes = (\n \n \n \n \n \n \n );\n\n // these methods will differ from server to client\n const reduxReactRouter = isServer ? serverRouter : clientRouter;\n const createHistoryMethod = isServer ? createMemoryHistory : createHashHistory;\n\n // create the redux store\n const store = compose(\n applyMiddleware(thunk, createLogger()),\n reduxReactRouter({\n routes,\n createHistory: createHistoryMethod\n })\n )(createStore)(reducer);\n\n\n /**\n * The React Router 1.0 routes for both the server and the client.\n */\n return store.dispatch(reduxAuthConfigure([\n {\n default: {\n //apiUrl: '/',\n emailSignInPath: '/login',\n customersPath: '/customers',\n currentUserPath: '/user',\n accountsPath: '/accounts',\n transfersPath: '/transfers'\n }\n }\n ], {\n cookies,\n isServer,\n currentLocation,\n storage: 'localStorage',\n tokenFormat: {\n \"access-token\": \"{{ access-token }}\"\n },\n handleLoginResponse: function(resp) {\n debugger;\n\n return resp.data;\n },\n\n handleAccountUpdateResponse: function(resp) {\n debugger;\n\n return resp.data;\n },\n\n handleTokenValidationResponse: function(resp) {\n debugger;\n return resp.data;\n }\n })).then(({ redirectPath, blank } = {}) => {\n // hack for material-ui server-side rendering.\n // see https://github.com/callemall/material-ui/pull/2007\n if (userAgent) {\n global.navigator = {userAgent};\n }\n\n if (blank) {\n // if `blank` is true, this is an OAuth redirect and should not\n // be rendered\n return