Auto services

This commit is contained in:
2024-06-09 21:37:07 +02:00
parent 31d905b065
commit f95a5fd10e
10 changed files with 48 additions and 16 deletions

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -0,0 +1,6 @@
package de.siphalor.tweed5.defaultextensions.pather.api;
import de.siphalor.tweed5.core.api.extension.TweedExtension;
public interface PatherExtension extends TweedExtension {
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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

View File

@@ -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);