i have value object holds string. string subject restrictions (length, allowed characters, etc).
i use java or spring validation api validating object. validate domain object @ creation time (in constructor).
sample code realises (validates this using validation api):
void validate() { localvalidatorfactorybean localvalidatorfactorybean = new localvalidatorfactorybean(); set<constraintviolation<msisdn>> violations = localvalidatorfactorybean.getvalidator().validate(this); if (!violations.isempty()) { throw new constraintviolationexception(violations); } } i not know how instance of javax.validation.validator constructor.
in spring-managed code (service) @autowire instance of javax.validation.validator or org.springframework.validation.validator , works.
but how make work outside of spring-managed code (in constructor of value object, stands on own)?
i know can write validation rules using ifs, validation annotations makes code simpler.
hibernate validator documentation describes how instance of javax.validation.validator
validatorfactory factory = validation.builddefaultvalidatorfactory(); validator validator = factory.getvalidator(); but not suitable build validatorfactory in constructor. time-consuming operation. maybe using cached reference in thrad-local help, not increased complexity.
finally, have decided write validation rules value objects using guava preconditions
preconditions.checknotnull(value, "value cannot null");
Comments
Post a Comment