# sap-samples/cloud-cap-samples-java architecture

> Architecture diagram of the GitHub repository sap-samples/cloud-cap-samples-java, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sap-samples/cloud-cap-samples-java
- Repository: https://github.com/sap-samples/cloud-cap-samples-java

## Overview

This is a CAP Java bookshop sample: shoppers browse books, inspect details, submit orders and reviews; administrators manage catalog data and orders. Fiori-oriented app modules cover book browsing, administration, orders, reviews, notes, addresses, and genre navigation. Backend event handlers add catalog and order logic, persist changes, and integrate address and notes data with a business-partner service. The README documents further capabilities such as authentication, drafts, messaging, and multitenancy; their implementation paths are not present in the supplied tree, so they are not mapped here.

Main entry points: [`srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java`](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java) (Admin service logic), [`srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java`](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java) (Catalog service logic), [`srv/src/main/java/my/bookshop/handlers/AdminServiceAddressHandler.java`](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceAddressHandler.java) (Address integration logic), [`srv/src/main/java/my/bookshop/handlers/NotesServiceHandler.java`](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/NotesServiceHandler.java) (Notes integration logic)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["User interfaces"]
  node_browse_ui["Browse books<br/>[app.js]"]
  node_admin_ui["Book administration<br/>[Component.js]"]
  node_upload_ui["Book CSV upload<br/>[Upload.js]"]
  node_orders_ui["Order management<br/>[Component.js]"]
  node_reviews_ui["Review management<br/>[Component.js]"]
  node_notes_ui["Notes<br/>[Component.js]"]
  node_addresses_ui["Addresses<br/>[Component.js]"]
  node_genres_ui["Genre browsing<br/>[Component.js]"]
end

subgraph group_services["CAP business logic"]
  node_catalog["Catalog service logic"]
  node_admin_logic["Admin service logic"]
  node_address_logic["Address integration logic"]
  node_notes_logic["Notes integration logic"]
  node_audit_logic["Order audit logic"]
  node_hierarchy_logic["Genre hierarchy logic"]
  node_review_service["Review service"]
end

subgraph group_state["Persistence"]
  node_bookshop_store[("Bookshop data")]
end

subgraph group_integrations["External integration"]
  node_business_partner["S/4 business partner"]
end

node_shopper(("Shopper"))
node_administrator(("Administrator"))

node_shopper -->|"uses"| node_browse_ui
node_administrator -->|"manages books"| node_admin_ui
node_administrator -->|"uploads CSV"| node_upload_ui
node_administrator -->|"manages orders"| node_orders_ui
node_shopper -->|"manages reviews"| node_reviews_ui
node_shopper -->|"uses"| node_notes_ui
node_shopper -->|"selects addresses"| node_addresses_ui
node_shopper -->|"browses genres"| node_genres_ui
node_browse_ui -->|"OData requests"| node_catalog
node_admin_ui -->|"admin requests"| node_admin_logic
node_upload_ui -->|"uploads data"| node_admin_logic
node_orders_ui -->|"order requests"| node_admin_logic
node_reviews_ui -->|"review requests"| node_review_service
node_notes_ui -->|"notes requests"| node_notes_logic
node_addresses_ui -->|"address requests"| node_address_logic
node_genres_ui -->|"hierarchy actions"| node_hierarchy_logic
node_catalog -->|"reads and updates"| node_bookshop_store
node_catalog -->|"creates reviews"| node_review_service
node_admin_logic -->|"reads and writes"| node_bookshop_store
node_address_logic -->|"reads and replicates"| node_business_partner
node_address_logic -->|"reads and writes replicas"| node_bookshop_store
node_notes_logic -->|"reads addresses"| node_business_partner
node_notes_logic -->|"reads notes"| node_bookshop_store
node_hierarchy_logic -->|"reads and updates"| node_bookshop_store
node_audit_logic -->|"reads orders"| node_bookshop_store

