How dongiveajack/service-framework works
Service Framework is a reusable Spring foundation for downstream microservices, not a standalone service. Its main workflow is authenticated REST CRUD/search through shared controllers and services into tenant-aware persistence; separate capabilities provide Realm-backed identity, audit history, notifications, CMS GraphQL/SNS, and standardized REST/gRPC errors. Relationships below are limited to visible source references and README-described behavior; unsampled configuration and subsystem internals are not asserted.
Main entry points: CmsService.java CMS workflows · BaseService.java CRUD service · BaseController.java CRUD controller · AuditLogService.java Audit history
Components 25
REST API
- CRUD controller
src/main/java/org/trips/service_framework/controllers/BaseController.java - CMS endpoints
src/main/java/org/trips/service_framework/controllers/CmsController.java - REST errors
src/main/java/org/trips/service_framework/exceptions/handlers/RestExceptionHandler.java
CRUD and Search
- CRUD service
src/main/java/org/trips/service_framework/services/BaseService.java - Search engine
src/main/java/org/trips/service_framework/utils/SearchHelper.java - Entity model
src/main/java/org/trips/service_framework/models/entities/BaseEntity.java - Base repository
src/main/java/org/trips/service_framework/models/repositories/BaseRepository.java - Tenant routing
src/main/java/org/trips/service_framework/utils/RoutingDataSource.java
Identity and Audit
- Auth aspect
src/main/java/org/trips/service_framework/aop/aspects/AuthenticateAspect.java - Authentication
src/main/java/org/trips/service_framework/services/AuthService.java - Realm client
src/main/java/org/trips/service_framework/clients/RealmClient.java - Request context
src/main/java/org/trips/service_framework/utils/Context.java - Audit API
src/main/java/org/trips/service_framework/audit/controllers/AuditLogController.java - Audit history
src/main/java/org/trips/service_framework/audit/services/AuditLogService.java - JaVers audit store
src/main/java/org/trips/service_framework/audit/JaversDatasourceConfig.java
External Integrations
- Notification service
src/main/java/org/trips/service_framework/services/NotificationService.java - Handler factory
src/main/java/org/trips/service_framework/notificationHandler/NotificationHandlerFactory.java - Channel handlers
src/main/java/org/trips/service_framework/notificationHandler/NotificationHandler.java - Mercury client
src/main/java/org/trips/service_framework/clients/MercuryClient.java - CMS workflows
src/main/java/org/trips/service_framework/services/CmsService.java - SKU helper
src/main/java/org/trips/service_framework/helpers/CmsHelper.java - CMS GraphQL
src/main/java/org/trips/service_framework/utils/GraphQLUtils.java - SNS publisher
src/main/java/org/trips/service_framework/events/SnsEventPublisher.java
Other components
- Microservice caller
- External services
Connections 26
- Microservice caller → CRUD controller: calls endpoints
README.md - CRUD controller → CRUD service: delegates CRUD
src/main/java/org/trips/service_framework/controllers/BaseController.java - CRUD service → Base repository: reads and writes
src/main/java/org/trips/service_framework/services/BaseService.java - CRUD service → Search engine: builds paging
src/main/java/org/trips/service_framework/services/BaseService.java - CRUD service → Request context: reads user ID
src/main/java/org/trips/service_framework/services/BaseService.java - CRUD service → Entity model: operates on
src/main/java/org/trips/service_framework/services/BaseService.java - Microservice caller → CMS endpoints: calls endpoints
src/main/java/org/trips/service_framework/controllers/CmsController.java - CMS endpoints → CMS workflows: dispatches search
src/main/java/org/trips/service_framework/controllers/CmsController.java - CMS workflows → SKU helper: builds SKU queries
src/main/java/org/trips/service_framework/services/CmsService.java - CMS workflows → CMS GraphQL: uses GraphQL
src/main/java/org/trips/service_framework/services/CmsService.java - CMS workflows → SNS publisher: publishes SKU event
src/main/java/org/trips/service_framework/services/CmsService.java - CMS workflows → External services: queries CMS
src/main/java/org/trips/service_framework/services/CmsService.java - CMS workflows → External services: publishes events
src/main/java/org/trips/service_framework/services/CmsService.java - CRUD controller → Auth aspect: uses authentication
- Auth aspect → Authentication: authenticates
- Authentication → Realm client: verifies identity
src/main/java/org/trips/service_framework/services/AuthService.java - Realm client → External services: calls Realm
src/main/java/org/trips/service_framework/clients/RealmClient.java - Audit API → Audit history: requests history
src/main/java/org/trips/service_framework/audit/controllers/AuditLogController.java - Audit history → Authentication: loads authors
src/main/java/org/trips/service_framework/audit/services/AuditLogService.java - Audit history → JaVers audit store: queries changes
- Notification service → Handler factory: selects handler
src/main/java/org/trips/service_framework/services/NotificationService.java - Handler factory → Channel handlers: dispatches channel
- Channel handlers → Mercury client: sends notification
src/main/java/org/trips/service_framework/notificationHandler/WhatsappNotificationHandler.java - Mercury client → External services: calls Mercury
src/main/java/org/trips/service_framework/clients/MercuryClient.java - REST errors → Microservice caller: returns errors
src/main/java/org/trips/service_framework/exceptions/handlers/RestExceptionHandler.java - Tenant routing → Request context: selects tenant
src/main/java/org/trips/service_framework/utils/RoutingDataSource.java