|
| 1 | +# CLAUDE.md |
| 2 | + |
| 3 | +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. |
| 4 | + |
| 5 | +## Project Role |
| 6 | + |
| 7 | +`multiapps-controller` is the core Multi-Target Application (MTA) deployment service for Cloud Foundry. It orchestrates complex multi-app deployments via BPMN-modeled Flowable 7 workflows that drive calls to the CF Cloud Controller API. It depends on the `multiapps` library (`org.cloudfoundry.multiapps`) for MTA model objects and YAML parsing. |
| 8 | + |
| 9 | +## Security Boundary |
| 10 | + |
| 11 | +This is an **OPEN SOURCE** repository. Never introduce proprietary logic, credentials, or internal company context into this codebase. |
| 12 | + |
| 13 | +## Tech Stack |
| 14 | + |
| 15 | +- **Java 25**, multi-module Maven (11 modules), Spring 6 / Spring Security 6, deployed as a WAR |
| 16 | +- **Flowable 7** for BPMN process orchestration (deploy, undeploy, blue-green deploy workflows) |
| 17 | +- **EclipseLink 4** (JPA) with static weaving via `staticweave-maven-plugin` at compile time |
| 18 | +- **Liquibase** for DB schema migrations; **HikariCP** for connection pooling |
| 19 | +- **Immutables** for generated value objects — IDE annotation processors must be enabled |
| 20 | +- Cloud object store integrations: AWS S3, Azure Blob, GCP, Alibaba OSS (via Apache jclouds + native SDKs) |
| 21 | +- **JaCoCo** + **SonarCloud** for coverage/quality (profiles: `coverage`, `sonar`) |
| 22 | + |
| 23 | +## Module Map |
| 24 | + |
| 25 | +| Module | Purpose | |
| 26 | +|---|---| |
| 27 | +| `multiapps-controller-api` | Swagger-generated REST API models and endpoint interfaces | |
| 28 | +| `multiapps-controller-web` | REST controllers; builds the deployable WAR | |
| 29 | +| `multiapps-controller-process` | Flowable BPMN definitions and step implementations | |
| 30 | +| `multiapps-controller-core` | Domain model, CF client wrappers, core services | |
| 31 | +| `multiapps-controller-persistence` | File artifact storage (DB + object store) | |
| 32 | +| `multiapps-controller-client` | Extends cf-java-client with OAuth, retries, extra models | |
| 33 | +| `multiapps-controller-database-migration` | Tooling to migrate data between DB instances | |
| 34 | +| `multiapps-controller-shutdown-client` | Client for the graceful shutdown API | |
| 35 | +| `multiapps-controller-core-test` | Shared test fixtures for core | |
| 36 | +| `multiapps-controller-persistence-test` | Shared test fixtures for persistence | |
| 37 | +| `multiapps-controller-coverage` | Aggregates JaCoCo reports across all modules | |
| 38 | + |
| 39 | +## Build & Test Commands |
| 40 | + |
| 41 | +```bash |
| 42 | +# Full build (compiles, runs unit tests, packages WAR) |
| 43 | +mvn clean install |
| 44 | + |
| 45 | +# Skip tests for faster packaging |
| 46 | +mvn clean install -DskipTests |
| 47 | + |
| 48 | +# Run unit tests only (integration tests excluded by surefire config) |
| 49 | +mvn clean test |
| 50 | + |
| 51 | +# Run a single test class |
| 52 | +mvn test -pl multiapps-controller-process -Dtest=MyStepTest |
| 53 | + |
| 54 | +# Build a specific module and its dependencies |
| 55 | +mvn clean install -pl multiapps-controller-web --also-make |
| 56 | + |
| 57 | +# Coverage report (aggregate in multiapps-controller-coverage/target/) |
| 58 | +mvn clean install -P coverage |
| 59 | + |
| 60 | +# Sonar analysis |
| 61 | +mvn verify sonar:sonar -P sonar |
| 62 | +``` |
| 63 | + |
| 64 | +The deployable WAR is at `multiapps-controller-web/target/multiapps-controller-web-<version>.war`. |
| 65 | + |
| 66 | +Integration tests (`**/*IntegrationTest`) are excluded from the default surefire run. |
| 67 | + |
| 68 | +## Formatting Rule |
| 69 | + |
| 70 | +Before completing any task or committing code, you **MUST** run: |
| 71 | + |
| 72 | +```bash |
| 73 | +mvn spotless:apply |
| 74 | +``` |
0 commit comments