BTW I don't know when the properties have been added to URL, but if it's still 
possible, I'd use an array on protocol, host, port to be able to do:

    @URL(host={"hibernate.org", ""www.hibernate.org"})


On 11 avr. 2012, at 10:52, Emmanuel Bernard wrote:

> Hi all,
> Hardy, Gunnar and I started a discussion that is worth more Eyeballs.
> 
> It started after the addition of a `regexp` attribute on @Email to be able to 
> restrict the shape of the email via an extra regexp.
> 
> Here is the exchange
> 
>> Emmanuel:
>> I don't understand. Is this feature different than
>> 
>>   @Email @Pattern("regexp")
>> 
>> If that's different I have not found how. If it's not I don't see the point 
>> in adding complexity to @Email.
> 
>> Hardy:
>> The difference is that you only have a single annotation. Internally you are 
>> using composing constraints (so not really adding much complexity) 
>> and report as single violation (which is probably where the advantage lies).
>> 
>> It is probably a matter of taste whether you prefer a single @email 
>> annotation or @email and @pattern.
> 
>> Emmanuel:
>> Also it makes for much less readable code which is something we have 
>> constantly discouraged.
>> 
>> What reads better @Email(regexp="^((?!\\.org).)*$") or 
>> @SomeEmail(excludeTld="org"). Granted, one need to write 
>> an custom annotation but readability is much different. I leave it as an 
>> exercise to write the same samples if 5 TLDs 
>> need to be excluded :)
> 
>> Hardy:
>> @email(regexp="^((?!\.org).)*$")
>> You must admit, this is a little bit of a special case. I stumbled across 
>> this when looking for negating regexp.
>> 
>> Granted, one need to write an custom annotation but readability is much 
>> different.
>> in this particular case you might be better off w/ a custom constraint. A 
>> more common use case would be to restrict to your 
>> own subdomain
> 
>> Gunnar:
>> I think we're basically offering users several options/styles here from 
>> which they may chose the one they like best. 
>> I see use cases where a custom constraint isn't worth the efforts and having 
>> the additional pattern restriction within the
>> @Email constraint might be preferable over expressing it via a separate 
>> @Pattern constraint.
>> 
>> It's also a good thing IMO to be consistent with @URL where we have a 
>> regexp() attribute as well (see HV-406).
> 
> To reply to this thread and in particular Gunnar, let me expand a bit. 
> Hibernate Validator and to a certain extend other Hibernate projects
> have been designed to improve developer productivity not improve choice of 
> style. Choice of style is an important reason why the Java 
> web stack is so complex to build an application. I don't want to be 
> responsible for adding garbage.
> 
> When adding a feature, we have always implicitly asked ourselves this pool of 
> questions:
> 
> 1. Does it feel like the right way of doing things?
>    If it's not, we have been prone to wait till we mature on the idea. Take 
> collection element constraints as a good example. We know the right way but
>    it's not available to us yet
> 2. Can I do it with an existing construct with similar or less complexity?
> 3. Is this feature wrong? eg validating unicity with a database query is 
> wrong.
> 4. Is this a popular request? 
> 5. Is this feature useful in the general scheme? "What's your use case?" 
> mantra.
> 6. Is it the most readable approach?
> 7. Is the feature designed consistently with the rest of the library
> 
> Keeping the library useful and simple is a constant battle against people 
> wanting to throw new features at it but resisting to the dark side is
> important. More than that, I think that's our job to be this gate keeper and 
> we deserve to be shot in the knee and kicked while on the ground.
> We are here to make the world a better place, not give food to guideline 
> writers.
> 
> If we go back to our example, @Email(regexp=""^((?!\\.org).)*$") is not 
> really 5 nor even 2 times better than @Email 
> @Pattern((regexp=""^((?!\\.org).)*$")
> And frankly, regexp is about the less readable construct in the history of 
> programming languages. I am not against some functional flags to
> restrict the domain, ensure that it's an email address reachable from the 
> internet etc etc as this can be made very readable and clearly
> adds over a mix of @Email + @Pattern. And I also dislike @URL.regexp for the 
> same reasons.
> 
> 
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev@lists.jboss.org
> 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

Reply via email to