use of org.kie.workbench.common.forms.dynamic.service.shared.impl.validation.DynamicModelConstraints in project kie-wb-common by kiegroup.
the class NestedFormBackendFormRenderingContextManagerTest method testConstraintsExtraction.
@Test
public void testConstraintsExtraction() {
DynamicModelConstraints constraints = context.getRenderingContext().getModelConstraints().get(Person.class.getName());
assertNotNull("Constraints cannot be null", constraints);
assertFalse("There should be field constraints", constraints.getFieldConstraints().isEmpty());
assertEquals("There should be 3 constraints", 3, constraints.getFieldConstraints().size());
testFieldAnnotation(constraints, "id", Min.class.getName(), Max.class.getName());
testFieldAnnotation(constraints, "name", NotNull.class.getName(), NotEmpty.class.getName());
testFieldAnnotation(constraints, "birthday", NotNull.class.getName());
}
use of org.kie.workbench.common.forms.dynamic.service.shared.impl.validation.DynamicModelConstraints in project kie-wb-common by kiegroup.
the class ContextModelConstraintsExtractorImpl method readModelConstraints.
@Override
public void readModelConstraints(MapModelRenderingContext clientRenderingContext, ClassLoader classLoader) {
if (clientRenderingContext == null) {
throw new IllegalArgumentException("Context cannot be null");
}
if (classLoader == null) {
throw new IllegalArgumentException("ClassLoader cannot be null");
}
clientRenderingContext.getAvailableForms().values().forEach(formDefinition -> {
if (formDefinition.getModel() instanceof JavaFormModel) {
JavaFormModel javaModel = (JavaFormModel) formDefinition.getModel();
if (clientRenderingContext.getModelConstraints().containsKey(javaModel)) {
return;
}
Class clazz = null;
try {
clazz = classLoader.loadClass(javaModel.getType());
if (clazz == null) {
clazz = getClass().forName(javaModel.getType());
}
} catch (ClassNotFoundException e) {
// maybe Class is not on the project ClassLoader, let's try on the main ClassLoader
try {
clazz = getClass().forName(javaModel.getType());
} catch (ClassNotFoundException e1) {
// ops! class not available on the main classLoader
}
}
if (clazz == null) {
logger.warn("Unable to find class for type {} on any classLoader. Skipping annotation processing", javaModel.getType());
} else {
BeanDescriptor descriptor = Validation.buildDefaultValidatorFactory().getValidator().getConstraintsForClass(clazz);
Set<PropertyDescriptor> properties = descriptor.getConstrainedProperties();
DynamicModelConstraints constraints = new DynamicModelConstraints(javaModel.getType());
clientRenderingContext.getModelConstraints().put(javaModel.getType(), constraints);
properties.forEach(property -> {
property.getConstraintDescriptors().forEach(constraintDescriptor -> {
Map<String, Object> attributes = new HashMap<>();
constraintDescriptor.getAttributes().forEach((key, value) -> {
if (key.equals("payload") || key.equals("groups")) {
return;
}
Object portableValue;
if (EnvUtil.isPortableType(value.getClass())) {
portableValue = value;
} else {
portableValue = value.toString();
}
attributes.put(key, portableValue);
});
constraints.addConstraintForField(property.getPropertyName(), new FieldConstraint(constraintDescriptor.getAnnotation().annotationType().getName(), attributes));
});
});
}
}
});
}
use of org.kie.workbench.common.forms.dynamic.service.shared.impl.validation.DynamicModelConstraints in project kie-wb-common by kiegroup.
the class DynamicFormHandlerGenerator method generateFormHandler.
@Override
public FormHandler generateFormHandler(MapModelRenderingContext context) {
DynamicModelValidator dynamicValidator = new DynamicModelValidator(validator);
if (context.getRootForm().getModel() instanceof JavaFormModel) {
DynamicModelConstraints constraints = context.getModelConstraints().get(((JavaFormModel) context.getRootForm().getModel()).getType());
if (constraints != null) {
dynamicValidator.setModelConstraints(constraints);
}
}
FormValidator formValidator = new FormValidatorImpl(dynamicValidator, fieldStateValidator);
FormHandler handler = new FormHandlerImpl(formValidator, new FieldChangeHandlerManagerImpl());
if (context.getParentContext() == null) {
helper.initContext(context);
}
return handler;
}
Aggregations