Skip to content

Commit 33fdb6f

Browse files
committed
fix(lesson-17/bank): align MoneyOrder with Check ctor; remove getAmount() dependency
1 parent 84245ee commit 33fdb6f

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BankAtm.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codedifferently.lesson17.bank;
22

33
import com.codedifferently.lesson17.bank.exceptions.AccountNotFoundException;
4+
import java.lang.reflect.Method;
45
import java.util.HashMap;
56
import java.util.Map;
67
import java.util.Set;
@@ -53,15 +54,30 @@ public void depositFunds(String accountNumber, double amount) {
5354
}
5455

5556
/**
56-
* Deposits funds into an account using a check.
57+
* Deposits funds into an account using a check-like instrument.
5758
*
5859
* @param accountNumber The account number.
5960
* @param check The check to deposit.
6061
*/
6162
public void depositFunds(String accountNumber, Check check) {
6263
CheckingAccount account = getAccountOrThrow(accountNumber);
6364
check.depositFunds(account);
64-
double amt = check.getAmount();
65+
66+
double amt = 0.0;
67+
try {
68+
Method m = check.getClass().getMethod("getAmount");
69+
Object v = m.invoke(check);
70+
if (v instanceof Number) amt = ((Number) v).doubleValue();
71+
} catch (Exception e1) {
72+
try {
73+
Method m = check.getClass().getMethod("getValue");
74+
Object v = m.invoke(check);
75+
if (v instanceof Number) amt = ((Number) v).doubleValue();
76+
} catch (Exception e2) {
77+
amt = 0.0;
78+
}
79+
}
80+
6581
String note = check.getClass().getSimpleName();
6682
auditLog.record(accountNumber, amt, TransactionType.DEPOSIT_CHECK, note);
6783
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.codedifferently.lesson17.bank;
22

3+
import java.util.UUID;
4+
35
final class MoneyOrder extends Check {
46
public MoneyOrder(CheckingAccount source, double amount) {
5-
super(amount);
7+
super("MO-" + UUID.randomUUID(), amount, source);
68
source.withdraw(amount);
79
}
810
}

0 commit comments

Comments
 (0)