From 001f6444fec8fcd5312028cfdae90f4f93424559 Mon Sep 17 00:00:00 2001 From: Kostya Date: Fri, 14 Aug 2026 20:32:49 +0000 Subject: Collapse console I/O interfaces into InputProcessor, drop unneeded atomics InputProvider/OutputProvider each had one implementation and no test exercised the seam, so fold Console{Input,Output}Provider straight into InputProcessor and update Menu/MenuCommand call sites accordingly. Account and Event both use AtomicInteger for a ledger/trade id counter that's only ever touched next to a plain, non-thread-safe ArrayList add in the same method - the atomic bought no real thread-safety. Swapped both to plain int with ++. --- service/src/main/java/market/guess/service/domain/Account.java | 6 ++---- service/src/main/java/market/guess/service/domain/Event.java | 5 ++--- service/src/main/java/market/guess/service/domain/Trade.java | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) (limited to 'service/src/main/java/market') diff --git a/service/src/main/java/market/guess/service/domain/Account.java b/service/src/main/java/market/guess/service/domain/Account.java index 7e24cdb..d1a1841 100644 --- a/service/src/main/java/market/guess/service/domain/Account.java +++ b/service/src/main/java/market/guess/service/domain/Account.java @@ -4,7 +4,6 @@ import java.math.BigDecimal; import java.time.Clock; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; import market.guess.api.LedgerType; public final class Account { @@ -12,7 +11,7 @@ public final class Account { private final Clock clock; private final List entries = new ArrayList<>(); private BigDecimal balance; - private AtomicInteger runningId = new AtomicInteger(); + private int runningId; public Account(String owner, BigDecimal initialBalance) { this(owner, initialBalance, Clock.systemUTC()); @@ -44,7 +43,6 @@ public final class Account { } private void record(LedgerType type, BigDecimal amount, String note) { - entries.add( - new LedgerEntry(runningId.incrementAndGet(), clock.instant(), type, amount, balance, note)); + entries.add(new LedgerEntry(++runningId, clock.instant(), type, amount, balance, note)); } } diff --git a/service/src/main/java/market/guess/service/domain/Event.java b/service/src/main/java/market/guess/service/domain/Event.java index cef0840..8f7e11d 100644 --- a/service/src/main/java/market/guess/service/domain/Event.java +++ b/service/src/main/java/market/guess/service/domain/Event.java @@ -4,7 +4,6 @@ import java.math.BigDecimal; import java.time.Instant; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; import market.guess.api.CommissionTiming; import market.guess.api.EventStatus; import market.guess.api.EventSummaryDTO; @@ -22,7 +21,7 @@ public final class Event { private final Account account; private final String marketMaker; - private final AtomicInteger runningId = new AtomicInteger(); + private int runningId; private final List trades = new ArrayList<>(); private EventStatus status; private String winningOptionKey; @@ -125,7 +124,7 @@ public final class Event { BigDecimal commission) { var trade = new Trade( - runningId.incrementAndGet(), + ++runningId, time, user, option.getKey(), diff --git a/service/src/main/java/market/guess/service/domain/Trade.java b/service/src/main/java/market/guess/service/domain/Trade.java index 0c07749..1211280 100644 --- a/service/src/main/java/market/guess/service/domain/Trade.java +++ b/service/src/main/java/market/guess/service/domain/Trade.java @@ -9,7 +9,7 @@ public record Trade( String userName, String optionKey, String optionName, - int uantity, + int quantity, BigDecimal sharesCost, BigDecimal commission) { -- cgit v1.2.3