Skip to content

Extract platform-neutral configuration binding with Bukkit compatibility - #75

Merged
BenCodez merged 1 commit into
mainfrom
codex/simpleapi-config-view-foundation
Sep 7, 2026
Merged

BenCodez merged 1 commit into
mainfrom
codex/simpleapi-config-view-foundation

Conversation

@BenCodez

@BenCodez BenCodez commented Sep 7, 2026 •

Copy link
Copy Markdown
Owner

Summary

First, deliberately narrow step toward reusing SimpleAPI/AdvancedCore/VotingPlugin on Fabric, Forge and NeoForge without maintaining separate configuration logic.

  • Add the platform-neutral, read-only ConfigView contract.
  • Move the existing annotation-binding body into AnnotationBinder, preserving ordering, defaults, alternate paths, list fallback, duration parsing and per-field exception isolation.
  • Keep the existing public AnnotationHandler() and load(ConfigurationSection, Object) signatures. The Bukkit facade delegates through a live BukkitConfigView; native section identity/mutability is retained for both ConfigurationSection and Object fields.
  • Do not add a load(ConfigView, ...) overload to the old class, avoiding ambiguity for existing load(null, target) calls.
  • Add 16 Bukkit compatibility characterization tests plus one isolated-classloader headless test and its fixture.

Compatibility / scope

  • No changes to Maven coordinates, versions, dependencies, shading, source layout, CI, publishing, schedulers, SQL, messaging or configuration persistence.
  • Existing annotations stay in their original packages. No AdvancedCore or VotingPlugin changes are included.
  • Preserve the historical zero-default long-field reflection behavior rather than mixing a behavior fix into this extraction.
  • This is not yet a separately published simpleapi-core artifact or a loader implementation. Production Configurate adapters and physical module separation follow after this boundary is validated.
  • Independent of open HTTP transport PR Add secure HTTP server communication transport #73; no transport changes are included.

Verified GitHub Actions build

Java CI with Maven — run 179 passed on JDK 21.

  • Command: mvn -B -f SimpleAPI/pom.xml package
  • 185 tests run, 0 failures, 0 errors, 0 skipped.
  • Includes all 16 new Bukkit compatibility tests and the new headless test.
  • The log confirms creation of SimpleAPI/target/SimpleAPI.jar, successful shading and BUILD SUCCESS.
  • Reviewed job log: build job 101866019948.
  • Candidate head: fe70bd562283081ddaece09a0e16c9d651610150.
  • CI tested merge ref 9ec5f3522786b6fc3bedb54ad24cd04abfddc320, merging that candidate into base c4a37e5774dfbbf146ff6db20d19ac65310e4a8c.

Additional checks

  • Confirmed the retrieved baseline AnnotationHandler.java matches upstream Git blob 66591d8fa68bdfde47790c99f8c76748b91261ef byte-for-byte.
  • Mechanically compared the complete moved binding method: only configuration types and the native-section projection boundary differ.
  • git diff --cached --check — passed on the proposed files.
  • Standalone ConfigView compilation with javac --release 21 — passed locally.
  • Verified the published binder and compatibility-test blob hashes match the locally inspected files.
  • Same-context static inspection completed; no independent reviewer execution is claimed.

Remaining validation before merge

The editing environment has Java 21 but no Maven or network access for build dependencies. The full SimpleAPI build and test results above are from GitHub Actions, not a local Maven build.

AdvancedCore and VotingPlugin have not yet been built against the candidate SimpleAPI artifact, and no live server smoke test has been performed. Keep this PR draft until those downstream compatibility checks are complete. Install the candidate into an isolated Maven repository and ensure downstream builds actually resolve that exact candidate rather than a mutable remote snapshot.

AI disclosure: This implementation and pull-request description were prepared with assistance from ChatGPT.

Move the existing binding rules behind ConfigView and retain AnnotationHandler
as a Bukkit-compatible facade. Add legacy behavior characterization and an
isolated headless fixture without changing dependencies or artifact layout.
@BenCodez
BenCodez marked this pull request as ready for review September 7, 2026 22:16
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-07T22:20:31.265017Z fe70bd5 Draft marked ready
🔒 Security Review ✅ Completed 2026-09-07T22:21:24.770479Z fe70bd5 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@BenCodez
BenCodez merged commit fdec696 into main Sep 7, 2026
4 checks passed
@BenCodez
BenCodez deleted the codex/simpleapi-config-view-foundation branch September 7, 2026 22:24
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.

1 participant