@RequestMapping(method = POST, value = "/{name}/deposit")
 public ModelAndView depositAmount(@PathVariable String name, @RequestParam String amount) {
   accountService.depositAmount(name, Long.parseLong(amount));
   long balance = accountService.getBalance(name);
   return new ModelAndView(
       "redirect:/accounts/" + name, "account", new AccountView(name, balance, ""));
 }
 @RequestMapping(method = POST, value = "/{name}/withdraw")
 public ModelAndView withdrawAmount(@PathVariable String name, @RequestParam String amount)
     throws AmountExceedsAccountBalanceException {
   AccountView accountView;
   try {
     accountService.withdrawAmount(name, Long.parseLong(amount));
     accountView = new AccountView(name, accountService.getBalance(name));
   } catch (AmountExceedsAccountBalanceException exception) {
     LOGGER.error(exception.getMessage(), exception);
     accountView = new AccountView(name, accountService.getBalance(name), exception.getMessage());
   }
   return new ModelAndView("accounts/show", "account", accountView);
 }
 @RequestMapping(method = GET, value = "")
 public ModelAndView listAllAccounts() {
   List<Account> accounts = accountService.getAllAccounts();
   List<AccountView> accountViews = new ArrayList<>();
   for (Account account : accounts) {
     accountViews.add(new AccountView(account.getName(), account.getBalance(), ""));
   }
   return new ModelAndView("accounts/index", "accounts", accountViews);
 }
 @RequestMapping(method = GET, value = "/{name}")
 public ModelAndView showAccount(@PathVariable String name) {
   long balance = accountService.getBalance(name);
   return new ModelAndView("accounts/show", "account", new AccountView(name, balance, ""));
 }
 @RequestMapping(method = POST)
 public String createAccount(@RequestParam String name) {
   accountService.createAccount(name);
   return "redirect:/accounts/" + name;
 }