# tebogomoremi/eks-transaction-service architecture

> Architecture diagram of the GitHub repository tebogomoremi/eks-transaction-service, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tebogomoremi/eks-transaction-service
- Repository: https://github.com/tebogomoremi/eks-transaction-service

## Overview

EKS Transaction Service accepts CASH_IN and CASH_OUT requests through REST or SOAP; SOAP adapts requests to the REST transaction endpoint so both paths share processing. The main flow validates input, evaluates Drools rules, retrieves weather through Camel, builds a typed transaction, and persists it with JPA. Correlation IDs accompany request processing, while exception mappers format REST errors. README documents AWS credential and deployment capabilities, but the supplied source does not show their runtime wiring; the graph focuses on evidenced application behavior and documented external stores.

Main entry points: [`src/main/java/com/tebogo/eks/service/TransactionService.java`](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/service/TransactionService.java) (Transaction service), [`src/main/java/com/tebogo/eks/api/TransactionResource.java`](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/api/TransactionResource.java) (REST transactions), [`src/main/java/com/tebogo/eks/soap/TransactionSoapServlet.java`](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/soap/TransactionSoapServlet.java) (SOAP servlet), [`src/main/java/com/tebogo/eks/soap/TransactionSoapServiceImpl.java`](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/soap/TransactionSoapServiceImpl.java) (SOAP adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["API interfaces"]
  node_rest["REST transactions"]
  node_health["Health check"]
  node_soap_servlet["SOAP servlet"]
  node_soap_impl["SOAP adapter"]
end

subgraph group_processing["Transaction processing"]
  node_context["Application wiring"]
  node_service["Transaction service"]
  node_validator["Request validation"]
  node_rules["Drools rules"]
  node_transaction["Transaction models"]
  node_repository["JPA repository"]
end

subgraph group_integrations["External integrations"]
  node_weather_client["Weather client<br/>[WeatherClient.java]"]
  node_weather_route["Camel weather route<br/>[WeatherRoute.java]"]
end

subgraph group_crosscutting["Request support"]
  node_correlation["Correlation filter"]
  node_logging["Business logging"]
  node_errors["REST error mapping"]
end

node_clients(("API clients"))
node_weather_api{{"Weather API"}}
node_database[("PostgreSQL database")]

node_clients -->|"submits REST"| node_rest
node_rest -->|"returns result"| node_clients
node_clients -->|"submits SOAP"| node_soap_servlet
node_soap_servlet -->|"dispatches"| node_soap_impl
node_soap_impl -->|"posts JSON"| node_rest
node_health -->|"returns status"| node_clients
node_rest -->|"uses request filter"| node_correlation
node_rest -->|"gets service"| node_context
node_context -->|"constructs"| node_service
node_service -->|"validates"| node_validator
node_service -->|"evaluates"| node_rules
node_service -->|"requests weather"| node_weather_client
node_weather_client -->|"sends query"| node_weather_route
node_weather_route -->|"calls"| node_weather_api
node_service -->|"builds"| node_transaction
node_service -->|"saves"| node_repository
node_repository -->|"persists"| node_database
node_service -->|"annotates operation"| node_logging
node_rest -->|"maps exceptions"| node_errors

click node_rest "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/api/TransactionResource.java"
click node_health "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/api/HealthResource.java"
click node_soap_servlet "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/soap/TransactionSoapServlet.java"
click node_soap_impl "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/soap/TransactionSoapServiceImpl.java"
click node_context "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/bootstrap/ApplicationContext.java"
click node_service "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/service/TransactionService.java"
click node_validator "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/validation/CompositeTransactionValidator.java"
click node_rules "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/rules/DroolsRuleService.java"
click node_transaction "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/model/PaymentTransaction.java"
click node_repository "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/persistence/TransactionRepository.java"
click node_weather_client "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/integration/WeatherClient.java"
click node_weather_route "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/integration/WeatherRoute.java"
click node_correlation "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/logging/CorrelationIdFilter.java"
click node_logging "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/logging/BusinessLoggingAspect.java"
click node_errors "https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/error/GlobalExceptionMapper.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_rest,node_health,node_soap_servlet,node_soap_impl,node_clients toneBlue
class node_context,node_service,node_validator,node_rules,node_transaction,node_repository,node_database toneAmber
class node_weather_client,node_weather_route,node_weather_api toneMint
class node_correlation,node_logging,node_errors toneRose
```

## Components

### API interfaces

- [REST transactions](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/api/TransactionResource.java): `src/main/java/com/tebogo/eks/api/TransactionResource.java`
- [Health check](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/api/HealthResource.java): `src/main/java/com/tebogo/eks/api/HealthResource.java`
- [SOAP servlet](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/soap/TransactionSoapServlet.java): `src/main/java/com/tebogo/eks/soap/TransactionSoapServlet.java`
- [SOAP adapter](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/soap/TransactionSoapServiceImpl.java): `src/main/java/com/tebogo/eks/soap/TransactionSoapServiceImpl.java`

### Transaction processing

- [Application wiring](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/bootstrap/ApplicationContext.java): `src/main/java/com/tebogo/eks/bootstrap/ApplicationContext.java`
- [Transaction service](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/service/TransactionService.java): `src/main/java/com/tebogo/eks/service/TransactionService.java`
- [Request validation](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/validation/CompositeTransactionValidator.java): `src/main/java/com/tebogo/eks/validation/CompositeTransactionValidator.java`
- [Drools rules](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/rules/DroolsRuleService.java): `src/main/java/com/tebogo/eks/rules/DroolsRuleService.java`
- [Transaction models](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/model/PaymentTransaction.java): `src/main/java/com/tebogo/eks/model/PaymentTransaction.java`
- [JPA repository](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/persistence/TransactionRepository.java): `src/main/java/com/tebogo/eks/persistence/TransactionRepository.java`

### External integrations

- [Weather client](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/integration/WeatherClient.java): `src/main/java/com/tebogo/eks/integration/WeatherClient.java`
- [Camel weather route](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/integration/WeatherRoute.java): `src/main/java/com/tebogo/eks/integration/WeatherRoute.java`

### Request support

- [Correlation filter](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/logging/CorrelationIdFilter.java): `src/main/java/com/tebogo/eks/logging/CorrelationIdFilter.java`
- [Business logging](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/logging/BusinessLoggingAspect.java): `src/main/java/com/tebogo/eks/logging/BusinessLoggingAspect.java`
- [REST error mapping](https://github.com/tebogomoremi/eks-transaction-service/blob/main/src/main/java/com/tebogo/eks/error/GlobalExceptionMapper.java): `src/main/java/com/tebogo/eks/error/GlobalExceptionMapper.java`

### Other components

- **API clients**
- **Weather API**
- **PostgreSQL database**

## Connections

- API clients → REST transactions: submits REST
- REST transactions → API clients: returns result
- API clients → SOAP servlet: submits SOAP
- SOAP servlet → SOAP adapter: dispatches
- SOAP adapter → REST transactions: posts JSON
- Health check → API clients: returns status
- REST transactions → Correlation filter: uses request filter
- REST transactions → Application wiring: gets service
- Application wiring → Transaction service: constructs
- Transaction service → Request validation: validates
- Transaction service → Drools rules: evaluates
- Transaction service → Weather client: requests weather
- Weather client → Camel weather route: sends query
- Camel weather route → Weather API: calls
- Transaction service → Transaction models: builds
- Transaction service → JPA repository: saves
- JPA repository → PostgreSQL database: persists
- Transaction service → Business logging: annotates operation
- REST transactions → REST error mapping: maps exceptions