click node_browse_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/vue/app.js"
click node_admin_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/admin/webapp/Component.js"
click node_upload_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/admin/webapp/extension/Upload.js"
click node_orders_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/orders/webapp/Component.js"
click node_reviews_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/reviews/webapp/Component.js"
click node_notes_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/notes/webapp/Component.js"
click node_addresses_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/addresses/webapp/Component.js"
click node_genres_ui "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/browse-genres/webapp/Component.js"
click node_catalog "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java"
click node_admin_logic "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java"
click node_address_logic "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceAddressHandler.java"
click node_notes_logic "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/NotesServiceHandler.java"
click node_audit_logic "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceAuditHandler.java"
click node_hierarchy_logic "https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/HierarchySiblingActionHandler.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_browse_ui,node_admin_ui,node_upload_ui,node_orders_ui,node_reviews_ui,node_notes_ui,node_addresses_ui,node_genres_ui toneBlue
class node_catalog,node_admin_logic,node_address_logic,node_notes_logic,node_audit_logic,node_hierarchy_logic,node_review_service toneAmber
class node_bookshop_store toneMint
class node_business_partner toneRose
class node_shopper,node_administrator toneIndigo
```

## Components

### User interfaces

- [Browse books](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/vue/app.js): `app/vue/app.js`
- [Book administration](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/admin/webapp/Component.js): `app/admin/webapp/Component.js`
- [Book CSV upload](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/admin/webapp/extension/Upload.js): `app/admin/webapp/extension/Upload.js`
- [Order management](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/orders/webapp/Component.js): `app/orders/webapp/Component.js`
- [Review management](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/reviews/webapp/Component.js): `app/reviews/webapp/Component.js`
- [Notes](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/notes/webapp/Component.js): `app/notes/webapp/Component.js`
- [Addresses](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/addresses/webapp/Component.js): `app/addresses/webapp/Component.js`
- [Genre browsing](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/app/browse-genres/webapp/Component.js): `app/browse-genres/webapp/Component.js`

### CAP business logic

- [Catalog service logic](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java): `srv/src/main/java/my/bookshop/handlers/CatalogServiceHandler.java`
- [Admin service logic](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java): `srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java`
- [Address integration logic](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceAddressHandler.java): `srv/src/main/java/my/bookshop/handlers/AdminServiceAddressHandler.java`
- [Notes integration logic](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/NotesServiceHandler.java): `srv/src/main/java/my/bookshop/handlers/NotesServiceHandler.java`
- [Order audit logic](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/AdminServiceAuditHandler.java): `srv/src/main/java/my/bookshop/handlers/AdminServiceAuditHandler.java`
- [Genre hierarchy logic](https://github.com/sap-samples/cloud-cap-samples-java/blob/main/srv/src/main/java/my/bookshop/handlers/HierarchySiblingActionHandler.java): `srv/src/main/java/my/bookshop/handlers/HierarchySiblingActionHandler.java`
- **Review service**

### Persistence

- **Bookshop data**

### External integration

- **S/4 business partner**

### Other components

- **Shopper**
- **Administrator**

## Connections

- Shopper → Browse books: uses
- Administrator → Book administration: manages books
- Administrator → Book CSV upload: uploads CSV
- Administrator → Order management: manages orders
- Shopper → Review management: manages reviews
- Shopper → Notes: uses
- Shopper → Addresses: selects addresses
- Shopper → Genre browsing: browses genres
- Browse books → Catalog service logic: OData requests
- Book administration → Admin service logic: admin requests
- Book CSV upload → Admin service logic: uploads data
- Order management → Admin service logic: order requests
- Review management → Review service: review requests
- Notes → Notes integration logic: notes requests
- Addresses → Address integration logic: address requests
- Genre browsing → Genre hierarchy logic: hierarchy actions
- Catalog service logic → Bookshop data: reads and updates
- Catalog service logic → Review service: creates reviews
- Admin service logic → Bookshop data: reads and writes
- Address integration logic → S/4 business partner: reads and replicates
- Address integration logic → Bookshop data: reads and writes replicas
- Notes integration logic → S/4 business partner: reads addresses
- Notes integration logic → Bookshop data: reads notes
- Genre hierarchy logic → Bookshop data: reads and updates
- Order audit logic → Bookshop data: reads orders
