Auto services
This commit is contained in:
@@ -25,6 +25,9 @@ allprojects {
|
|||||||
testCompileOnly(lombok)
|
testCompileOnly(lombok)
|
||||||
testAnnotationProcessor(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"]}")
|
implementation("org.jetbrains:annotations:${properties["jetbrains_annotations.version"]}")
|
||||||
|
|
||||||
testImplementation(platform("org.junit:junit-bom:5.10.0"))
|
testImplementation(platform("org.junit:junit-bom:5.10.0"))
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
asm.version = 9.7
|
asm.version = 9.7
|
||||||
jetbrains_annotations.version = 24.1.0
|
jetbrains_annotations.version = 24.1.0
|
||||||
lombok.version = 1.18.32
|
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;
|
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.entry.ConfigEntry;
|
||||||
import de.siphalor.tweed5.core.api.extension.EntryExtensionsData;
|
import de.siphalor.tweed5.core.api.extension.EntryExtensionsData;
|
||||||
import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData;
|
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.TweedEntryWriter;
|
||||||
import de.siphalor.tweed5.data.extension.api.extension.ReadWriteRelatedExtension;
|
import de.siphalor.tweed5.data.extension.api.extension.ReadWriteRelatedExtension;
|
||||||
import de.siphalor.tweed5.defaultextensions.comment.api.AComment;
|
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.CommentProducer;
|
||||||
import de.siphalor.tweed5.defaultextensions.comment.api.CommentModifyingExtension;
|
import de.siphalor.tweed5.defaultextensions.comment.api.CommentModifyingExtension;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Value;
|
import lombok.Value;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class CommentExtension implements TweedExtension, ReadWriteRelatedExtension {
|
@AutoService(CommentExtension.class)
|
||||||
|
public class CommentExtensionImpl implements ReadWriteRelatedExtension, CommentExtension {
|
||||||
@Getter
|
@Getter
|
||||||
private RegisteredExtensionData<EntryExtensionsData, InternalCommentEntryData> internalEntryDataExtension;
|
private RegisteredExtensionData<EntryExtensionsData, InternalCommentEntryData> internalEntryDataExtension;
|
||||||
private DefaultMiddlewareContainer<CommentProducer> middlewareContainer;
|
private DefaultMiddlewareContainer<CommentProducer> middlewareContainer;
|
||||||
@@ -61,8 +64,9 @@ public class CommentExtension implements TweedExtension, ReadWriteRelatedExtensi
|
|||||||
internalEntryDataExtension.set(entryExtensionsData, new InternalCommentEntryDataImpl(middleware));
|
internalEntryDataExtension.set(entryExtensionsData, new InternalCommentEntryDataImpl(middleware));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
String getComment(ConfigEntry<?> configEntry) {
|
public String getFullComment(ConfigEntry<?> configEntry) {
|
||||||
String comment = ((InternalCommentEntryData) configEntry.extensionsData()).commentProducer().createComment(configEntry);
|
String comment = ((InternalCommentEntryData) configEntry.extensionsData()).commentProducer().createComment(configEntry);
|
||||||
return comment.isEmpty() ? null : comment;
|
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;
|
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.entry.ConfigEntry;
|
||||||
import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData;
|
import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData;
|
||||||
import de.siphalor.tweed5.core.api.extension.TweedExtension;
|
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.PathTracking;
|
||||||
import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingDataReader;
|
import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingDataReader;
|
||||||
import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingDataVisitor;
|
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.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
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 static final String PATHER_ID = "pather";
|
||||||
|
|
||||||
private RegisteredExtensionData<ReadWriteContextExtensionsData, PathTracking> rwContextPathTrackingData;
|
private RegisteredExtensionData<ReadWriteContextExtensionsData, PathTracking> rwContextPathTrackingData;
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package de.siphalor.tweed5.defaultextensions.validation.impl;
|
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.ConfigEntry;
|
||||||
import de.siphalor.tweed5.core.api.entry.ConfigEntryValueVisitor;
|
import de.siphalor.tweed5.core.api.entry.ConfigEntryValueVisitor;
|
||||||
import de.siphalor.tweed5.core.api.extension.EntryExtensionsData;
|
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.PathTracking;
|
||||||
import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingConfigEntryValueVisitor;
|
import de.siphalor.tweed5.defaultextensions.pather.api.PathTrackingConfigEntryValueVisitor;
|
||||||
import de.siphalor.tweed5.defaultextensions.pather.api.PatherData;
|
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.ConfigEntryValidator;
|
||||||
import de.siphalor.tweed5.defaultextensions.validation.api.EntrySpecificValidation;
|
import de.siphalor.tweed5.defaultextensions.validation.api.EntrySpecificValidation;
|
||||||
import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension;
|
import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension;
|
||||||
@@ -39,6 +40,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
@AutoService(ValidationExtension.class)
|
||||||
public class ValidationExtensionImpl implements ReadWriteRelatedExtension, ValidationExtension, CommentModifyingExtension {
|
public class ValidationExtensionImpl implements ReadWriteRelatedExtension, ValidationExtension, CommentModifyingExtension {
|
||||||
private static final ValidationResult<?> PRIMITIVE_IS_NULL_RESULT = ValidationResult.withIssues(
|
private static final ValidationResult<?> PRIMITIVE_IS_NULL_RESULT = ValidationResult.withIssues(
|
||||||
null,
|
null,
|
||||||
@@ -83,7 +85,7 @@ public class ValidationExtensionImpl implements ReadWriteRelatedExtension, Valid
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setup(TweedExtensionSetupContext context) {
|
public void setup(TweedExtensionSetupContext context) {
|
||||||
context.registerExtension(new PatherExtension());
|
context.registerExtension(new PatherExtensionImpl());
|
||||||
|
|
||||||
validationEntryDataExtension = context.registerEntryExtensionData(InternalValidationEntryData.class);
|
validationEntryDataExtension = context.registerEntryExtensionData(InternalValidationEntryData.class);
|
||||||
context.registerEntryExtensionData(EntrySpecificValidation.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.HjsonCommentType;
|
||||||
import de.siphalor.tweed5.data.hjson.HjsonWriter;
|
import de.siphalor.tweed5.data.hjson.HjsonWriter;
|
||||||
import de.siphalor.tweed5.defaultextensions.comment.api.AComment;
|
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.CommentProducer;
|
||||||
import de.siphalor.tweed5.defaultextensions.comment.api.CommentModifyingExtension;
|
import de.siphalor.tweed5.defaultextensions.comment.api.CommentModifyingExtension;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -29,7 +30,7 @@ import java.util.*;
|
|||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
class CommentExtensionTest {
|
class CommentExtensionImplTest {
|
||||||
|
|
||||||
private DefaultConfigContainer<Map<String, Object>> configContainer;
|
private DefaultConfigContainer<Map<String, Object>> configContainer;
|
||||||
private CommentExtension commentExtension;
|
private CommentExtension commentExtension;
|
||||||
@@ -41,7 +42,7 @@ class CommentExtensionTest {
|
|||||||
void setupContainer(Collection<TweedExtension> extraExtensions) {
|
void setupContainer(Collection<TweedExtension> extraExtensions) {
|
||||||
configContainer = new DefaultConfigContainer<>();
|
configContainer = new DefaultConfigContainer<>();
|
||||||
|
|
||||||
commentExtension = new CommentExtension();
|
commentExtension = new CommentExtensionImpl();
|
||||||
configContainer.registerExtension(commentExtension);
|
configContainer.registerExtension(commentExtension);
|
||||||
extraExtensions.forEach(configContainer::registerExtension);
|
extraExtensions.forEach(configContainer::registerExtension);
|
||||||
configContainer.finishExtensionSetup();
|
configContainer.finishExtensionSetup();
|
||||||
@@ -71,9 +72,9 @@ class CommentExtensionTest {
|
|||||||
setupContainer(Collections.emptyList());
|
setupContainer(Collections.emptyList());
|
||||||
configContainer.initialize();
|
configContainer.initialize();
|
||||||
|
|
||||||
assertEquals("It is an integer", commentExtension.getComment(intEntry));
|
assertEquals("It is an integer", commentExtension.getFullComment(intEntry));
|
||||||
assertEquals("It is a string", commentExtension.getComment(stringEntry));
|
assertEquals("It is a string", commentExtension.getFullComment(stringEntry));
|
||||||
assertNull(commentExtension.getComment(noCommentEntry));
|
assertNull(commentExtension.getFullComment(noCommentEntry));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -81,9 +82,9 @@ class CommentExtensionTest {
|
|||||||
setupContainer(Collections.singletonList(new TestCommentModifyingExtension()));
|
setupContainer(Collections.singletonList(new TestCommentModifyingExtension()));
|
||||||
configContainer.initialize();
|
configContainer.initialize();
|
||||||
|
|
||||||
assertEquals("The comment is:\nIt is an integer\nEND", commentExtension.getComment(intEntry));
|
assertEquals("The comment is:\nIt is an integer\nEND", commentExtension.getFullComment(intEntry));
|
||||||
assertEquals("The comment is:\nIt is a string\nEND", commentExtension.getComment(stringEntry));
|
assertEquals("The comment is:\nIt is a string\nEND", commentExtension.getFullComment(stringEntry));
|
||||||
assertEquals("The comment is:\n\nEND", commentExtension.getComment(noCommentEntry));
|
assertEquals("The comment is:\n\nEND", commentExtension.getFullComment(noCommentEntry));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@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.SimpleConfigEntryImpl;
|
||||||
import de.siphalor.tweed5.core.impl.entry.StaticMapCompoundConfigEntryImpl;
|
import de.siphalor.tweed5.core.impl.entry.StaticMapCompoundConfigEntryImpl;
|
||||||
import de.siphalor.tweed5.defaultextensions.comment.api.AComment;
|
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.ConfigEntryValidator;
|
||||||
import de.siphalor.tweed5.defaultextensions.validation.api.EntrySpecificValidation;
|
import de.siphalor.tweed5.defaultextensions.validation.api.EntrySpecificValidation;
|
||||||
import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension;
|
import de.siphalor.tweed5.defaultextensions.validation.api.ValidationExtension;
|
||||||
@@ -40,7 +41,7 @@ class ValidationExtensionImplTest {
|
|||||||
void setUp() {
|
void setUp() {
|
||||||
configContainer = new DefaultConfigContainer<>();
|
configContainer = new DefaultConfigContainer<>();
|
||||||
|
|
||||||
commentExtension = new CommentExtension();
|
commentExtension = new CommentExtensionImpl();
|
||||||
configContainer.registerExtension(commentExtension);
|
configContainer.registerExtension(commentExtension);
|
||||||
validationExtension = new ValidationExtensionImpl();
|
validationExtension = new ValidationExtensionImpl();
|
||||||
configContainer.registerExtension(validationExtension);
|
configContainer.registerExtension(validationExtension);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package de.siphalor.tweed5.data.extension.impl;
|
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.entry.ConfigEntry;
|
||||||
import de.siphalor.tweed5.core.api.extension.EntryExtensionsData;
|
import de.siphalor.tweed5.core.api.extension.EntryExtensionsData;
|
||||||
import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData;
|
import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData;
|
||||||
@@ -26,6 +27,7 @@ import java.util.Collection;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@AutoService(ReadWriteExtension.class)
|
||||||
public class ReadWriteExtensionImpl implements ReadWriteExtension {
|
public class ReadWriteExtensionImpl implements ReadWriteExtension {
|
||||||
|
|
||||||
private RegisteredExtensionData<EntryExtensionsData, ReadWriteEntryDataExtension> readWriteEntryDataExtension;
|
private RegisteredExtensionData<EntryExtensionsData, ReadWriteEntryDataExtension> readWriteEntryDataExtension;
|
||||||
|
|||||||
Reference in New Issue
Block a user