Skip to content

Standard adapters#3

Merged
GliczDev merged 20 commits into
mainfrom
feat/standard-adapters
Jul 4, 2026
Merged

Standard adapters#3
GliczDev merged 20 commits into
mainfrom
feat/standard-adapters

Conversation

@GliczDev

Copy link
Copy Markdown
Member

No description provided.

@github-actions

github-actions Bot commented Jun 28, 2026

Copy link
Copy Markdown

Test Results

0 tests  ±0   0 ✅ ±0   0s ⏱️ ±0s
0 suites ±0   0 💤 ±0 
0 files   ±0   0 ❌ ±0 

Results for commit 159b725. ± Comparison against base commit 545a80e.

♻️ This comment has been updated with latest results.

@GliczDev
GliczDev requested a review from Copilot July 4, 2026 13:44
@GliczDev
GliczDev marked this pull request as ready for review July 4, 2026 13:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the TypeAdapter/KeyAdapter APIs to be “self-describing” (adapters expose their own TypeRef via type()) and introduces a broad set of standard adapters (scalar, temporal, optional, atomic, array), plus format-bridge updates (Gson/Configurate/BSON) to use the new API surface.

Changes:

  • Reworks adapter interfaces/factories: removes passing TypeRef into read/write, adds type(), and updates factory composition/predicate creation.
  • Adds “standard adapters” (scalar, temporal, optional, atomic, array) and updates TypeAdapters.DEFAULT composition accordingly.
  • Updates Gson/Configurate/BSON integration wrappers/providers to match the new adapter contracts and nullability behavior.

Reviewed changes

