blob: 549991e0b1e352792781459d7546faccfbd139bd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
package market.guess.ui.desktop;
import java.time.Clock;
import market.guess.api.AccountContext;
import market.guess.api.CatalogContext;
import market.guess.api.GuessMarketContext;
import market.guess.service.LocalGuessMarketContext;
import market.guess.service.catalog.LocalCatalogContext;
import market.guess.service.catalog.infrastructure.MarketContext;
import market.guess.service.catalog.infrastructure.mapper.v2.EventMapperV2;
import market.guess.service.catalog.infrastructure.provider.Loader;
import market.guess.service.catalog.infrastructure.provider.v2.XMLLoaderV2;
import market.guess.service.catalog.infrastructure.provider.v2.XMLValidatorV2;
import market.guess.service.catalog.infrastructure.repository.EventRepository;
import market.guess.service.catalog.infrastructure.repository.InMemoryEventRepository;
import market.guess.service.catalog.infrastructure.repository.InMemoryUserRepository;
import market.guess.service.catalog.infrastructure.repository.UserRepository;
import market.guess.service.fulfillment.FulfillmentContext;
import market.guess.service.fulfillment.LocalFulfillmentContext;
import market.guess.service.ledger.LedgerContext;
import market.guess.service.ledger.LocalAccountContext;
import market.guess.service.matching.LocalMatchingEngine;
import market.guess.service.matching.MatchingEngine;
import market.guess.service.risk.LocalRiskEngine;
import market.guess.service.risk.RiskEngine;
import market.guess.service.settlement.LocalSettlementContext;
import market.guess.service.settlement.SettlementContext;
public final class ServiceEngine {
private final CatalogContext catalogContext;
private final GuessMarketContext marketContext;
private final AccountContext accountContext;
public ServiceEngine() {
this(Clock.systemUTC());
}
public ServiceEngine(Clock clock) {
EventRepository eventRepo = new InMemoryEventRepository();
UserRepository userRepo = new InMemoryUserRepository();
MarketContext marketContextInfrastructure = new MarketContext(eventRepo, userRepo);
EventMapperV2 mapper = new EventMapperV2();
XMLValidatorV2 validator = new XMLValidatorV2();
Loader loader = new XMLLoaderV2(eventRepo, userRepo, mapper, validator);
this.catalogContext = new LocalCatalogContext(loader, marketContextInfrastructure, eventRepo);
this.accountContext = new LocalAccountContext(userRepo);
LedgerContext ledgerContext = new LedgerContext(userRepo, clock);
RiskEngine risk = new LocalRiskEngine(eventRepo);
MatchingEngine matching = new LocalMatchingEngine(clock);
FulfillmentContext fulfillment = new LocalFulfillmentContext(ledgerContext);
SettlementContext settlement = new LocalSettlementContext(ledgerContext);
this.marketContext =
new LocalGuessMarketContext(
marketContextInfrastructure, risk, matching, fulfillment, settlement);
}
public CatalogContext getCatalogContext() {
return catalogContext;
}
public GuessMarketContext getMarketContext() {
return marketContext;
}
public AccountContext getAccountContext() {
return accountContext;
}
}
|