Auto services
This commit is contained in:
@@ -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"))
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
asm.version = 9.7
|
||||
jetbrains_annotations.version = 24.1.0
|
||||
lombok.version = 1.18.32
|
||||
auto_service.version = 1.1.1
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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<EntryExtensionsData, InternalCommentEntryData> internalEntryDataExtension;
|
||||
private DefaultMiddlewareContainer<CommentProducer> 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;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package de.siphalor.tweed5.defaultextensions.pather.api;
|
||||
|
||||
import de.siphalor.tweed5.core.api.extension.TweedExtension;
|
||||
|
||||
public interface PatherExtension extends TweedExtension {
|
||||
}
|
||||
@@ -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<ReadWriteContextExtensionsData, PathTracking> rwContextPathTrackingData;
|
||||
@@ -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);
|
||||
|
||||
@@ -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<Map<String, Object>> configContainer;
|
||||
private CommentExtension commentExtension;
|
||||
@@ -41,7 +42,7 @@ class CommentExtensionTest {
|
||||
void setupContainer(Collection<TweedExtension> 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
|
||||
@@ -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);
|
||||
|
||||
@@ -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<EntryExtensionsData, ReadWriteEntryDataExtension> readWriteEntryDataExtension;
|
||||
|
||||
Reference in New Issue
Block a user