# vinodivy/mygcd architecture

> Architecture diagram of the GitHub repository vinodivy/mygcd, 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/vinodivy/mygcd
- Repository: https://github.com/vinodivy/mygcd

## Overview

MyGCD accepts number pairs through REST, records them, and enqueues them; SOAP processing consumes queued pairs, computes their GCDs, and stores results for list and sum queries. REST also lists submitted inputs, while session control limits concurrent users. The sampled source supports the REST service/DAO and SOAP service/DAO interactions; the SOAP endpoint-to-service link follows the documented API structure, and the queue is documented as ActiveMQ-backed.

Main entry points: [`gcdrest/src/main/java/com/gcd/service/NumberServiceImpl.java`](https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/service/NumberServiceImpl.java) (Number Service), [`gcdsoap/src/main/java/com/gcd/soap/service/Gcdservice.java`](https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/service/Gcdservice.java) (GCD Service), [`gcdsoap/src/main/java/com/gcd/soap/dao/GCDDao.java`](https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/dao/GCDDao.java) (GCD DAO), [`gcdrest/src/main/java/com/gcd/controller/NumberController.java`](https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/controller/NumberController.java) (Number Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_rest["REST API"]
  node_number_controller["Number Controller"]
  node_number_service["Number Service"]
  node_number_dao["Input DAO<br/>[NumberDao.java]"]
  node_input_model["Input Number<br/>[InputNumber.java]"]
end

subgraph group_sessions["Session Control"]
  node_session_controller["Session Controller"]
end

subgraph group_messaging["Queue Processing"]
  node_message_sender["Message Sender<br/>[MessageSender.java]"]
  node_message_consumer["Message Consumer"]
  node_gcd_queue["GCD Queue"]
end

subgraph group_soap["SOAP API and Results"]
  node_soap_endpoint["SOAP Endpoint<br/>[GCDEndpoint.java]"]
  node_gcd_service["GCD Service<br/>[Gcdservice.java]"]
  node_gcd_dao["GCD DAO<br/>[GCDDao.java]"]
  node_gcd_model["GCD Result<br/>[GCD.java]"]
end

node_rest_client(("REST Client"))
node_soap_client(("SOAP Client"))
node_mysql[("MySQL")]

node_rest_client -->|"calls REST"| node_number_controller
node_number_controller -->|"invokes"| node_number_service
node_number_service -->|"checks session"| node_session_controller
node_number_service -->|"reads and writes"| node_number_dao
node_number_dao -->|"persists inputs"| node_mysql
node_number_service -->|"sends pair"| node_message_sender
node_message_sender -->|"enqueues"| node_gcd_queue
node_soap_client -->|"calls SOAP"| node_soap_endpoint
node_soap_endpoint -->|"dispatches"| node_gcd_service
node_gcd_service -->|"requests pair"| node_message_consumer
node_message_consumer -->|"consumes"| node_gcd_queue
node_gcd_service -->|"stores result"| node_gcd_dao
node_gcd_dao -->|"persists results"| node_mysql
node_gcd_service -->|"fetches results"| node_gcd_dao

click node_number_controller "https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/controller/NumberController.java"
click node_number_service "https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/service/NumberServiceImpl.java"
click node_number_dao "https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/dao/NumberDao.java"
click node_input_model "https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/bean/InputNumber.java"
click node_session_controller "https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/util/SessionController.java"
click node_message_sender "https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/messaging/MessageSender.java"
click node_message_consumer "https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/messaging/MessageConsumer.java"
click node_soap_endpoint "https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/endpoint/GCDEndpoint.java"
click node_gcd_service "https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/service/Gcdservice.java"
click node_gcd_dao "https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/dao/GCDDao.java"
click node_gcd_model "https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/bean/GCD.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_number_controller,node_number_service,node_number_dao,node_input_model,node_rest_client,node_soap_client toneBlue
class node_session_controller,node_mysql toneAmber
class node_message_sender,node_message_consumer,node_gcd_queue toneMint
class node_soap_endpoint,node_gcd_service,node_gcd_dao,node_gcd_model toneRose
```

## Components

### REST API

- [Number Controller](https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/controller/NumberController.java): `gcdrest/src/main/java/com/gcd/controller/NumberController.java`
- [Number Service](https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/service/NumberServiceImpl.java): `gcdrest/src/main/java/com/gcd/service/NumberServiceImpl.java`
- [Input DAO](https://github.com/vinodivy/mygcd/blob/master/gcdrest/src/main/java/com/gcd/dao/NumberDao.java): `gcdrest/src/main/java/com/gcd/dao/NumberDao.java`
- [Input Number](https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/bean/InputNumber.java): `commons/src/main/java/com/gcd/common/bean/InputNumber.java`

### Session Control

- [Session Controller](https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/util/SessionController.java): `commons/src/main/java/com/gcd/common/util/SessionController.java`

### Queue Processing

- [Message Sender](https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/messaging/MessageSender.java): `commons/src/main/java/com/gcd/common/messaging/MessageSender.java`
- [Message Consumer](https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/messaging/MessageConsumer.java): `commons/src/main/java/com/gcd/common/messaging/MessageConsumer.java`
- **GCD Queue**

### SOAP API and Results

- [SOAP Endpoint](https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/endpoint/GCDEndpoint.java): `gcdsoap/src/main/java/com/gcd/soap/endpoint/GCDEndpoint.java`
- [GCD Service](https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/service/Gcdservice.java): `gcdsoap/src/main/java/com/gcd/soap/service/Gcdservice.java`
- [GCD DAO](https://github.com/vinodivy/mygcd/blob/master/gcdsoap/src/main/java/com/gcd/soap/dao/GCDDao.java): `gcdsoap/src/main/java/com/gcd/soap/dao/GCDDao.java`
- [GCD Result](https://github.com/vinodivy/mygcd/blob/master/commons/src/main/java/com/gcd/common/bean/GCD.java): `commons/src/main/java/com/gcd/common/bean/GCD.java`

### Other components

- **REST Client**
- **SOAP Client**
- **MySQL**

## Connections

- REST Client → Number Controller: calls REST
- Number Controller → Number Service: invokes
- Number Service → Session Controller: checks session
- Number Service → Input DAO: reads and writes
- Input DAO → MySQL: persists inputs
- Number Service → Message Sender: sends pair
- Message Sender → GCD Queue: enqueues
- SOAP Client → SOAP Endpoint: calls SOAP
- SOAP Endpoint → GCD Service: dispatches
- GCD Service → Message Consumer: requests pair
- Message Consumer → GCD Queue: consumes
- GCD Service → GCD DAO: stores result
- GCD DAO → MySQL: persists results
- GCD Service → GCD DAO: fetches results
