Skip to content

[PHEE-366][PHEE-369] Add BOM + connector-common as multi-module core (Java 21 / SB 3.4 / Jakarta) - #1

Merged
tdaly61 merged 4 commits into
openMF:devfrom
GiulioRinalduzzi:feat/add-bom-and-core
Jul 23, 2026
Merged

tdaly61 merged 4 commits into
openMF:devfrom
GiulioRinalduzzi:feat/add-bom-and-core

Conversation

@GiulioRinalduzzi

@GiulioRinalduzzi GiulioRinalduzzi commented Jul 17, 2026 •

Copy link
Copy Markdown
Contributor

As agreed: the BOM (from ph-ee-start-here PR #27) and the migrated connector-common combined into this repo as one multi-module build, publishing two artifacts with one version line.

What's inside

├── settings.gradle        →  'bom', 'core', 'bom:bom-verification'
├── gradle.properties      →  coordinates in ONE place: org.mifos : paymenthub-ee-bom / paymenthub-ee-core : 2.0.0-SNAPSHOT
├── bom/                   →  the Payment Hub BOM (java-platform), content identical to ph-ee-start-here PR #27
│   └── bom-verification/  →  resolves all 237 managed artifacts, fails if any javax.* remains
└── core/                  →  connector-common from the Java 21 / SB 3.4 / Jakarta migration branch
  • core consumes the BOM internally via platform(project(':bom')) — still platform(), not enforcedPlatform, so no constraints leak into the published metadata (checked in the published .module: the BOM appears as a regular platform dependency, 0 inlined constraints).
  • Consumers keep the same model as today, only the names change: enforcedPlatform('org.mifos:paymenthub-ee-bom:2.0.0-SNAPSHOT') + implementation 'org.mifos:paymenthub-ee-core:2.0.0-SNAPSHOT'.
  • Publish target: Mifos JFrog phee-gradle-local, credentials read at publish time from MIFOS_ARTIFACTORY_USER / MIFOS_ARTIFACTORY_TOKEN env vars — nothing stored in the repo.
  • Your root scaffold (README, LICENSE, CONTRIBUTING, .gitignore, .github, .editorconfig) is untouched.

Notes for review

  • Test layer reconciled: the migration branch of connector-common didn't actually run its JUnit 5 tests (missing useJUnitPlatform(); the smoke test lived on the parallel chore/tests branch, which in turn lacked the newer JWSFilterStrategy defaults fix). This tree merges the two: main sources from the migration branch, test enablement + MultiReadHttpServletRequestTest from chore/tests. With this PR the two old branches don't need reconciling upstream anymore.
  • Coordinates live in gradle.properties — if you want different artifact names, it's a 2-line change.
  • Small heads-up: the repo README currently says "MifosX ActionHub KMP" — looks like a template leftover, happy to propose content for it in a follow-up.

Tickets: PHEE-366 (connector-common), PHEE-369 (BOM).

@GiulioRinalduzzi
GiulioRinalduzzi requested a review from a team July 17, 2026 10:43
Comment thread bom/build.gradle Resolved
Comment thread gradle/wrapper/gradle-wrapper.jar Resolved
@GiulioRinalduzzi
GiulioRinalduzzi force-pushed the feat/add-bom-and-core branch 2 times, most recently from 404d07c to 1bf0d69 Compare July 21, 2026 10:20
Two modules published from one repo, one version line (2.0.0-SNAPSHOT):

- bom/: the Payment Hub BOM (java-platform) from ph-ee-start-here PR #27,
  unchanged in content (48 dependencyManagement entries, pins Spring Boot 3.4 /
  Camel 4 / Zeebe 8.4.17 / Jakarta EE 10), plus its bom-verification module
  (resolves all 237 artifacts and fails if any javax.* remains).
- core/: the connector-common shared library from the Java 21 / Spring Boot 3.4
  / Jakarta migration branch (source identical: 182 classes, byte-for-byte the
  same jar as the migrated ph-ee-connector-common). It now consumes the BOM
  internally via platform(project(':bom')) - still platform(), not
  enforcedPlatform, so no constraints leak into the published metadata.
- Maven coordinates are parameterized in gradle.properties:
  org.mifos:paymenthub-ee-bom and org.mifos:paymenthub-ee-core.
- Test layer reconciled: the migration branch of connector-common did not run
  its JUnit 5 tests (missing useJUnitPlatform, the smoke test lived on the
  parallel chore/tests branch); this tree merges the two - main sources from
  the migration branch (includes the JWSFilterStrategy defaults fix), test
  enablement and MultiReadHttpServletRequestTest from chore/tests.
- Publishing target: Mifos JFrog (phee-gradle-local), credentials read at
  publish time from MIFOS_ARTIFACTORY_USER/TOKEN env vars - nothing stored in
  the repo.
- Root scaffold (README, LICENSE, CONTRIBUTING, .gitignore, .github,
  .editorconfig) untouched.

Verified locally end-to-end before this PR: full build green on JDK 21 (tests
+ verifyBom), jar parity with the migrated connector-common (182 = 182
classes), both artifacts published to a local Artifactory sandbox, and two
real connectors (mock-payment-schema, mpesa) rebuilt against the new
coordinates and cold-start tested (Started, JWS interceptor classes present,
zero javax.* on the runtime classpath).
GiulioRinalduzzi and others added 3 commits July 21, 2026 23:56
- remove mavenLocal() from all three modules (reproducibility: the Tier 0
  build must resolve the same way in CI and on any machine, not from ~/.m2)
- bom/build.gradle CRLF -> LF (the other modules and core's spotless are LF)
- core: drop redundant apply plugin: java/eclipse/checkstyle (already in the
  plugins {} block; idea stays), replace the leftover 'Gradle init task' header

Validated: :core:compileJava + :bom:bom-verification:verifyBom green
(237 artifacts resolved, javax purity check passed) with JDK 21, no mavenLocal.
@tdaly61
tdaly61 self-requested a review July 23, 2026 04:46
@tdaly61
tdaly61 merged commit eb94a86 into openMF:dev Jul 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants