[
http://opensource.atlassian.com/projects/hibernate/browse/HV-404?page=com...
]
Gunnar Morling updated HV-404:
------------------------------
Description:
When working with the programmatic constraint declaration API one typically creates a
constraint definition type (derivation of ConstraintDef) for each constraint type.
In its current form the API requires that in each such ConstraintDef sub-type the methods
message(), payload() and groups() are overridden to have the fluent invocation style
working properly. If for instance message() were not overridden in SizeDef, invoking this
method would return the type ConstraintDef, hindering to call later on a specific SizeDef
member such as min().
This can be improved by making ConstraintDef a so called self referential type as
follows:
{code:java}
public abstract class ConstraintDef<C extends ConstraintDef<C, A>, A extends
Annotation> {
//...
public C message(String message) {
//...
}
}
{code}
That way overriding said methods in concrete definition types is not necessary any more
while still allowing the fluent invocation style, as message() would return SizeDef when
called on a SizeDef instance.
was:
When working with the programmatic constraint declaration API one typically creates a
constraint definition type (derivation of ConstraintDef) for each constraint type.
In its current form the API requires that in each such ConstraintDef sub-type the methods
message(), payload() and groups() are overridden to have the fluent invocation style
working properly. If for instance message() were not overridden in SizeDef, invoking this
method would return the type ConstraintDef, hindering to call later on a specific SizeDef
member such as min().
This can be improved by making ConstraintDef a so called self referential type as
follows:
public abstract class ConstraintDef<C extends ConstraintDef<C, A>, A extends
Annotation> {
//...
public C message(String message) {
//...
}
}
That way overriding said methods in concrete definition types is not necessary any more
while still allowing the fluent invocation style, as message() would return SizeDef when
called on a SizeDef instance.
Simplify creation of ConstraintDef derivations
----------------------------------------------
Key: HV-404
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HV-404
Project: Hibernate Validator
Issue Type: Improvement
Components: engine
Affects Versions: 4.1.0.Final
Reporter: Gunnar Morling
Assignee: Hardy Ferentschik
When working with the programmatic constraint declaration API one typically creates a
constraint definition type (derivation of ConstraintDef) for each constraint type.
In its current form the API requires that in each such ConstraintDef sub-type the methods
message(), payload() and groups() are overridden to have the fluent invocation style
working properly. If for instance message() were not overridden in SizeDef, invoking this
method would return the type ConstraintDef, hindering to call later on a specific SizeDef
member such as min().
This can be improved by making ConstraintDef a so called self referential type as
follows:
{code:java}
public abstract class ConstraintDef<C extends ConstraintDef<C, A>, A extends
Annotation> {
//...
public C message(String message) {
//...
}
}
{code}
That way overriding said methods in concrete definition types is not necessary any more
while still allowing the fluent invocation style, as message() would return SizeDef when
called on a SizeDef instance.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira