refactor(pojo-weaver): Move Tweed extension declarations in Weaving to own, inheritable, annotations
This commit is contained in:
@@ -4,10 +4,7 @@ import de.siphalor.tweed5.attributesextension.api.AttributesExtension;
|
||||
import de.siphalor.tweed5.core.api.container.ConfigContainer;
|
||||
import de.siphalor.tweed5.core.api.entry.CompoundConfigEntry;
|
||||
import de.siphalor.tweed5.core.api.entry.ConfigEntry;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.DefaultWeavingExtensions;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.*;
|
||||
import de.siphalor.tweed5.weaver.pojo.impl.weaving.TweedPojoWeaverBootstrapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -69,7 +66,8 @@ class AttributesPojoWeavingProcessorTest {
|
||||
);
|
||||
}
|
||||
|
||||
@PojoWeaving(extensions = AttributesExtension.class)
|
||||
@PojoWeaving
|
||||
@TweedExtension(AttributesExtension.class)
|
||||
@DefaultWeavingExtensions
|
||||
@PojoWeavingExtension(AttributesPojoWeavingProcessor.class)
|
||||
@CompoundWeaving
|
||||
|
||||
@@ -9,10 +9,7 @@ import de.siphalor.tweed5.data.hjson.HjsonReader;
|
||||
import de.siphalor.tweed5.data.hjson.HjsonWriter;
|
||||
import de.siphalor.tweed5.dataapi.api.TweedDataVisitor;
|
||||
import de.siphalor.tweed5.dataapi.api.TweedDataWriteException;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.DefaultWeavingExtensions;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.*;
|
||||
import de.siphalor.tweed5.weaver.pojo.impl.weaving.TweedPojoWeaverBootstrapper;
|
||||
import lombok.*;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
@@ -79,7 +76,8 @@ class ReadWritePojoWeavingProcessorTest {
|
||||
}
|
||||
}
|
||||
|
||||
@PojoWeaving(extensions = ReadWriteExtension.class)
|
||||
@PojoWeaving
|
||||
@TweedExtension(ReadWriteExtension.class)
|
||||
@DefaultWeavingExtensions
|
||||
@PojoWeavingExtension(ReadWritePojoWeavingProcessor.class)
|
||||
@CompoundWeaving
|
||||
|
||||
@@ -9,10 +9,7 @@ import de.siphalor.tweed5.data.extension.api.ReadWriteExtension;
|
||||
import de.siphalor.tweed5.data.extension.api.readwrite.TweedEntryReaderWriter;
|
||||
import de.siphalor.tweed5.data.extension.impl.TweedEntryReaderWriterImpls;
|
||||
import de.siphalor.tweed5.data.hjson.HjsonWriter;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.DefaultWeavingExtensions;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.*;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.NullablePojoWeaver;
|
||||
import de.siphalor.tweed5.weaver.pojo.impl.weaving.TweedPojoWeaverBootstrapper;
|
||||
import lombok.Data;
|
||||
@@ -122,7 +119,8 @@ class AutoReadWritePojoWeavingProcessorTest {
|
||||
""");
|
||||
}
|
||||
|
||||
@PojoWeaving(extensions = ReadWriteExtension.class)
|
||||
@PojoWeaving
|
||||
@TweedExtension(ReadWriteExtension.class)
|
||||
@PojoWeavingExtension(NullablePojoWeaver.class)
|
||||
@DefaultWeavingExtensions
|
||||
@PojoWeavingExtension(AutoReadWritePojoWeavingProcessor.class)
|
||||
|
||||
@@ -8,10 +8,7 @@ import de.siphalor.tweed5.data.extension.api.TweedEntryWriteException;
|
||||
import de.siphalor.tweed5.data.extension.impl.TweedEntryReaderWriterImpls;
|
||||
import de.siphalor.tweed5.data.hjson.HjsonWriter;
|
||||
import de.siphalor.tweed5.defaultextensions.pather.api.PatherExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.DefaultWeavingExtensions;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.*;
|
||||
import de.siphalor.tweed5.weaver.pojo.impl.weaving.TweedPojoWeaverBootstrapper;
|
||||
import de.siphalor.tweed5.weaver.pojoext.serde.api.ReadWritePojoWeavingProcessor;
|
||||
import de.siphalor.tweed5.weaver.pojoext.serde.api.auto.AutoReadWritePojoWeavingProcessor;
|
||||
@@ -144,7 +141,9 @@ class AutoNullableReadWritePojoWeavingProcessorTest {
|
||||
.hasMessageContaining("at .boxedInteger");
|
||||
}
|
||||
|
||||
@PojoWeaving(extensions = {ReadWriteExtension.class, PatherExtension.class})
|
||||
@PojoWeaving
|
||||
@TweedExtension(ReadWriteExtension.class)
|
||||
@TweedExtension(PatherExtension.class)
|
||||
@DefaultWeavingExtensions
|
||||
@PojoWeavingExtension(AutoReadWritePojoWeavingProcessor.class)
|
||||
@PojoWeavingExtension(ReadWritePojoWeavingProcessor.class)
|
||||
|
||||
@@ -3,10 +3,7 @@ package de.siphalor.tweed5.weaver.pojoext.validation.api;
|
||||
import de.siphalor.tweed5.core.api.container.ConfigContainer;
|
||||
import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension;
|
||||
import de.siphalor.tweed5.defaultextensions.validation.api.result.ValidationIssues;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.DefaultWeavingExtensions;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.*;
|
||||
import de.siphalor.tweed5.weaver.pojo.impl.weaving.TweedPojoWeaverBootstrapper;
|
||||
import de.siphalor.tweed5.weaver.pojoext.validation.api.validators.WeavableNumberRangeValidator;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -36,7 +33,8 @@ class ValidatorsPojoWeavingProcessorTest {
|
||||
}
|
||||
}
|
||||
|
||||
@PojoWeaving(extensions = {ValidationExtension.class})
|
||||
@PojoWeaving
|
||||
@TweedExtension(ValidationExtension.class)
|
||||
@DefaultWeavingExtensions
|
||||
@PojoWeavingExtension(ValidatorsPojoWeavingProcessor.class)
|
||||
@CompoundWeaving
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
package de.siphalor.tweed5.weaver.pojo.api.annotation;
|
||||
|
||||
import de.siphalor.tweed5.core.api.container.ConfigContainer;
|
||||
import de.siphalor.tweed5.core.api.extension.TweedExtension;
|
||||
import de.siphalor.tweed5.core.impl.DefaultConfigContainer;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.CompoundPojoWeaver;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.TrivialPojoWeaver;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.TweedPojoWeavingExtension;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -16,6 +12,4 @@ import java.lang.annotation.Target;
|
||||
@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
|
||||
public @interface PojoWeaving {
|
||||
Class<? extends ConfigContainer> container() default DefaultConfigContainer.class;
|
||||
|
||||
Class<? extends TweedExtension>[] extensions() default {};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package de.siphalor.tweed5.weaver.pojo.api.annotation;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
|
||||
@Repeatable(TweedExtensions.class)
|
||||
public @interface TweedExtension {
|
||||
Class<? extends de.siphalor.tweed5.core.api.extension.TweedExtension> value();
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package de.siphalor.tweed5.weaver.pojo.api.annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
|
||||
public @interface TweedExtensions {
|
||||
TweedExtension[] value();
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import de.siphalor.tweed5.patchwork.api.PatchworkFactory;
|
||||
import de.siphalor.tweed5.typeutils.api.type.ActualType;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.TweedExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.ProtoWeavingContext;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.TweedPojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.WeavingContext;
|
||||
@@ -61,7 +62,11 @@ public class TweedPojoWeaverBootstrapper<T> {
|
||||
configContainer
|
||||
= (ConfigContainer<T>) createConfigContainer((Class<? extends ConfigContainer<?>>) rootWeavingConfig.container());
|
||||
|
||||
configContainer.registerExtensions(rootWeavingConfig.extensions());
|
||||
TweedExtension[] tweedExtensions = pojoAnnotations.getAnnotationsByType(TweedExtension.class);
|
||||
//noinspection unchecked
|
||||
configContainer.registerExtensions(
|
||||
Arrays.stream(tweedExtensions).map(TweedExtension::value).toArray(Class[]::new)
|
||||
);
|
||||
configContainer.finishExtensionSetup();
|
||||
|
||||
Collection<TweedPojoWeavingExtension> extensions = loadWeavingExtensions(
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
package de.siphalor.tweed5.weaver.pojo.impl.weaving;
|
||||
|
||||
import de.siphalor.tweed5.core.api.container.ConfigContainer;
|
||||
import de.siphalor.tweed5.core.api.extension.TweedExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.CompoundWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.DefaultWeavingExtensions;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeaving;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.PojoWeavingExtension;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.annotation.*;
|
||||
import de.siphalor.tweed5.weaver.pojo.api.weaving.CollectionPojoWeaver;
|
||||
import lombok.Data;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -56,14 +52,15 @@ class TweedPojoWeaverBootstrapperTest {
|
||||
));
|
||||
}
|
||||
|
||||
public static class DummyExtension implements TweedExtension {
|
||||
public static class DummyExtension implements de.siphalor.tweed5.core.api.extension.TweedExtension {
|
||||
@Override
|
||||
public String getId() {
|
||||
return "dummy";
|
||||
}
|
||||
}
|
||||
|
||||
@PojoWeaving(extensions = {DummyExtension.class})
|
||||
@PojoWeaving
|
||||
@TweedExtension(DummyExtension.class)
|
||||
@DefaultWeavingExtensions
|
||||
@CompoundWeaving(namingFormat = "camel_case")
|
||||
@Data
|
||||
|
||||
Reference in New Issue
Block a user