-
Notifications
You must be signed in to change notification settings - Fork 0
Project Layout
Petrus Pradella edited this page Jun 28, 2026
·
6 revisions
Single-module Gradle project; base package br.com.finalcraft.everyconfig.
EveryConfig/
├── build.gradle # java-library + maven-publish; Java 25 toolchain, Jabel -> Java 8 floor
├── gradle/libs.versions.toml # version catalog (single source of truth for versions)
├── gradle.properties # auto-download off; Gradle auto-detects local JDKs
└── src/
├── main/java/br/com/finalcraft/everyconfig/
│ ├── ECVersion.java # version marker (mirrors the Gradle version)
│ ├── config/ # Config (dynamic API + lifecycle), LoadStatus, ConfigIOException
│ │ └── section/ # ConfigSection (scoped path view)
│ ├── core/
│ │ ├── KeyOrder.java # captured key order, consulted on save
│ │ ├── tree/ # DPath, PathOptions (dotted-path utilities; DPath avoids java.nio.file.Path)
│ │ ├── coerce/ # NodeCoercion (the Java <-> Jackson seam)
│ │ └── comment/ # CommentTree, CommentType (the comment overlay)
│ ├── codec/ # Codec SPI, CommentFidelity, CommentAware, ObjectMapperAware,
│ │ │ # CodecRegistry, CodecException, ECMapperProfiles
│ │ └── jackson/ # JsonCodec, YamlCodec, TomlCodec, JsoncCodec
│ ├── io/ # Backend, AtomicFileBackStore, FilePollWatcher, ConfigExecutor
│ ├── binding/ # EntityBinder, BindOptions, BindException, LoadIssue, LoadIssueAware
│ │ ├── schema/ # Schema, SchemaCache, ClosedSchema, BindingNames
│ │ ├── merge/ # SmartMerge, IdIndexer, LifecycleInvoker
│ │ └── introspect/ # EveryConfigAnnotationIntrospector, EveryConfigModule, EnumNameSerializer
│ └── annotation/ # @Key, @Comment, @Section, @Id, @PostLoad, KeyTransformCase, CommentMode
└── test/java/br/com/finalcraft/everyconfig/
├── config/
│ ├── data/ # shared DTOs for the contract suite (Dtos)
│ └── modules/ # AbstractConfigTest + json/ yaml/ toml/ jsonc/ subclasses
├── codec/ binding/ io/ # per-feature unit tests
-
configis the public handle; it usescore,codecandio, and offersbindingas a derived view. -
coreis dependency-free model code (the tree, coercion, comments, key order). -
codecknows the formats;codec.jacksonholds the four concrete codecs. -
iois file I/O only (no format knowledge). -
bindingis split by concern: the public API inbinding, the schema model inbinding.schema, the merge +@Idlogic inbinding.merge, and the Jackson bridge inbinding.introspect.
→ See also Architecture Overview
EveryConfig · br.com.finalcraft:EveryConfig · One config API, every format, comments included · made by Petrus Pradella
Getting Started
Core Concepts
Typed Binding
Operations
Reference
Contributing