diff --git a/CHANGELOG.md b/CHANGELOG.md index cb3410a..6283f00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 that allows to get a subentry by its data key. - `serde-extension`: Introduce a more generic `ReaderWriter` for `MutableStructuredConfigEntry`s. - `weaver-pojo`: Make maps with string keys into their own weavable entry type. +- `weaver-pojo-serde-ext`: Such string map entries get serde using the `MutableStructuredConfigEntry` interface. ## [0.8.1] - 2026-04-26 diff --git a/tweed5/serde-extension/src/main/java/de/siphalor/tweed5/serde/extension/impl/DefaultTweedEntryReaderWriterImplsProvider.java b/tweed5/serde-extension/src/main/java/de/siphalor/tweed5/serde/extension/impl/DefaultTweedEntryReaderWriterImplsProvider.java index 14e944a..a1c2b17 100644 --- a/tweed5/serde-extension/src/main/java/de/siphalor/tweed5/serde/extension/impl/DefaultTweedEntryReaderWriterImplsProvider.java +++ b/tweed5/serde-extension/src/main/java/de/siphalor/tweed5/serde/extension/impl/DefaultTweedEntryReaderWriterImplsProvider.java @@ -51,6 +51,12 @@ public class DefaultTweedEntryReaderWriterImplsProvider implements TweedReaderWr )); context.registerReaderFactory("tweed5.collection", new StaticReaderWriterFactory<>(collectionReaderWriter())); context.registerWriterFactory("tweed5.collection", new StaticReaderWriterFactory<>(collectionReaderWriter())); + context.registerReaderFactory("tweed5.mutatableStruct", new StaticReaderWriterFactory<>( + mutableStructuredReaderWriter() + )); + context.registerWriterFactory("tweed5.mutatableStruct", new StaticReaderWriterFactory<>( + mutableStructuredReaderWriter() + )); context.registerReaderFactory("tweed5.compound", new StaticReaderWriterFactory<>(compoundReaderWriter())); context.registerWriterFactory("tweed5.compound", new StaticReaderWriterFactory<>(compoundReaderWriter())); } diff --git a/tweed5/weaver-pojo-serde-extension/src/main/java/de/siphalor/tweed5/weaver/pojoext/serde/api/auto/DefaultReadWriteMappings.java b/tweed5/weaver-pojo-serde-extension/src/main/java/de/siphalor/tweed5/weaver/pojoext/serde/api/auto/DefaultReadWriteMappings.java index ee70650..89375e0 100644 --- a/tweed5/weaver-pojo-serde-extension/src/main/java/de/siphalor/tweed5/weaver/pojoext/serde/api/auto/DefaultReadWriteMappings.java +++ b/tweed5/weaver-pojo-serde-extension/src/main/java/de/siphalor/tweed5/weaver/pojoext/serde/api/auto/DefaultReadWriteMappings.java @@ -3,12 +3,14 @@ package de.siphalor.tweed5.weaver.pojoext.serde.api.auto; import de.siphalor.tweed5.annotationinheritance.api.AnnotationInheritance; import de.siphalor.tweed5.core.api.entry.CollectionConfigEntry; import de.siphalor.tweed5.core.api.entry.CompoundConfigEntry; +import de.siphalor.tweed5.weaver.pojo.api.entry.WeavableStringMapConfigEntry; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.Collection; +import java.util.Map; @AnnotationInheritance(passOn = AutoReadWriteMapping.class) @AutoReadWriteMapping(valueClasses = {boolean.class, Boolean.class}, spec = "tweed5.bool") @@ -30,6 +32,11 @@ import java.util.Collection; valueClasses = Object.class, spec = "tweed5.compound" ) +@AutoReadWriteMapping( + entryClasses = WeavableStringMapConfigEntry.class, + valueClasses = Map.class, + spec = "tweed5.mutatableStruct" +) @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) public @interface DefaultReadWriteMappings {