Annotation-based AComment -> EntryComment
This commit is contained in:
@@ -1,12 +0,0 @@
|
||||
package de.siphalor.tweed5.defaultextensions.comment.api;
|
||||
|
||||
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.FIELD)
|
||||
public @interface AComment {
|
||||
String value() default "";
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package de.siphalor.tweed5.defaultextensions.comment.api;
|
||||
|
||||
public interface EntryComment {
|
||||
String comment();
|
||||
}
|
||||
@@ -10,10 +10,7 @@ import de.siphalor.tweed5.core.api.middleware.DefaultMiddlewareContainer;
|
||||
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 de.siphalor.tweed5.defaultextensions.comment.api.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Value;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -32,7 +29,7 @@ public class CommentExtensionImpl implements ReadWriteRelatedExtension, CommentE
|
||||
@Override
|
||||
public void setup(TweedExtensionSetupContext context) {
|
||||
internalEntryDataExtension = context.registerEntryExtensionData(InternalCommentEntryData.class);
|
||||
context.registerEntryExtensionData(AComment.class);
|
||||
context.registerEntryExtensionData(EntryComment.class);
|
||||
|
||||
middlewareContainer = new DefaultMiddlewareContainer<>();
|
||||
|
||||
@@ -54,8 +51,8 @@ public class CommentExtensionImpl implements ReadWriteRelatedExtension, CommentE
|
||||
public void initEntry(ConfigEntry<?> configEntry) {
|
||||
EntryExtensionsData entryExtensionsData = configEntry.extensionsData();
|
||||
String baseComment;
|
||||
if (entryExtensionsData.isPatchworkPartSet(AComment.class)) {
|
||||
baseComment = ((AComment) entryExtensionsData).value();
|
||||
if (entryExtensionsData.isPatchworkPartSet(EntryComment.class)) {
|
||||
baseComment = ((EntryComment) entryExtensionsData).comment();
|
||||
} else {
|
||||
baseComment = "";
|
||||
}
|
||||
|
||||
@@ -16,16 +16,15 @@ import de.siphalor.tweed5.data.extension.api.readwrite.TweedEntryReaderWriters;
|
||||
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 de.siphalor.tweed5.defaultextensions.comment.api.CommentProducer;
|
||||
import de.siphalor.tweed5.defaultextensions.comment.api.EntryComment;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Value;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
@@ -60,11 +59,11 @@ class CommentExtensionImplTest {
|
||||
configContainer.attachAndSealTree(rootEntry);
|
||||
|
||||
//noinspection unchecked
|
||||
RegisteredExtensionData<EntryExtensionsData, AComment> commentData = (RegisteredExtensionData<EntryExtensionsData, AComment>) configContainer.entryDataExtensions().get(AComment.class);
|
||||
RegisteredExtensionData<EntryExtensionsData, EntryComment> commentData = (RegisteredExtensionData<EntryExtensionsData, EntryComment>) configContainer.entryDataExtensions().get(EntryComment.class);
|
||||
|
||||
commentData.set(rootEntry.extensionsData(), new ACommentImpl("This is the root value.\nIt is the topmost value in the tree."));
|
||||
commentData.set(intEntry.extensionsData(), new ACommentImpl("It is an integer"));
|
||||
commentData.set(stringEntry.extensionsData(), new ACommentImpl("It is a string"));
|
||||
commentData.set(rootEntry.extensionsData(), new CommentImpl("This is the root value.\nIt is the topmost value in the tree."));
|
||||
commentData.set(intEntry.extensionsData(), new CommentImpl("It is an integer"));
|
||||
commentData.set(stringEntry.extensionsData(), new CommentImpl("It is a string"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -123,13 +122,8 @@ class CommentExtensionImplTest {
|
||||
}
|
||||
|
||||
@Value
|
||||
private static class ACommentImpl implements AComment {
|
||||
String value;
|
||||
|
||||
@Override
|
||||
public Class<? extends Annotation> annotationType() {
|
||||
return null;
|
||||
}
|
||||
private static class CommentImpl implements EntryComment {
|
||||
String comment;
|
||||
}
|
||||
|
||||
private static class TestCommentModifyingExtension implements TweedExtension, CommentModifyingExtension {
|
||||
|
||||
@@ -3,14 +3,12 @@ package de.siphalor.tweed5.defaultextensions.validation.impl;
|
||||
import de.siphalor.tweed5.core.api.entry.ConfigEntry;
|
||||
import de.siphalor.tweed5.core.api.extension.EntryExtensionsData;
|
||||
import de.siphalor.tweed5.core.api.extension.RegisteredExtensionData;
|
||||
import de.siphalor.tweed5.core.api.middleware.Middleware;
|
||||
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.api.CommentExtension;
|
||||
import de.siphalor.tweed5.defaultextensions.comment.api.EntryComment;
|
||||
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;
|
||||
import de.siphalor.tweed5.defaultextensions.validation.api.result.ValidationIssue;
|
||||
@@ -23,8 +21,10 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.util.*;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@@ -60,38 +60,22 @@ class ValidationExtensionImplTest {
|
||||
configContainer.attachAndSealTree(rootEntry);
|
||||
|
||||
//noinspection unchecked
|
||||
RegisteredExtensionData<EntryExtensionsData, AComment> commentData = (RegisteredExtensionData<EntryExtensionsData, AComment>) configContainer.entryDataExtensions().get(AComment.class);
|
||||
commentData.set(intEntry.extensionsData(), new AComment() {
|
||||
@Override
|
||||
public Class<? extends Annotation> annotationType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String value() {
|
||||
return "This is the main comment!";
|
||||
}
|
||||
});
|
||||
RegisteredExtensionData<EntryExtensionsData, EntryComment> commentData = (RegisteredExtensionData<EntryExtensionsData, EntryComment>) configContainer.entryDataExtensions().get(EntryComment.class);
|
||||
commentData.set(intEntry.extensionsData(), () -> "This is the main comment!");
|
||||
//noinspection unchecked
|
||||
RegisteredExtensionData<EntryExtensionsData, EntrySpecificValidation> entrySpecificValidation = (RegisteredExtensionData<EntryExtensionsData, EntrySpecificValidation>) configContainer.entryDataExtensions().get(EntrySpecificValidation.class);
|
||||
entrySpecificValidation.set(byteEntry.extensionsData(), new EntrySpecificValidation() {
|
||||
@Override
|
||||
public Collection<Middleware<ConfigEntryValidator>> validators() {
|
||||
return Collections.singleton(new SimpleValidatorMiddleware("range", new NumberRangeValidator<>(Byte.class, (byte) 10, (byte) 100)));
|
||||
}
|
||||
});
|
||||
entrySpecificValidation.set(intEntry.extensionsData(), new EntrySpecificValidation() {
|
||||
@Override
|
||||
public Collection<Middleware<ConfigEntryValidator>> validators() {
|
||||
return Collections.singleton(new SimpleValidatorMiddleware("range", new NumberRangeValidator<>(Integer.class, null, 123)));
|
||||
}
|
||||
});
|
||||
entrySpecificValidation.set(doubleEntry.extensionsData(), new EntrySpecificValidation() {
|
||||
@Override
|
||||
public Collection<Middleware<ConfigEntryValidator>> validators() {
|
||||
return Collections.singleton(new SimpleValidatorMiddleware("range", new NumberRangeValidator<>(Double.class, 0.5, null)));
|
||||
}
|
||||
});
|
||||
entrySpecificValidation.set(
|
||||
byteEntry.extensionsData(),
|
||||
() -> Collections.singleton(new SimpleValidatorMiddleware("range", new NumberRangeValidator<>(Byte.class, (byte) 10, (byte) 100)))
|
||||
);
|
||||
entrySpecificValidation.set(
|
||||
intEntry.extensionsData(),
|
||||
() -> Collections.singleton(new SimpleValidatorMiddleware("range", new NumberRangeValidator<>(Integer.class, null, 123)))
|
||||
);
|
||||
entrySpecificValidation.set(
|
||||
doubleEntry.extensionsData(),
|
||||
() -> Collections.singleton(new SimpleValidatorMiddleware("range", new NumberRangeValidator<>(Double.class, 0.5, null)))
|
||||
);
|
||||
|
||||
configContainer.initialize();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user