use of org.apache.ignite.configuration.validation.ValidationContext in project ignite-3 by apache.
the class ConfigurationPresentationTest method beforeAll.
/**
* Before all.
*/
@BeforeAll
static void beforeAll() {
Validator<Value, Object> validator = new Validator<>() {
/**
* {@inheritDoc}
*/
@Override
public void validate(Value annotation, ValidationContext<Object> ctx) {
if (Objects.equals("error", ctx.getNewValue())) {
ctx.addIssue(new ValidationIssue("Error word"));
}
}
};
cfgRegistry = new ConfigurationRegistry(List.of(TestRootConfiguration.KEY), Map.of(Value.class, Set.of(validator)), new TestConfigurationStorage(LOCAL), List.of(), List.of());
cfgRegistry.start();
cfgPresentation = new HoconPresentation(cfgRegistry);
cfg = cfgRegistry.getConfiguration(TestRootConfiguration.KEY);
}
use of org.apache.ignite.configuration.validation.ValidationContext in project ignite-3 by apache.
the class ValidationUtilTest method validateLeafNode.
@Test
public void validateLeafNode() {
var rootsNode = new SuperRoot(key -> null, Map.of(ValidatedRootConfiguration.KEY, root));
Validator<LeafValidation, String> validator = new Validator<>() {
@Override
public void validate(LeafValidation annotation, ValidationContext<String> ctx) {
assertEquals("root.child.str", ctx.currentKey());
assertEquals("foo", ctx.getOldValue());
assertEquals("foo", ctx.getNewValue());
ctx.addIssue(new ValidationIssue("bar"));
}
};
Map<Class<? extends Annotation>, Set<Validator<?, ?>>> validators = Map.of(LeafValidation.class, Set.of(validator));
List<ValidationIssue> issues = ValidationUtil.validate(rootsNode, rootsNode, null, new HashMap<>(), validators);
assertEquals(1, issues.size());
assertEquals("bar", issues.get(0).message());
}
use of org.apache.ignite.configuration.validation.ValidationContext in project ignite-3 by apache.
the class ValidationUtilTest method validateInnerNode.
@Test
public void validateInnerNode() throws Exception {
var rootsNode = new SuperRoot(key -> null, Map.of(ValidatedRootConfiguration.KEY, root));
Validator<InnerValidation, ValidatedChildView> validator = new Validator<>() {
@Override
public void validate(InnerValidation annotation, ValidationContext<ValidatedChildView> ctx) {
assertEquals("root.child", ctx.currentKey());
assertEquals("foo", ctx.getOldValue().str());
assertEquals("foo", ctx.getNewValue().str());
ctx.addIssue(new ValidationIssue("bar"));
}
};
Map<Class<? extends Annotation>, Set<Validator<?, ?>>> validators = Map.of(InnerValidation.class, Set.of(validator));
List<ValidationIssue> issues = ValidationUtil.validate(rootsNode, rootsNode, null, new HashMap<>(), validators);
assertEquals(1, issues.size());
assertEquals("bar", issues.get(0).message());
}
use of org.apache.ignite.configuration.validation.ValidationContext in project ignite-3 by apache.
the class ConfigurationChangerTest method testModifiedFromAnotherStorageWithIncompatibleChanges.
/**
* Test that subsequent change of configuration is failed if changes are incompatible.
*/
@Test
public void testModifiedFromAnotherStorageWithIncompatibleChanges() throws Exception {
ConfigurationChanger changer1 = createChanger(KEY);
changer1.start();
Validator<MaybeInvalid, Object> validator = new Validator<>() {
/**
* {@inheritDoc}
*/
@Override
public void validate(MaybeInvalid annotation, ValidationContext<Object> ctx) {
ctx.addIssue(new ValidationIssue("foo"));
}
};
ConfigurationChanger changer2 = new TestConfigurationChanger(cgen, List.of(KEY), Map.of(MaybeInvalid.class, Set.of(validator)), storage, List.of(), List.of());
changer2.start();
changer1.change(source(KEY, (FirstChange parent) -> parent.changeChild(change -> change.changeIntCfg(1).changeStrCfg("1")).changeElements(change -> change.create("a", element -> element.changeStrCfg("1"))))).get(1, SECONDS);
assertThrows(ExecutionException.class, () -> changer2.change(source(KEY, (FirstChange parent) -> parent.changeChild(change -> change.changeIntCfg(2).changeStrCfg("2")).changeElements(change -> change.create("a", element -> element.changeStrCfg("2")).create("b", element -> element.changeStrCfg("2"))))).get(1, SECONDS));
FirstView newRoot = (FirstView) changer2.getRootNode(KEY);
assertEquals(1, newRoot.child().intCfg());
assertEquals("1", newRoot.child().strCfg());
assertEquals("1", newRoot.elements().get("a").strCfg());
}
use of org.apache.ignite.configuration.validation.ValidationContext in project ignite-3 by apache.
the class ValidationUtilTest method validateNamedListNode.
@Test
public void validateNamedListNode() throws Exception {
var rootsNode = new SuperRoot(key -> null, Map.of(ValidatedRootConfiguration.KEY, root));
Validator<NamedListValidation, NamedListView<?>> validator = new Validator<>() {
@Override
public void validate(NamedListValidation annotation, ValidationContext<NamedListView<?>> ctx) {
assertEquals("root.elements", ctx.currentKey());
assertEquals(List.of(), ctx.getOldValue().namedListKeys());
assertEquals(List.of(), ctx.getNewValue().namedListKeys());
ctx.addIssue(new ValidationIssue("bar"));
}
};
Map<Class<? extends Annotation>, Set<Validator<?, ?>>> validators = Map.of(NamedListValidation.class, Set.of(validator));
List<ValidationIssue> issues = ValidationUtil.validate(rootsNode, rootsNode, null, new HashMap<>(), validators);
assertEquals(1, issues.size());
assertEquals("bar", issues.get(0).message());
}
Aggregations