# JAVA SDK **Part of:** craftlabs-authorization-sdk **Build:** Maven multi-module (JDK 17+) ## STRUCTURE ``` java/ ├── craftlabs-auth-core/ # Core auth: config parsing, internal logic ├── craftlabs-auth-bitanswer/ # Bitanswer cloud licensing provider ├── craftlabs-auth-selfhosted/ # Self-hosted licensing provider ├── craftlabs-auth-tests/ # Integration tests ├── pom.xml # Parent aggregator POM └── RELEASING.md # Release checklist & GPG signing guide ``` ## WHERE TO LOOK | Task | Location | Notes | |------|----------|-------| | Config model / schema | `craftlabs-auth-core/src/main/java/cn/craftlabs/auth/config/` | 9 files, config POJOs | | Internal engine | `craftlabs-auth-core/src/main/java/cn/craftlabs/auth/internal/` | 3 files, core logic | | Bitanswer provider | `craftlabs-auth-bitanswer/` | Single class, wraps bitanswer API | | Selfhosted provider | `craftlabs-auth-selfhosted/` | Single class, local validation | | Tests | `craftlabs-auth-tests/` | Config test cases | | Release scripts | `scripts/sdk-release-checksums.sh` | SHA256 + GPG | ## CONVENTIONS - **Package**: `cn.craftlabs.auth.*` (SDK) — distinct from `cn.craftlabs.platform.*` (backend) - **No Spring Boot**: SDK modules are plain Java, no framework dependency - **JNA bridge**: Java calls Rust native via JNA (not JNI) - **Maven**: Parent POM at `java/pom.xml` aggregates sub-modules ## ANTI-PATTERNS - **Do not** add Spring Boot / platform dependencies to SDK modules (keep plain Java) - **Do not** put bitanswer/selfhosted specific logic into core module