Skip to content

Commit d08f861

Browse files
committed
Clarify shaded SQL integration and merged HTTP transport boundaries
1 parent 50369b7 commit d08f861

1 file changed

Lines changed: 24 additions & 13 deletions

File tree

‎docs/shared-libraries.md‎

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,24 @@ coordinates.
3434

3535
**Do not package both representations of the same classes.** A native application
3636
uses the shared artifacts and never the full `simpleapi` artifact. A Bukkit
37-
application uses the full distribution. When a future AdvancedCore common module
38-
brings shared artifacts transitively into a Bukkit distribution, exclude those
39-
three dependencies from that edge and satisfy their classes from the aligned full
40-
SimpleAPI dependency. Keep versions aligned. Existing AdvancedCore/VotingPlugin
41-
builds do not need this exclusion today because they do not consume the new modules.
42-
43-
The thin SQL artifact intentionally uses unrelocated HikariCP. Existing full
44-
SimpleAPI shading remains unchanged. A native mod packager must package its actual
45-
runtime dependency graph using the target loader's supported mechanism.
37+
application retains the full distribution. Future AdvancedCore common-module
38+
integration must choose one representation of each SimpleAPI class in the final
39+
Bukkit JAR, keep versions aligned, and verify the final shaded artifact's linkage.
40+
Existing AdvancedCore/VotingPlugin builds do not consume the new thin modules and
41+
need no dependency changes in this PR.
42+
43+
The thin SQL artifact intentionally uses unrelocated HikariCP, whereas the full
44+
SimpleAPI distribution already relocates HikariCP. Some existing SQL public
45+
signatures expose Hikari types. Therefore excluding the thin dependencies in favor
46+
of the full JAR is not sufficient by itself for common code compiled against those
47+
signatures: the final Bukkit packaging must relocate the common callers and the
48+
provided SQL implementations consistently. Prefer JDBC/JDK types at new shared
49+
boundaries and add a final packaged Bukkit linkage test when making that consumer
50+
change. This PR does not claim that future mixed packaging is already validated.
51+
52+
A native mod packager must include its actual runtime dependency graph using the
53+
target loader's supported mechanism. No changes to existing full-JAR shading are
54+
made here.
4655

4756
## Native configuration example
4857

@@ -149,8 +158,8 @@ Source staging is checked byte-for-byte against the one maintained implementatio
149158
The same workflow installs the exact candidate in an isolated Maven repository,
150159
builds pinned AdvancedCore and VotingPlugin fixtures, verifies their dependency
151160
classpath paths and checks that installed candidate JAR hashes were not replaced.
152-
It never merges, publishes releases, contacts production, or submits a dependency
153-
graph on a pull request. Update the fixture SHAs deliberately when testing newer
161+
It never merges, publishes releases, modifies production services, or submits a
162+
dependency graph on a pull request. Update the fixture SHAs deliberately when testing newer
154163
consumer source. SQL tests here cover configuration/linkage, not a live database
155164
matrix. Live Minecraft/Folia/Forge/Fabric smoke tests remain application-level work.
156165

@@ -163,5 +172,7 @@ player, messaging, item, inventory and mixed `ArrayUtils` APIs remain untouched;
163172
their game operations belong behind adapters during that extraction. Do not replace
164173
entity-aware scheduling with a generic global-thread executor.
165174

166-
The active HTTP transport PR #73 is deliberately independent. It is not copied or
167-
reworked here. Its final shared packaging can be added after that transport lands.
175+
The separate HTTP transport work from PR #73 is not copied or reworked here. It
176+
merged into main while this change was being validated; the PR merge-ref build
177+
tests compatibility with it. Packaging that transport as a thin native dependency
178+
is a separate follow-up, not part of these configuration/data/SQL artifacts.

0 commit comments

Comments
 (0)