Where exactly do you want to add the parameter? To the Validator.validateXYZ() methods?
On Tue, 05 Oct 2010 15:54:10 +0200, Gunnar Morling <gunnar.morl...@googlemail.com> wrote: > Hi, > > a use case might be a data-centric application, where you for performance > reasons don't want to validate graphs completely once a failure occured, > but > don't want to face the user with single validation errors one after the > other either. > > Specifying the validation order would surely be useful. But I wouldn't > tie > these things together. I suggest to introduce a numeric parameter and > for a > start either make clear that the validation order is not specified or > only > support values 0 (don't stop on first error) and 1 (= failFast). Later > on, > if validation order is spec'd, other values than these could easily be > supported. If we now introduce a boolean parameter, the API would be > somewhat "polluted" if we come up with a numeric parameter later on. > Then we > either had two parameters (leaving space for inconsistent > configurations) or > had to remove the boolean parameter again. > > Gunnar > > > 2010/10/4 Emmanuel Bernard <emman...@hibernate.org> > >> Ive been toying with the number idea while talking with Max. >> Im not sure what use case that solves provided the highly unpredictable >> nature of what's get returned. >> >> It might be more useful and get a usecase if we spec what gets returned >> roughly. Like deep-last algorithm etc. >> >> >> >> On 4 oct. 2010, at 22:17, Gunnar Morling <gunnar.morl...@googlemail.com> >> wrote: >> >> Hi, >> >> I like the idea. Emmanuel's performance test showed an execution time >> per >> validation of 11 vs. 74 ms on my system, so there seems to be some >> potential. Instead of having a "failFast" flag one could also introduce >> a >> numeric parameter to control, when validation should stop. A value of >> "1" >> would be equal to the flag being true, but one could also decide to stop >> just after 3 validation errors for instance. >> >> Gunnar >> >> >> 2010/10/4 Emmanuel Bernard < <emman...@hibernate.org> >> emman...@hibernate.org> >> >>> That or slowish validations. >>> >>> One typical use case is that: >>> >>> if ( validator.validate(customer, >>> StraightToValidationScreen.class).size() >>> >0 ) { >>> //manual process >>> } >>> else { >>> //automatic process >>> } >>> >>> BTW, I've committed a non scientific perf test that shows an average >>> of 5x >>> perf improvement on an object graph of 5 object (one master and 4 >>> children) >>> and 4 constraints on A and 3 on B. Around 22ms vs 120 ms. (log4j logs >>> set to >>> ERROR). The perf change is visible even on smallish graphs. >>> >>> It can be worthwhile. >>> >>> On 4 oct. 2010, at 16:20, Hardy Ferentschik wrote: >>> >>> > What would be the usecase? Saving time in large object graphs where >>> I am >>> only interested in whether there is a >>> > failure at all? You really need LARGE object graphs to make this >>> worth >>> while. >>> > >>> > >>> > On Mon, 04 Oct 2010 15:45:34 +0200, Emmanuel Bernard >>> <<emman...@hibernate.org> >>> emman...@hibernate.org> wrote: >>> > >>> >> >>> <http://github.com/emmanuelbernard/hibernate-validator/commits/failFast> >>> http://github.com/emmanuelbernard/hibernate-validator/commits/failFast >>> >> >>> >> What do you guys think? >>> >> >>> >> The idea is to stop a the first failure. >>> >> You can enable that : >>> >> - by property >>> >> - at config time >>> >> - when the Validator is created >>> >> >>> >> Look at >>> >> >>> <http://github.com/emmanuelbernard/hibernate-validator/blob/failFast/hibernate-validator/src/test/java/org/hibernate/validator/test/engine/failFast/FailFastTest.java> >>> http://github.com/emmanuelbernard/hibernate-validator/blob/failFast/hibernate-validator/src/test/java/org/hibernate/validator/test/engine/failFast/FailFastTest.java >>> >> for code examples. >>> >> >>> >> Emmanuel >>> >> >>> > >>> >>> >>> _______________________________________________ >>> hibernate-dev mailing list >>> <hibernate-dev@lists.jboss.org>hibernate-dev@lists.jboss.org >>> <https://lists.jboss.org/mailman/listinfo/hibernate-dev> >>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>> >> >> _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev