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