Copilot reviewed 118 out of 118 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
format/gson/src/main/java/net/roxymc/jserialize/format/gson/WrappedTypeAdapter.java Updates Gson wrapper to call new TypeAdapter.read/write signatures.
format/gson/src/main/java/net/roxymc/jserialize/format/gson/WrappedGsonTypeAdapter.java Stores TypeRef internally and implements new type() contract.
format/gson/src/main/java/net/roxymc/jserialize/format/gson/TypeAdapterProvider.java Updates provider to construct WrappedTypeAdapter without passing TypeRef.
format/gson/src/main/java/net/roxymc/jserialize/format/gson/GsonUtils.java Updates MapLike bridge to use new adapter method signatures.
format/gson/src/main/java/net/roxymc/jserialize/format/gson/GsonTypeAdapters.java Adapts Gson-backed TypeAdapters implementation to new factory API.
format/configurate/src/main/java/net/roxymc/jserialize/format/configurate/WrappedTypeSerializer.java Stores TypeRef internally and implements new type() contract.
format/configurate/src/main/java/net/roxymc/jserialize/format/configurate/TypeAdapterProvider.java Updates Configurate serializer/provider calls to new adapter method signatures.
format/configurate/src/main/java/net/roxymc/jserialize/format/configurate/ConfigurateUtils.java Updates MapLike bridge to use new adapter method signatures.
format/configurate/src/main/java/net/roxymc/jserialize/format/configurate/ConfigurateTypeAdapters.java Adapts Configurate-backed TypeAdapters implementation to new factory API.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/WrappedTypeAdapter.java Updates BSON wrapper codec to call new adapter method signatures.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/WrappedCodec.java Stores TypeRef internally and implements new type() contract.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/BsonUtils.java Updates MapLike bridge to use new adapter method signatures.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/BsonTypeAdapters.java Adapts BSON-backed TypeAdapters implementation to new factory API and nullability.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/adapter/package-info.java Adds @NullMarked for BSON adapter package.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/adapter/BsonTypeAdapters.java Introduces default BSON adapters registry composition.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/adapter/scalar/package-info.java Adds @NullMarked for BSON scalar adapters package.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/adapter/scalar/BsonUUIDAdapter.java Adds BSON UUID adapter with configurable representation.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/adapter/temporal/package-info.java Adds @NullMarked for BSON temporal adapters package.
format/bson/src/main/java/net/roxymc/jserialize/format/bson/adapter/temporal/BsonInstantAdapter.java Adds BSON Instant adapter using BSON datetime token.
core/src/main/java/net/roxymc/jserialize/util/TypeUtils.java Replaces primitive checks with enum/type-resolution utilities (type param resolution, direct-type resolution).
core/src/main/java/net/roxymc/jserialize/util/ObjectUtils.java Adds nonNull overload for arrays (validates elements).
core/src/main/java/net/roxymc/jserialize/type/TypeRef.java Canonicalizes annotated types and makes raw type eagerly computed/final.
core/src/main/java/net/roxymc/jserialize/model/resolver/SimplePropertiesResolver.java Widens INSTANCE type to interface for API flexibility.
core/src/main/java/net/roxymc/jserialize/model/resolver/SimpleConstructorResolver.java Widens INSTANCE type to interface for API flexibility.
core/src/main/java/net/roxymc/jserialize/model/ClassModelFactoryImpl.java Uses Class::isPrimitive directly for primitive rejection.
core/src/main/java/net/roxymc/jserialize/adapter/WriteContext.java Adds convenience write(...) overloads that resolve adapters internally.
core/src/main/java/net/roxymc/jserialize/adapter/TypeWriter.java Updates writer contract to remove TypeRef parameter.
core/src/main/java/net/roxymc/jserialize/adapter/TypeReader.java Updates reader contract to remove TypeRef parameter.
core/src/main/java/net/roxymc/jserialize/adapter/ReadContext.java Adds convenience read(...) overloads that resolve adapters internally.
core/src/main/java/net/roxymc/jserialize/adapter/TypeAdaptersImpl.java Refactors registry construction and adds explicit create/createKey iteration methods.
core/src/main/java/net/roxymc/jserialize/adapter/TypeAdapters.java Makes TypeAdapters implement both factory interfaces and expands DEFAULT composition.
core/src/main/java/net/roxymc/jserialize/adapter/TypeAdapter.java Refactors adapter and factory APIs (new type(), typed factories, composite factories).
core/src/main/java/net/roxymc/jserialize/adapter/KeyAdapter.java Refactors key adapter and factory APIs (new type(), typed factories, composite factories).
core/src/main/java/net/roxymc/jserialize/adapter/PredicateTypeAdapterFactory.java Updates predicate factory to build adapters via typed factory instead of fixed instance.
core/src/main/java/net/roxymc/jserialize/adapter/PredicateKeyAdapterFactory.java Updates predicate factory to build key adapters via typed factory instead of fixed instance.
core/src/main/java/net/roxymc/jserialize/adapter/CompositeTypeAdapterFactory.java Adds composite TypeAdapter.Factory implementation.
core/src/main/java/net/roxymc/jserialize/adapter/CompositeKeyAdapterFactory.java Adds composite KeyAdapter.Factory implementation.
core/src/main/java/net/roxymc/jserialize/adapter/AbstractKeyAdapter.java Adds base key adapter implementation with common encode/decode behavior.
core/src/main/java/net/roxymc/jserialize/adapter/object/PropertyTypes.java Adds resolved property type caching for object adapter read/write paths.
core/src/main/java/net/roxymc/jserialize/adapter/object/ObjectWriter.java Refactors object writing to use cached property types and WriteContext.write(...).
core/src/main/java/net/roxymc/jserialize/adapter/object/ObjectReader.java Refactors object reading to use cached property types and updated mutable adapter contract.
core/src/main/java/net/roxymc/jserialize/adapter/object/ObjectAdapter.java Refactors object adapter to be type-bound and implement new type() and mutation behavior.
core/src/main/java/net/roxymc/jserialize/adapter/map/MapType.java Refactors map type resolution to use TypeUtils.resolveTypeParams.
core/src/main/java/net/roxymc/jserialize/adapter/map/MapAdapter.java Refactors map adapter to be type-bound and use new key/type read/write contracts.
core/src/main/java/net/roxymc/jserialize/adapter/map/DefaultMapProvider.java Widens INSTANCE type to interface for API flexibility.
core/src/main/java/net/roxymc/jserialize/adapter/collection/CollectionType.java Refactors collection type resolution to use TypeUtils.resolveTypeParams.
core/src/main/java/net/roxymc/jserialize/adapter/collection/CollectionAdapter.java Refactors collection adapter to be type-bound and use new read/write contracts.
core/src/main/java/net/roxymc/jserialize/adapter/collection/DefaultCollectionProvider.java Widens INSTANCE type to interface for API flexibility.
core/src/main/java/net/roxymc/jserialize/adapter/array/package-info.java Adds @NullMarked for array adapter package.
core/src/main/java/net/roxymc/jserialize/adapter/array/ArrayAdapter.java Adds generic array adapter and registers it in defaults.
core/src/main/java/net/roxymc/jserialize/adapter/atomic/package-info.java Adds @NullMarked for atomic adapter package.
core/src/main/java/net/roxymc/jserialize/adapter/atomic/AbstractAtomicAdapter.java Introduces shared atomic adapter mutation/write logic.
core/src/main/java/net/roxymc/jserialize/adapter/atomic/AtomicAdapters.java Adds composite factory for atomic adapters.
core/src/main/java/net/roxymc/jserialize/adapter/atomic/AtomicBooleanAdapter.java Adds AtomicBoolean adapter.
core/src/main/java/net/roxymc/jserialize/adapter/atomic/AtomicIntegerAdapter.java Adds AtomicInteger adapter.
core/src/main/java/net/roxymc/jserialize/adapter/atomic/AtomicLongAdapter.java Adds AtomicLong adapter.
core/src/main/java/net/roxymc/jserialize/adapter/atomic/AtomicReferenceAdapter.java Adds AtomicReference adapter with resolved type parameters.
core/src/main/java/net/roxymc/jserialize/adapter/optional/package-info.java Adds @NullMarked for optional adapter package.
core/src/main/java/net/roxymc/jserialize/adapter/optional/AbstractOptionalAdapter.java Introduces shared optional adapter logic and type-parameter resolution.
core/src/main/java/net/roxymc/jserialize/adapter/optional/OptionalAdapter.java Adds Optional adapter.
core/src/main/java/net/roxymc/jserialize/adapter/optional/OptionalDoubleAdapter.java Adds OptionalDouble adapter.
core/src/main/java/net/roxymc/jserialize/adapter/optional/OptionalIntAdapter.java Adds OptionalInt adapter.
core/src/main/java/net/roxymc/jserialize/adapter/optional/OptionalLongAdapter.java Adds OptionalLong adapter.
core/src/main/java/net/roxymc/jserialize/adapter/optional/OptionalAdapters.java Adds composite factory for optional adapters.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/AbstractNumberAdapter.java Introduces shared numeric parsing/overflow logic for scalar numbers.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/ScalarAdapters.java Adds composite factory for scalar value adapters.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/ScalarKeyAdapters.java Refactors scalar key adapters to composite factories and expands coverage.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/EnumKeyAdapter.java Refactors enum key adapter to AbstractKeyAdapter and predicate factory.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/EnumAdapter.java Adds enum value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/StringAdapter.java Adds string value adapter with numeric-to-string support.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/StringKeyAdapter.java Adds string key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/BooleanAdapter.java Adds boolean value adapter (boxed + primitive handling).
core/src/main/java/net/roxymc/jserialize/adapter/scalar/BooleanKeyAdapter.java Adds boolean key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/ByteAdapter.java Adds byte value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/ByteKeyAdapter.java Adds byte key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/CharacterAdapter.java Adds char/Character value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/CharacterKeyAdapter.java Adds character key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/DoubleAdapter.java Adds double/Double value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/DoubleKeyAdapter.java Adds double key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/FloatAdapter.java Adds float/Float value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/FloatKeyAdapter.java Adds float key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/IntegerAdapter.java Adds int/Integer value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/IntegerKeyAdapter.java Adds integer key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/LongAdapter.java Adds long/Long value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/LongKeyAdapter.java Adds long key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/ShortAdapter.java Adds short/Short value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/ShortKeyAdapter.java Adds short key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/NumberAdapter.java Adds general Number adapter with BigInteger/BigDecimal fallback.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/NumberKeyAdapter.java Adds number key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/PathAdapter.java Adds Path value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/PathKeyAdapter.java Adds Path key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/FileAdapter.java Adds File value adapter using Path adapter via contexts.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/FileKeyAdapter.java Adds File key adapter using Path key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/URIAdapter.java Adds URI value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/URIKeyAdapter.java Adds URI key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/URLAdapter.java Adds URL value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/URLKeyAdapter.java Adds URL key adapter with validation.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/UUIDAdapter.java Adds UUID value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/scalar/UUIDKeyAdapter.java Adds UUID key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/package-info.java Adds @NullMarked for temporal adapters package.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/AbstractTemporalAdapter.java Adds shared temporal value adapter logic (string-based encoding).
core/src/main/java/net/roxymc/jserialize/adapter/temporal/AbstractTemporalKeyAdapter.java Adds shared temporal key adapter logic.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/TemporalAdapters.java Adds composite factory for temporal value adapters.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/TemporalKeyAdapters.java Adds composite factory for temporal key adapters.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/DateAdapter.java Adds Date value adapter via Instant.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/DateKeyAdapter.java Adds Date key adapter via Instant key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/InstantAdapter.java Adds Instant value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/InstantKeyAdapter.java Adds Instant key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/LocalDateAdapter.java Adds LocalDate value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/LocalDateKeyAdapter.java Adds LocalDate key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/LocalTimeAdapter.java Adds LocalTime value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/LocalTimeKeyAdapter.java Adds LocalTime key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/LocalDateTimeAdapter.java Adds LocalDateTime value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/LocalDateTimeKeyAdapter.java Adds LocalDateTime key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/OffsetDateTimeAdapter.java Adds OffsetDateTime value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/OffsetDateTimeKeyAdapter.java Adds OffsetDateTime key adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/ZonedDateTimeAdapter.java Adds ZonedDateTime value adapter.
core/src/main/java/net/roxymc/jserialize/adapter/temporal/ZonedDateTimeKeyAdapter.java Adds ZonedDateTime key adapter.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread core/src/main/java/net/roxymc/jserialize/adapter/TypeAdaptersImpl.java Outdated
Comment thread core/src/main/java/net/roxymc/jserialize/adapter/TypeAdaptersImpl.java Outdated
Comment thread core/src/main/java/net/roxymc/jserialize/adapter/TypeAdapters.java Outdated
Comment thread core/src/main/java/net/roxymc/jserialize/adapter/TypeAdapters.java Outdated
Comment thread format/gson/src/main/java/net/roxymc/jserialize/format/gson/GsonTypeAdapters.java Outdated
Comment thread format/bson/src/main/java/net/roxymc/jserialize/format/bson/BsonTypeAdapters.java Outdated
Comment thread core/src/main/java/net/roxymc/jserialize/adapter/array/ArrayAdapter.java Outdated
Comment thread core/src/main/java/net/roxymc/jserialize/adapter/CompositeTypeAdapterFactory.java Outdated
Comment thread core/src/main/java/net/roxymc/jserialize/adapter/CompositeKeyAdapterFactory.java Outdated
@GliczDev
GliczDev force-pushed the feat/standard-adapters branch from 7a41e38 to b900a00 Compare July 4, 2026 13:55
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@GliczDev
GliczDev merged commit 5a4bb61 into main Jul 4, 2026
3 checks 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.

2 participants