test_class.declarator: cleanupService
test_class.modifier: @Autowired
  	private
test_class.original_string: @Autowired
  	private CleanupService cleanupService;
test_class.type: CleanupService
test_class.var_name: cleanupService
test_class.declarator: bankService
test_class.modifier: @Autowired
  	private
test_class.original_string: @Autowired
  	private BankService bankService;
test_class.type: BankService
test_class.var_name: bankService
test_class.file: spring-ddd/spring-ddd-bank/src/test/java/de/beuth/knabe/spring_ddd_bank/domain/ClientTest.java
test_class.identifier: ClientTest
test_case.body: @Test
  	public void deposit() {
  		final Client jack = bankService.createClient("jack", LocalDate.parse("1966-12-31"));
  		final AccountAccess jacksGiro = jack.createAccount("Jack's Giro");
  		final AccountNo accountNo = jacksGiro.getAccount().accountNo();
  		jack.deposit(accountNo, new Amount(999999999, 99));
  		final String report = jack.accountsReport();
  		assertEquals("Accounts of client: jack\n" + accountNo + "\tisOwner\t999999999,99\tJack's Giro\n", report);
  	}
test_case.class_method_signature: ClientTest.deposit()
test_case.full_signature: @Test public void deposit()
test_case.identifier: deposit
test_case.invocations: createClient parse createAccount accountNo getAccount deposit accountsReport assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void deposit()
focal_class.declarator: username
focal_class.modifier: private
focal_class.original_string: private String username;
focal_class.type: String
focal_class.var_name: username
focal_class.declarator: birthDate
focal_class.modifier: private
focal_class.original_string: private LocalDate birthDate;
focal_class.type: LocalDate
focal_class.var_name: birthDate
focal_class.declarator: accountAccessRepository
focal_class.modifier: @Autowired
  	private transient
focal_class.original_string: @Autowired
  	private transient AccountAccessRepository accountAccessRepository;
focal_class.type: AccountAccessRepository
focal_class.var_name: accountAccessRepository
focal_class.declarator: accountRepository
focal_class.modifier: @Autowired
  	private transient
focal_class.original_string: @Autowired
  	private transient AccountRepository accountRepository;
focal_class.type: AccountRepository
focal_class.var_name: accountRepository
focal_class.file: spring-ddd/spring-ddd-bank/src/main/java/de/beuth/knabe/spring_ddd_bank/domain/Client.java
focal_class.identifier: Client
focal_class.class_method_signature: Client.Client()
focal_class.full_signature: @SuppressWarnings("unused") private  Client()
focal_class.identifier: Client
focal_class.modifiers: @SuppressWarnings("unused") private
focal_class.parameters: ()
focal_class.signature:  Client()
focal_class.class_method_signature: Client.Client(final String username, final LocalDate birthDate)
focal_class.full_signature: public  Client(final String username, final LocalDate birthDate)
focal_class.identifier: Client
focal_class.modifiers: public
focal_class.parameters: (final String username, final LocalDate birthDate)
focal_class.signature:  Client(final String username, final LocalDate birthDate)
focal_class.class_method_signature: Client.getUsername()
focal_class.full_signature: @Column(unique = true, nullable = false) public String getUsername()
focal_class.identifier: getUsername
focal_class.modifiers: @Column(unique = true, nullable = false) public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getUsername()
focal_class.class_method_signature: Client.getBirthDate()
focal_class.full_signature: public LocalDate getBirthDate()
focal_class.identifier: getBirthDate
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: LocalDate
focal_class.signature: LocalDate getBirthDate()
focal_class.class_method_signature: Client.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: Client.createAccount(final String accountName)
focal_class.full_signature: public AccountAccess createAccount(final String accountName)
focal_class.identifier: createAccount
focal_class.modifiers: public
focal_class.parameters: (final String accountName)
focal_class.return: AccountAccess
focal_class.signature: AccountAccess createAccount(final String accountName)
focal_class.class_method_signature: Client.deposit(final AccountNo destination, final Amount amount)
focal_class.full_signature: public void deposit(final AccountNo destination, final Amount amount)
focal_class.identifier: deposit
focal_class.modifiers: public
focal_class.parameters: (final AccountNo destination, final Amount amount)
focal_class.return: void
focal_class.signature: void deposit(final AccountNo destination, final Amount amount)
focal_class.class_method_signature: Client.transfer(final Account source, final AccountNo destination, final Amount amount)
focal_class.full_signature: public void transfer(final Account source, final AccountNo destination, final Amount amount)
focal_class.identifier: transfer
focal_class.modifiers: public
focal_class.parameters: (final Account source, final AccountNo destination, final Amount amount)
focal_class.return: void
focal_class.signature: void transfer(final Account source, final AccountNo destination, final Amount amount)
focal_class.class_method_signature: Client._findDestinationAccount(final AccountNo destination)
focal_class.full_signature: private Account _findDestinationAccount(final AccountNo destination)
focal_class.identifier: _findDestinationAccount
focal_class.modifiers: private
focal_class.parameters: (final AccountNo destination)
focal_class.return: Account
focal_class.signature: Account _findDestinationAccount(final AccountNo destination)
focal_class.class_method_signature: Client.addAccountManager(final Account account, Client manager)
focal_class.full_signature: public AccountAccess addAccountManager(final Account account, Client manager)
focal_class.identifier: addAccountManager
focal_class.modifiers: public
focal_class.parameters: (final Account account, Client manager)
focal_class.return: AccountAccess
focal_class.signature: AccountAccess addAccountManager(final Account account, Client manager)
focal_class.class_method_signature: Client.findMyAccount(final AccountNo accountNo)
focal_class.full_signature: public Account findMyAccount(final AccountNo accountNo)
focal_class.identifier: findMyAccount
focal_class.modifiers: public
focal_class.parameters: (final AccountNo accountNo)
focal_class.return: Account
focal_class.signature: Account findMyAccount(final AccountNo accountNo)
focal_class.class_method_signature: Client.accountsReport()
focal_class.full_signature: public String accountsReport()
focal_class.identifier: accountsReport
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String accountsReport()
focal_class.superclass: extends EntityBase<Client>
focal_method.body: public void deposit(final AccountNo destination, final Amount amount)
  			throws AmountExc, DestinationAccountNotFoundExc, DepositFailure {
  		// 1. Error checking:
  		if (amount.compareTo(Amount.ZERO) <= 0) {
  			throw create(Client.AmountExc.class, amount);
  		}
  		final Account destinationAccount = _findDestinationAccount(destination);
  		try {
  			// 2. Do modifications:
  			destinationAccount.setBalance(destinationAccount.getBalance().plus(amount));
  			accountRepository.save(destinationAccount);
  		} catch (final Exception ex) {
  			throw create(DepositFailure.class, ex, amount, destination);
  		}
  	}
focal_method.class_method_signature: Client.deposit(final AccountNo destination, final Amount amount)
focal_method.full_signature: public void deposit(final AccountNo destination, final Amount amount)
focal_method.identifier: deposit
focal_method.invocations: compareTo create _findDestinationAccount setBalance plus getBalance save create
focal_method.modifiers: public
focal_method.parameters: (final AccountNo destination, final Amount amount)
focal_method.return: void
focal_method.signature: void deposit(final AccountNo destination, final Amount amount)