diff --git a/build.gradle.kts b/build.gradle.kts index f718cc5..2704cc5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,6 +25,9 @@ allprojects { testCompileOnly(lombok) testAnnotationProcessor(lombok) + compileOnly("com.google.auto.service:auto-service-annotations:${properties["auto_service.version"]}") + annotationProcessor("com.google.auto.service:auto-service:${properties["auto_service.version"]}") + implementation("org.jetbrains:annotations:${properties["jetbrains_annotations.version"]}") testImplementation(platform("org.junit:junit-bom:5.10.0")) diff --git a/gradle.properties b/gradle.properties index 5c168e0..553d356 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,4 @@ asm.version = 9.7 jetbrains_annotations.version = 24.1.0 -lombok.version = 1.18.32 \ No newline at end of file +lombok.version = 1.18.32 +auto_service.version = 1.1.1 \ No newline at end of file diff --git a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/api/CommentExtension.java b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/api/CommentExtension.java new file mode 100644 index 0000000..d4bd42c --- /dev/null +++ b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/api/CommentExtension.java @@ -0,0 +1,9 @@ +package de.siphalor.tweed5.defaultextensions.comment.api; + +import de.siphalor.tweed5.core.api.entry.ConfigEntry; +import de.siphalor.tweed5.core.api.extension.TweedExtension; +import org.jetbrains.annotations.Nullable; + +public interface CommentExtension extends TweedExtension { + @Nullable String getFullComment(ConfigEntry configEntry); +} diff --git a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtension.java b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionImpl.java similarity index 89% rename from tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtension.java rename to tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionImpl.java index aa90220..455a253 100644 --- a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtension.java +++ b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionImpl.java @@ -1,5 +1,6 @@ package de.siphalor.tweed5.defaultextensions.comment.impl; +import com.google.auto.service.AutoService; import de.siphalor.tweed5.core.api.entry.ConfigEntry; import de.siphalor.tweed5.core.api.extension.EntryExtensionsData; import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData; @@ -10,13 +11,15 @@ import de.siphalor.tweed5.core.api.middleware.Middleware; import de.siphalor.tweed5.data.extension.api.TweedEntryWriter; import de.siphalor.tweed5.data.extension.api.extension.ReadWriteRelatedExtension; import de.siphalor.tweed5.defaultextensions.comment.api.AComment; +import de.siphalor.tweed5.defaultextensions.comment.api.CommentExtension; import de.siphalor.tweed5.defaultextensions.comment.api.CommentProducer; import de.siphalor.tweed5.defaultextensions.comment.api.CommentModifyingExtension; import lombok.Getter; import lombok.Value; import org.jetbrains.annotations.Nullable; -public class CommentExtension implements TweedExtension, ReadWriteRelatedExtension { +@AutoService(CommentExtension.class) +public class CommentExtensionImpl implements ReadWriteRelatedExtension, CommentExtension { @Getter private RegisteredExtensionData internalEntryDataExtension; private DefaultMiddlewareContainer middlewareContainer; @@ -61,8 +64,9 @@ public class CommentExtension implements TweedExtension, ReadWriteRelatedExtensi internalEntryDataExtension.set(entryExtensionsData, new InternalCommentEntryDataImpl(middleware)); } + @Override @Nullable - String getComment(ConfigEntry configEntry) { + public String getFullComment(ConfigEntry configEntry) { String comment = ((InternalCommentEntryData) configEntry.extensionsData()).commentProducer().createComment(configEntry); return comment.isEmpty() ? null : comment; } diff --git a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/api/PatherExtension.java b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/api/PatherExtension.java new file mode 100644 index 0000000..382f808 --- /dev/null +++ b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/api/PatherExtension.java @@ -0,0 +1,6 @@ +package de.siphalor.tweed5.defaultextensions.pather.api; + +import de.siphalor.tweed5.core.api.extension.TweedExtension; + +public interface PatherExtension extends TweedExtension { +} diff --git a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/impl/PatherExtension.java b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/impl/PatherExtensionImpl.java similarity index 93% rename from tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/impl/PatherExtension.java rename to tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/impl/PatherExtensionImpl.java index 477631b..582e5c3 100644 --- a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/impl/PatherExtension.java +++ b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/pather/impl/PatherExtensionImpl.java @@ -1,5 +1,6 @@ package de.siphalor.tweed5.defaultextensions.pather.impl; +import com.google.auto.service.AutoService; import de.siphalor.tweed5.core.api.entry.ConfigEntry; import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData; import de.siphalor.tweed5.core.api.extension.TweedExtension; @@ -13,10 +14,12 @@ import de.siphalor.tweed5.dataapi.api.TweedDataVisitor; import de.siphalor.tweed5.defaultextensions.pather.api.PathTracking; import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingDataReader; import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingDataVisitor; +import de.siphalor.tweed5.defaultextensions.pather.api.PatherExtension; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class PatherExtension implements TweedExtension, ReadWriteRelatedExtension { +@AutoService(PatherExtension.class) +public class PatherExtensionImpl implements PatherExtension, TweedExtension, ReadWriteRelatedExtension { private static final String PATHER_ID = "pather"; private RegisteredExtensionData rwContextPathTrackingData; diff --git a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImpl.java b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImpl.java index fc3529a..e5f98a8 100644 --- a/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImpl.java +++ b/tweed5-default-extensions/src/main/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImpl.java @@ -1,5 +1,6 @@ package de.siphalor.tweed5.defaultextensions.validation.impl; +import com.google.auto.service.AutoService; import de.siphalor.tweed5.core.api.entry.ConfigEntry; import de.siphalor.tweed5.core.api.entry.ConfigEntryValueVisitor; import de.siphalor.tweed5.core.api.extension.EntryExtensionsData; @@ -21,7 +22,7 @@ import de.siphalor.tweed5.defaultextensions.comment.api.CommentProducer; import de.siphalor.tweed5.defaultextensions.pather.api.PathTracking; import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingConfigEntryValueVisitor; import de.siphalor.tweed5.defaultextensions.pather.api.PatherData; -import de.siphalor.tweed5.defaultextensions.pather.impl.PatherExtension; +import de.siphalor.tweed5.defaultextensions.pather.impl.PatherExtensionImpl; import de.siphalor.tweed5.defaultextensions.validation.api.ConfigEntryValidator; import de.siphalor.tweed5.defaultextensions.validation.api.EntrySpecificValidation; import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension; @@ -39,6 +40,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; +@AutoService(ValidationExtension.class) public class ValidationExtensionImpl implements ReadWriteRelatedExtension, ValidationExtension, CommentModifyingExtension { private static final ValidationResult PRIMITIVE_IS_NULL_RESULT = ValidationResult.withIssues( null, @@ -83,7 +85,7 @@ public class ValidationExtensionImpl implements ReadWriteRelatedExtension, Valid @Override public void setup(TweedExtensionSetupContext context) { - context.registerExtension(new PatherExtension()); + context.registerExtension(new PatherExtensionImpl()); validationEntryDataExtension = context.registerEntryExtensionData(InternalValidationEntryData.class); context.registerEntryExtensionData(EntrySpecificValidation.class); diff --git a/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionTest.java b/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionImplTest.java similarity index 92% rename from tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionTest.java rename to tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionImplTest.java index 35a513b..7fa7cbb 100644 --- a/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionTest.java +++ b/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/comment/impl/CommentExtensionImplTest.java @@ -17,6 +17,7 @@ import de.siphalor.tweed5.data.extension.impl.ReadWriteExtensionImpl; import de.siphalor.tweed5.data.hjson.HjsonCommentType; import de.siphalor.tweed5.data.hjson.HjsonWriter; import de.siphalor.tweed5.defaultextensions.comment.api.AComment; +import de.siphalor.tweed5.defaultextensions.comment.api.CommentExtension; import de.siphalor.tweed5.defaultextensions.comment.api.CommentProducer; import de.siphalor.tweed5.defaultextensions.comment.api.CommentModifyingExtension; import lombok.RequiredArgsConstructor; @@ -29,7 +30,7 @@ import java.util.*; import static org.junit.jupiter.api.Assertions.*; -class CommentExtensionTest { +class CommentExtensionImplTest { private DefaultConfigContainer> configContainer; private CommentExtension commentExtension; @@ -41,7 +42,7 @@ class CommentExtensionTest { void setupContainer(Collection extraExtensions) { configContainer = new DefaultConfigContainer<>(); - commentExtension = new CommentExtension(); + commentExtension = new CommentExtensionImpl(); configContainer.registerExtension(commentExtension); extraExtensions.forEach(configContainer::registerExtension); configContainer.finishExtensionSetup(); @@ -71,9 +72,9 @@ class CommentExtensionTest { setupContainer(Collections.emptyList()); configContainer.initialize(); - assertEquals("It is an integer", commentExtension.getComment(intEntry)); - assertEquals("It is a string", commentExtension.getComment(stringEntry)); - assertNull(commentExtension.getComment(noCommentEntry)); + assertEquals("It is an integer", commentExtension.getFullComment(intEntry)); + assertEquals("It is a string", commentExtension.getFullComment(stringEntry)); + assertNull(commentExtension.getFullComment(noCommentEntry)); } @Test @@ -81,9 +82,9 @@ class CommentExtensionTest { setupContainer(Collections.singletonList(new TestCommentModifyingExtension())); configContainer.initialize(); - assertEquals("The comment is:\nIt is an integer\nEND", commentExtension.getComment(intEntry)); - assertEquals("The comment is:\nIt is a string\nEND", commentExtension.getComment(stringEntry)); - assertEquals("The comment is:\n\nEND", commentExtension.getComment(noCommentEntry)); + assertEquals("The comment is:\nIt is an integer\nEND", commentExtension.getFullComment(intEntry)); + assertEquals("The comment is:\nIt is a string\nEND", commentExtension.getFullComment(stringEntry)); + assertEquals("The comment is:\n\nEND", commentExtension.getFullComment(noCommentEntry)); } @Test diff --git a/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImplTest.java b/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImplTest.java index 2106a8d..4b18fca 100644 --- a/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImplTest.java +++ b/tweed5-default-extensions/src/test/java/de/siphalor/tweed5/defaultextensions/validation/impl/ValidationExtensionImplTest.java @@ -8,7 +8,8 @@ import de.siphalor.tweed5.core.impl.DefaultConfigContainer; import de.siphalor.tweed5.core.impl.entry.SimpleConfigEntryImpl; import de.siphalor.tweed5.core.impl.entry.StaticMapCompoundConfigEntryImpl; import de.siphalor.tweed5.defaultextensions.comment.api.AComment; -import de.siphalor.tweed5.defaultextensions.comment.impl.CommentExtension; +import de.siphalor.tweed5.defaultextensions.comment.api.CommentExtension; +import de.siphalor.tweed5.defaultextensions.comment.impl.CommentExtensionImpl; import de.siphalor.tweed5.defaultextensions.validation.api.ConfigEntryValidator; import de.siphalor.tweed5.defaultextensions.validation.api.EntrySpecificValidation; import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension; @@ -40,7 +41,7 @@ class ValidationExtensionImplTest { void setUp() { configContainer = new DefaultConfigContainer<>(); - commentExtension = new CommentExtension(); + commentExtension = new CommentExtensionImpl(); configContainer.registerExtension(commentExtension); validationExtension = new ValidationExtensionImpl(); configContainer.registerExtension(validationExtension); diff --git a/tweed5-serde-extension/src/main/java/de/siphalor/tweed5/data/extension/impl/ReadWriteExtensionImpl.java b/tweed5-serde-extension/src/main/java/de/siphalor/tweed5/data/extension/impl/ReadWriteExtensionImpl.java index 822b21e..58eee3a 100644 --- a/tweed5-serde-extension/src/main/java/de/siphalor/tweed5/data/extension/impl/ReadWriteExtensionImpl.java +++ b/tweed5-serde-extension/src/main/java/de/siphalor/tweed5/data/extension/impl/ReadWriteExtensionImpl.java @@ -1,5 +1,6 @@ package de.siphalor.tweed5.data.extension.impl; +import com.google.auto.service.AutoService; import de.siphalor.tweed5.core.api.entry.ConfigEntry; import de.siphalor.tweed5.core.api.extension.EntryExtensionsData; import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData; @@ -26,6 +27,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; +@AutoService(ReadWriteExtension.class) public class ReadWriteExtensionImpl implements ReadWriteExtension { private RegisteredExtensionData readWriteEntryDataExtension;