[weaver-pojo-serde-extension] Implement auto serde for POJO weaving

This commit is contained in:
2025-06-28 23:30:14 +02:00
parent 4fc8cb4ac7
commit 25faea92d8
19 changed files with 909 additions and 128 deletions

View File

@@ -96,6 +96,9 @@ public interface ReadWriteExtension extends TweedExtension {
};
}
<T, C extends ConfigEntry<T>> @Nullable TweedEntryReader<T, C> getDefinedEntryReader(ConfigEntry<T> entry);
<T, C extends ConfigEntry<T>> @Nullable TweedEntryWriter<T, C> getDefinedEntryWriter(ConfigEntry<T> entry);
<T, C extends ConfigEntry<T>> void setEntryReaderWriter(
ConfigEntry<T> entry,
TweedEntryReader<T, C> entryReader,

View File

@@ -18,7 +18,6 @@ import de.siphalor.tweed5.patchwork.api.PatchworkFactory;
import de.siphalor.tweed5.patchwork.api.PatchworkPartAccess;
import lombok.Data;
import lombok.val;
import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;
import java.util.Collection;
@@ -78,6 +77,26 @@ public class ReadWriteExtensionImpl implements ReadWriteExtension {
entryWriterMiddlewareContainer.seal();
}
@Override
public @Nullable <T, C extends ConfigEntry<T>> TweedEntryReader<T, C> getDefinedEntryReader(ConfigEntry<T> entry) {
CustomEntryData customEntryData = entry.extensionsData().get(customEntryDataAccess);
if (customEntryData == null) {
return null;
}
//noinspection unchecked
return (TweedEntryReader<T, C>) customEntryData.readerDefinition();
}
@Override
public @Nullable <T, C extends ConfigEntry<T>> TweedEntryWriter<T, C> getDefinedEntryWriter(ConfigEntry<T> entry) {
CustomEntryData customEntryData = entry.extensionsData().get(customEntryDataAccess);
if (customEntryData == null) {
return null;
}
//noinspection unchecked
return (TweedEntryWriter<T, C>) customEntryData.writerDefinition();
}
@Override
public <T, C extends ConfigEntry<T>> void setEntryReaderWriter(
ConfigEntry<T> entry,