You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bval.apache.org by Pedro Quiñonez <pe...@gmail.com> on 2012/05/17 19:04:11 UTC
Bean Validation Issue....
hi team members,
Over last date I tried to use the Apache Bean Validation with two beans, A
extends the attributes and methods from B. The constraint configuration in
the contraint.xml file, use constraints over the A class fields and methods
that extend from B class.
At the moment to execute the example i get the next exception:
*Caused by: javax.validation.ValidationException:
gsa.dsc.jsr303.bean.module.MM_SA_DataBean does not contain the fieldType
acct_stat_cd*
at
org.apache.bval.jsr303.xml.ValidationMappingParser.processFieldLevel(ValidationMappingParser.java:360)
at
org.apache.bval.jsr303.xml.ValidationMappingParser.processMappingConfig(ValidationMappingParser.java:96)
at
org.apache.bval.jsr303.ApacheValidatorFactory.configure(ApacheValidatorFactory.java:121)
at
org.apache.bval.jsr303.ApacheValidatorFactory.<init>(ApacheValidatorFactory.java:105)
The question is, the bean validation support validations over fields and
methods that are extends from one class base?
public class *BaseDB2DataBean *{
/** Variable estatus cuenta */
protected String acct_stat_cd = null;
}
*MM_SA_DataBean* extends *BaseDB2DataBean*{
}
*sa-constraints.xml*
<bean class="gsa.dsc.jsr303.bean.module.MM_SA_DataBean">
<field name="acct_stat_cd">
<constraint annotation="javax.validation.constraints.NotNull" />
<constraint
annotation="javax.validation.constraints.Pattern">
<element name="regexp">
<value>AC</value>
</element>
</constraint>
</field>
</bean>
public static void main(String[] args) {
Validator validator =
Jsr303ValidatorFactory.SINGLE_INSTANCE.getValidator();
MM_SA_DataBean bean = new MM_SA_DataBean();
bean.setAcct_stat_cd("DE");
bean.setPlattform("MOVISTAR");
bean.setTechnology("4G");
Set<ConstraintViolation<MM_SA_DataBean>> result = null;
Iterator<ConstraintViolation<MM_SA_DataBean>> it = null;
long init = System.currentTimeMillis();
result = validator.validate(bean);
long end = System.currentTimeMillis();
System.out.println("Tiempo ejecución: [" + (end - init)+ "]");
it = result.iterator();
while(it.hasNext()){
ConstraintViolation<MM_SA_DataBean> bean1 = it.next();
System.out.println("Valor:" + bean1.getInvalidValue() + "
Mensaje:" + bean1.getMessage());
}
}
Re: Bean Validation Issue....
Posted by Matt Benson <mb...@apache.org>.
On Thu, May 17, 2012 at 5:38 PM, Pedro Quiñonez
<pe...@gmail.com> wrote:
> Of course I do,
>
> I try the BVal 0.4 and all its correct. With getter method works fine.
Hi Pedro,
I had misunderstood you to say you were still encountering an error
with the 0.4 release. Glad it's working for you after all.
>
> just one question, why the API don´t work with inherited attributes even
> though they are marked as protected (only an existential doubt)
In section "7.1.1.2. Field-level overriding" of the Bean Validation
specification v1.0 it is stated that "If the name of the field does
not correspond to a field in the given bean a ValidationException is
raised." Here "bean" refers to the type represented by the
surrounding <bean> element, and my interpretation is that the <field>
element is intended to correspond to the structure of an annotated
field on a given class. You certainly can't annotate a field of a
superclass in Java code, but you *can* override that field's getter
method and annotate that--this approach would of course be the
analogous to using a <getter> element.
HTH,
Matt
>
> Thanks Matt,
>
>
>
> 2012/5/17 Matt Benson <gu...@gmail.com>
>>
>> Silly question: does BaseDB2DataBean define a getter method for
>> acct_stat_cd, e.g.:
>>
>> public String getAcct_stat_cd() {
>> return acct_stat_cd;
>> }
>>
>> Of course this method would be required for <getter> as well. The
>> Bean Validation specification is designed to work with Java beans,
>> after all. <field> is for fields declared on the <bean> class;
>> <getter> is for getter methods compliant with the Java beans
>> specification. Looking at the code I fail to see how you would have a
>> problem with <getter> so long as one or both of these classes define
>> the getter method as I have described.
>>
>> Matt
>>
>> On Thu, May 17, 2012 at 2:52 PM, Pedro Quiñonez
>> <pe...@gmail.com> wrote:
>> > Thanks Matt,
>> >
>> > I tried using the <getter> form with the same results. Now I proves with
>> > BVal 0.4
>> >
>> > Regards!!
>> >
>> > 2012/5/17 Matt Benson <mb...@apache.org>
>> >
>> >> Hi, Pedro. In this case you should be using a <getter> instead of a
>> >> <field> in your XML-based constraint declarations (and, as it turns
>> >> out, that makes this a question for the user list ;) ). It also looks
>> >> like you're not using the latest BVal release; we encourage you to
>> >> give Apache BVal 0.4 a try!
>> >>
>> >> Regards,
>> >> Matt
>> >>
>> >> On Thu, May 17, 2012 at 12:04 PM, Pedro Quiñonez
>> >> <pe...@gmail.com> wrote:
>> >> > hi team members,
>> >> >
>> >> > Over last date I tried to use the Apache Bean Validation with two
>> >> > beans,
>> >> A
>> >> > extends the attributes and methods from B. The constraint
>> >> > configuration
>> >> in
>> >> > the contraint.xml file, use constraints over the A class fields and
>> >> methods
>> >> > that extend from B class.
>> >> >
>> >> > At the moment to execute the example i get the next exception:
>> >> >
>> >> > *Caused by: javax.validation.ValidationException:
>> >> > gsa.dsc.jsr303.bean.module.MM_SA_DataBean does not contain the
>> >> > fieldType
>> >> > acct_stat_cd*
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.xml.ValidationMappingParser.processFieldLevel(ValidationMappingParser.java:360)
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.xml.ValidationMappingParser.processMappingConfig(ValidationMappingParser.java:96)
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.ApacheValidatorFactory.configure(ApacheValidatorFactory.java:121)
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.ApacheValidatorFactory.<init>(ApacheValidatorFactory.java:105)
>> >> >
>> >> > The question is, the bean validation support validations over fields
>> >> > and
>> >> > methods that are extends from one class base?
>> >> >
>> >> > public class *BaseDB2DataBean *{
>> >> >
>> >> > /** Variable estatus cuenta */
>> >> > protected String acct_stat_cd = null;
>> >> >
>> >> > }
>> >> >
>> >> >
>> >> > *MM_SA_DataBean* extends *BaseDB2DataBean*{
>> >> >
>> >> > }
>> >> >
>> >> > *sa-constraints.xml*
>> >> > <bean class="gsa.dsc.jsr303.bean.module.MM_SA_DataBean">
>> >> >
>> >> > <field name="acct_stat_cd">
>> >> >
>> >> > <constraint
>> >> > annotation="javax.validation.constraints.NotNull"
>> >> />
>> >> >
>> >> > <constraint
>> >> > annotation="javax.validation.constraints.Pattern">
>> >> > <element name="regexp">
>> >> > <value>AC</value>
>> >> > </element>
>> >> > </constraint>
>> >> > </field>
>> >> > </bean>
>> >> >
>> >> >
>> >> >
>> >> > public static void main(String[] args) {
>> >> > Validator validator =
>> >> > Jsr303ValidatorFactory.SINGLE_INSTANCE.getValidator();
>> >> >
>> >> > MM_SA_DataBean bean = new MM_SA_DataBean();
>> >> >
>> >> > bean.setAcct_stat_cd("DE");
>> >> > bean.setPlattform("MOVISTAR");
>> >> > bean.setTechnology("4G");
>> >> >
>> >> > Set<ConstraintViolation<MM_SA_DataBean>> result = null;
>> >> > Iterator<ConstraintViolation<MM_SA_DataBean>> it = null;
>> >> >
>> >> > long init = System.currentTimeMillis();
>> >> > result = validator.validate(bean);
>> >> > long end = System.currentTimeMillis();
>> >> >
>> >> > System.out.println("Tiempo ejecución: [" + (end - init)+
>> >> > "]");
>> >> >
>> >> > it = result.iterator();
>> >> >
>> >> > while(it.hasNext()){
>> >> > ConstraintViolation<MM_SA_DataBean> bean1 = it.next();
>> >> > System.out.println("Valor:" + bean1.getInvalidValue() + "
>> >> > Mensaje:" + bean1.getMessage());
>> >> > }
>> >> > }
>> >>
>
>
Re: Bean Validation Issue....
Posted by Matt Benson <mb...@apache.org>.
On Thu, May 17, 2012 at 5:38 PM, Pedro Quiñonez
<pe...@gmail.com> wrote:
> Of course I do,
>
> I try the BVal 0.4 and all its correct. With getter method works fine.
Hi Pedro,
I had misunderstood you to say you were still encountering an error
with the 0.4 release. Glad it's working for you after all.
>
> just one question, why the API don´t work with inherited attributes even
> though they are marked as protected (only an existential doubt)
In section "7.1.1.2. Field-level overriding" of the Bean Validation
specification v1.0 it is stated that "If the name of the field does
not correspond to a field in the given bean a ValidationException is
raised." Here "bean" refers to the type represented by the
surrounding <bean> element, and my interpretation is that the <field>
element is intended to correspond to the structure of an annotated
field on a given class. You certainly can't annotate a field of a
superclass in Java code, but you *can* override that field's getter
method and annotate that--this approach would of course be the
analogous to using a <getter> element.
HTH,
Matt
>
> Thanks Matt,
>
>
>
> 2012/5/17 Matt Benson <gu...@gmail.com>
>>
>> Silly question: does BaseDB2DataBean define a getter method for
>> acct_stat_cd, e.g.:
>>
>> public String getAcct_stat_cd() {
>> return acct_stat_cd;
>> }
>>
>> Of course this method would be required for <getter> as well. The
>> Bean Validation specification is designed to work with Java beans,
>> after all. <field> is for fields declared on the <bean> class;
>> <getter> is for getter methods compliant with the Java beans
>> specification. Looking at the code I fail to see how you would have a
>> problem with <getter> so long as one or both of these classes define
>> the getter method as I have described.
>>
>> Matt
>>
>> On Thu, May 17, 2012 at 2:52 PM, Pedro Quiñonez
>> <pe...@gmail.com> wrote:
>> > Thanks Matt,
>> >
>> > I tried using the <getter> form with the same results. Now I proves with
>> > BVal 0.4
>> >
>> > Regards!!
>> >
>> > 2012/5/17 Matt Benson <mb...@apache.org>
>> >
>> >> Hi, Pedro. In this case you should be using a <getter> instead of a
>> >> <field> in your XML-based constraint declarations (and, as it turns
>> >> out, that makes this a question for the user list ;) ). It also looks
>> >> like you're not using the latest BVal release; we encourage you to
>> >> give Apache BVal 0.4 a try!
>> >>
>> >> Regards,
>> >> Matt
>> >>
>> >> On Thu, May 17, 2012 at 12:04 PM, Pedro Quiñonez
>> >> <pe...@gmail.com> wrote:
>> >> > hi team members,
>> >> >
>> >> > Over last date I tried to use the Apache Bean Validation with two
>> >> > beans,
>> >> A
>> >> > extends the attributes and methods from B. The constraint
>> >> > configuration
>> >> in
>> >> > the contraint.xml file, use constraints over the A class fields and
>> >> methods
>> >> > that extend from B class.
>> >> >
>> >> > At the moment to execute the example i get the next exception:
>> >> >
>> >> > *Caused by: javax.validation.ValidationException:
>> >> > gsa.dsc.jsr303.bean.module.MM_SA_DataBean does not contain the
>> >> > fieldType
>> >> > acct_stat_cd*
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.xml.ValidationMappingParser.processFieldLevel(ValidationMappingParser.java:360)
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.xml.ValidationMappingParser.processMappingConfig(ValidationMappingParser.java:96)
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.ApacheValidatorFactory.configure(ApacheValidatorFactory.java:121)
>> >> > at
>> >> >
>> >>
>> >> org.apache.bval.jsr303.ApacheValidatorFactory.<init>(ApacheValidatorFactory.java:105)
>> >> >
>> >> > The question is, the bean validation support validations over fields
>> >> > and
>> >> > methods that are extends from one class base?
>> >> >
>> >> > public class *BaseDB2DataBean *{
>> >> >
>> >> > /** Variable estatus cuenta */
>> >> > protected String acct_stat_cd = null;
>> >> >
>> >> > }
>> >> >
>> >> >
>> >> > *MM_SA_DataBean* extends *BaseDB2DataBean*{
>> >> >
>> >> > }
>> >> >
>> >> > *sa-constraints.xml*
>> >> > <bean class="gsa.dsc.jsr303.bean.module.MM_SA_DataBean">
>> >> >
>> >> > <field name="acct_stat_cd">
>> >> >
>> >> > <constraint
>> >> > annotation="javax.validation.constraints.NotNull"
>> >> />
>> >> >
>> >> > <constraint
>> >> > annotation="javax.validation.constraints.Pattern">
>> >> > <element name="regexp">
>> >> > <value>AC</value>
>> >> > </element>
>> >> > </constraint>
>> >> > </field>
>> >> > </bean>
>> >> >
>> >> >
>> >> >
>> >> > public static void main(String[] args) {
>> >> > Validator validator =
>> >> > Jsr303ValidatorFactory.SINGLE_INSTANCE.getValidator();
>> >> >
>> >> > MM_SA_DataBean bean = new MM_SA_DataBean();
>> >> >
>> >> > bean.setAcct_stat_cd("DE");
>> >> > bean.setPlattform("MOVISTAR");
>> >> > bean.setTechnology("4G");
>> >> >
>> >> > Set<ConstraintViolation<MM_SA_DataBean>> result = null;
>> >> > Iterator<ConstraintViolation<MM_SA_DataBean>> it = null;
>> >> >
>> >> > long init = System.currentTimeMillis();
>> >> > result = validator.validate(bean);
>> >> > long end = System.currentTimeMillis();
>> >> >
>> >> > System.out.println("Tiempo ejecución: [" + (end - init)+
>> >> > "]");
>> >> >
>> >> > it = result.iterator();
>> >> >
>> >> > while(it.hasNext()){
>> >> > ConstraintViolation<MM_SA_DataBean> bean1 = it.next();
>> >> > System.out.println("Valor:" + bean1.getInvalidValue() + "
>> >> > Mensaje:" + bean1.getMessage());
>> >> > }
>> >> > }
>> >>
>
>
Re: Bean Validation Issue....
Posted by Matt Benson <gu...@gmail.com>.
Silly question: does BaseDB2DataBean define a getter method for
acct_stat_cd, e.g.:
public String getAcct_stat_cd() {
return acct_stat_cd;
}
Of course this method would be required for <getter> as well. The
Bean Validation specification is designed to work with Java beans,
after all. <field> is for fields declared on the <bean> class;
<getter> is for getter methods compliant with the Java beans
specification. Looking at the code I fail to see how you would have a
problem with <getter> so long as one or both of these classes define
the getter method as I have described.
Matt
On Thu, May 17, 2012 at 2:52 PM, Pedro Quiñonez
<pe...@gmail.com> wrote:
> Thanks Matt,
>
> I tried using the <getter> form with the same results. Now I proves with
> BVal 0.4
>
> Regards!!
>
> 2012/5/17 Matt Benson <mb...@apache.org>
>
>> Hi, Pedro. In this case you should be using a <getter> instead of a
>> <field> in your XML-based constraint declarations (and, as it turns
>> out, that makes this a question for the user list ;) ). It also looks
>> like you're not using the latest BVal release; we encourage you to
>> give Apache BVal 0.4 a try!
>>
>> Regards,
>> Matt
>>
>> On Thu, May 17, 2012 at 12:04 PM, Pedro Quiñonez
>> <pe...@gmail.com> wrote:
>> > hi team members,
>> >
>> > Over last date I tried to use the Apache Bean Validation with two beans,
>> A
>> > extends the attributes and methods from B. The constraint configuration
>> in
>> > the contraint.xml file, use constraints over the A class fields and
>> methods
>> > that extend from B class.
>> >
>> > At the moment to execute the example i get the next exception:
>> >
>> > *Caused by: javax.validation.ValidationException:
>> > gsa.dsc.jsr303.bean.module.MM_SA_DataBean does not contain the fieldType
>> > acct_stat_cd*
>> > at
>> >
>> org.apache.bval.jsr303.xml.ValidationMappingParser.processFieldLevel(ValidationMappingParser.java:360)
>> > at
>> >
>> org.apache.bval.jsr303.xml.ValidationMappingParser.processMappingConfig(ValidationMappingParser.java:96)
>> > at
>> >
>> org.apache.bval.jsr303.ApacheValidatorFactory.configure(ApacheValidatorFactory.java:121)
>> > at
>> >
>> org.apache.bval.jsr303.ApacheValidatorFactory.<init>(ApacheValidatorFactory.java:105)
>> >
>> > The question is, the bean validation support validations over fields and
>> > methods that are extends from one class base?
>> >
>> > public class *BaseDB2DataBean *{
>> >
>> > /** Variable estatus cuenta */
>> > protected String acct_stat_cd = null;
>> >
>> > }
>> >
>> >
>> > *MM_SA_DataBean* extends *BaseDB2DataBean*{
>> >
>> > }
>> >
>> > *sa-constraints.xml*
>> > <bean class="gsa.dsc.jsr303.bean.module.MM_SA_DataBean">
>> >
>> > <field name="acct_stat_cd">
>> >
>> > <constraint annotation="javax.validation.constraints.NotNull"
>> />
>> >
>> > <constraint
>> > annotation="javax.validation.constraints.Pattern">
>> > <element name="regexp">
>> > <value>AC</value>
>> > </element>
>> > </constraint>
>> > </field>
>> > </bean>
>> >
>> >
>> >
>> > public static void main(String[] args) {
>> > Validator validator =
>> > Jsr303ValidatorFactory.SINGLE_INSTANCE.getValidator();
>> >
>> > MM_SA_DataBean bean = new MM_SA_DataBean();
>> >
>> > bean.setAcct_stat_cd("DE");
>> > bean.setPlattform("MOVISTAR");
>> > bean.setTechnology("4G");
>> >
>> > Set<ConstraintViolation<MM_SA_DataBean>> result = null;
>> > Iterator<ConstraintViolation<MM_SA_DataBean>> it = null;
>> >
>> > long init = System.currentTimeMillis();
>> > result = validator.validate(bean);
>> > long end = System.currentTimeMillis();
>> >
>> > System.out.println("Tiempo ejecución: [" + (end - init)+ "]");
>> >
>> > it = result.iterator();
>> >
>> > while(it.hasNext()){
>> > ConstraintViolation<MM_SA_DataBean> bean1 = it.next();
>> > System.out.println("Valor:" + bean1.getInvalidValue() + "
>> > Mensaje:" + bean1.getMessage());
>> > }
>> > }
>>
Re: Bean Validation Issue....
Posted by Pedro Quiñonez <pe...@gmail.com>.
Thanks Matt,
I tried using the <getter> form with the same results. Now I proves with
BVal 0.4
Regards!!
2012/5/17 Matt Benson <mb...@apache.org>
> Hi, Pedro. In this case you should be using a <getter> instead of a
> <field> in your XML-based constraint declarations (and, as it turns
> out, that makes this a question for the user list ;) ). It also looks
> like you're not using the latest BVal release; we encourage you to
> give Apache BVal 0.4 a try!
>
> Regards,
> Matt
>
> On Thu, May 17, 2012 at 12:04 PM, Pedro Quiñonez
> <pe...@gmail.com> wrote:
> > hi team members,
> >
> > Over last date I tried to use the Apache Bean Validation with two beans,
> A
> > extends the attributes and methods from B. The constraint configuration
> in
> > the contraint.xml file, use constraints over the A class fields and
> methods
> > that extend from B class.
> >
> > At the moment to execute the example i get the next exception:
> >
> > *Caused by: javax.validation.ValidationException:
> > gsa.dsc.jsr303.bean.module.MM_SA_DataBean does not contain the fieldType
> > acct_stat_cd*
> > at
> >
> org.apache.bval.jsr303.xml.ValidationMappingParser.processFieldLevel(ValidationMappingParser.java:360)
> > at
> >
> org.apache.bval.jsr303.xml.ValidationMappingParser.processMappingConfig(ValidationMappingParser.java:96)
> > at
> >
> org.apache.bval.jsr303.ApacheValidatorFactory.configure(ApacheValidatorFactory.java:121)
> > at
> >
> org.apache.bval.jsr303.ApacheValidatorFactory.<init>(ApacheValidatorFactory.java:105)
> >
> > The question is, the bean validation support validations over fields and
> > methods that are extends from one class base?
> >
> > public class *BaseDB2DataBean *{
> >
> > /** Variable estatus cuenta */
> > protected String acct_stat_cd = null;
> >
> > }
> >
> >
> > *MM_SA_DataBean* extends *BaseDB2DataBean*{
> >
> > }
> >
> > *sa-constraints.xml*
> > <bean class="gsa.dsc.jsr303.bean.module.MM_SA_DataBean">
> >
> > <field name="acct_stat_cd">
> >
> > <constraint annotation="javax.validation.constraints.NotNull"
> />
> >
> > <constraint
> > annotation="javax.validation.constraints.Pattern">
> > <element name="regexp">
> > <value>AC</value>
> > </element>
> > </constraint>
> > </field>
> > </bean>
> >
> >
> >
> > public static void main(String[] args) {
> > Validator validator =
> > Jsr303ValidatorFactory.SINGLE_INSTANCE.getValidator();
> >
> > MM_SA_DataBean bean = new MM_SA_DataBean();
> >
> > bean.setAcct_stat_cd("DE");
> > bean.setPlattform("MOVISTAR");
> > bean.setTechnology("4G");
> >
> > Set<ConstraintViolation<MM_SA_DataBean>> result = null;
> > Iterator<ConstraintViolation<MM_SA_DataBean>> it = null;
> >
> > long init = System.currentTimeMillis();
> > result = validator.validate(bean);
> > long end = System.currentTimeMillis();
> >
> > System.out.println("Tiempo ejecución: [" + (end - init)+ "]");
> >
> > it = result.iterator();
> >
> > while(it.hasNext()){
> > ConstraintViolation<MM_SA_DataBean> bean1 = it.next();
> > System.out.println("Valor:" + bean1.getInvalidValue() + "
> > Mensaje:" + bean1.getMessage());
> > }
> > }
>
Re: Bean Validation Issue....
Posted by Matt Benson <mb...@apache.org>.
Hi, Pedro. In this case you should be using a <getter> instead of a
<field> in your XML-based constraint declarations (and, as it turns
out, that makes this a question for the user list ;) ). It also looks
like you're not using the latest BVal release; we encourage you to
give Apache BVal 0.4 a try!
Regards,
Matt
On Thu, May 17, 2012 at 12:04 PM, Pedro Quiñonez
<pe...@gmail.com> wrote:
> hi team members,
>
> Over last date I tried to use the Apache Bean Validation with two beans, A
> extends the attributes and methods from B. The constraint configuration in
> the contraint.xml file, use constraints over the A class fields and methods
> that extend from B class.
>
> At the moment to execute the example i get the next exception:
>
> *Caused by: javax.validation.ValidationException:
> gsa.dsc.jsr303.bean.module.MM_SA_DataBean does not contain the fieldType
> acct_stat_cd*
> at
> org.apache.bval.jsr303.xml.ValidationMappingParser.processFieldLevel(ValidationMappingParser.java:360)
> at
> org.apache.bval.jsr303.xml.ValidationMappingParser.processMappingConfig(ValidationMappingParser.java:96)
> at
> org.apache.bval.jsr303.ApacheValidatorFactory.configure(ApacheValidatorFactory.java:121)
> at
> org.apache.bval.jsr303.ApacheValidatorFactory.<init>(ApacheValidatorFactory.java:105)
>
> The question is, the bean validation support validations over fields and
> methods that are extends from one class base?
>
> public class *BaseDB2DataBean *{
>
> /** Variable estatus cuenta */
> protected String acct_stat_cd = null;
>
> }
>
>
> *MM_SA_DataBean* extends *BaseDB2DataBean*{
>
> }
>
> *sa-constraints.xml*
> <bean class="gsa.dsc.jsr303.bean.module.MM_SA_DataBean">
>
> <field name="acct_stat_cd">
>
> <constraint annotation="javax.validation.constraints.NotNull" />
>
> <constraint
> annotation="javax.validation.constraints.Pattern">
> <element name="regexp">
> <value>AC</value>
> </element>
> </constraint>
> </field>
> </bean>
>
>
>
> public static void main(String[] args) {
> Validator validator =
> Jsr303ValidatorFactory.SINGLE_INSTANCE.getValidator();
>
> MM_SA_DataBean bean = new MM_SA_DataBean();
>
> bean.setAcct_stat_cd("DE");
> bean.setPlattform("MOVISTAR");
> bean.setTechnology("4G");
>
> Set<ConstraintViolation<MM_SA_DataBean>> result = null;
> Iterator<ConstraintViolation<MM_SA_DataBean>> it = null;
>
> long init = System.currentTimeMillis();
> result = validator.validate(bean);
> long end = System.currentTimeMillis();
>
> System.out.println("Tiempo ejecución: [" + (end - init)+ "]");
>
> it = result.iterator();
>
> while(it.hasNext()){
> ConstraintViolation<MM_SA_DataBean> bean1 = it.next();
> System.out.println("Valor:" + bean1.getInvalidValue() + "
> Mensaje:" + bean1.getMessage());
> }
> }
Re: Bean Validation Issue....
Posted by Matt Benson <mb...@apache.org>.
Hi, Pedro. In this case you should be using a <getter> instead of a
<field> in your XML-based constraint declarations (and, as it turns
out, that makes this a question for the user list ;) ). It also looks
like you're not using the latest BVal release; we encourage you to
give Apache BVal 0.4 a try!
Regards,
Matt
On Thu, May 17, 2012 at 12:04 PM, Pedro Quiñonez
<pe...@gmail.com> wrote:
> hi team members,
>
> Over last date I tried to use the Apache Bean Validation with two beans, A
> extends the attributes and methods from B. The constraint configuration in
> the contraint.xml file, use constraints over the A class fields and methods
> that extend from B class.
>
> At the moment to execute the example i get the next exception:
>
> *Caused by: javax.validation.ValidationException:
> gsa.dsc.jsr303.bean.module.MM_SA_DataBean does not contain the fieldType
> acct_stat_cd*
> at
> org.apache.bval.jsr303.xml.ValidationMappingParser.processFieldLevel(ValidationMappingParser.java:360)
> at
> org.apache.bval.jsr303.xml.ValidationMappingParser.processMappingConfig(ValidationMappingParser.java:96)
> at
> org.apache.bval.jsr303.ApacheValidatorFactory.configure(ApacheValidatorFactory.java:121)
> at
> org.apache.bval.jsr303.ApacheValidatorFactory.<init>(ApacheValidatorFactory.java:105)
>
> The question is, the bean validation support validations over fields and
> methods that are extends from one class base?
>
> public class *BaseDB2DataBean *{
>
> /** Variable estatus cuenta */
> protected String acct_stat_cd = null;
>
> }
>
>
> *MM_SA_DataBean* extends *BaseDB2DataBean*{
>
> }
>
> *sa-constraints.xml*
> <bean class="gsa.dsc.jsr303.bean.module.MM_SA_DataBean">
>
> <field name="acct_stat_cd">
>
> <constraint annotation="javax.validation.constraints.NotNull" />
>
> <constraint
> annotation="javax.validation.constraints.Pattern">
> <element name="regexp">
> <value>AC</value>
> </element>
> </constraint>
> </field>
> </bean>
>
>
>
> public static void main(String[] args) {
> Validator validator =
> Jsr303ValidatorFactory.SINGLE_INSTANCE.getValidator();
>
> MM_SA_DataBean bean = new MM_SA_DataBean();
>
> bean.setAcct_stat_cd("DE");
> bean.setPlattform("MOVISTAR");
> bean.setTechnology("4G");
>
> Set<ConstraintViolation<MM_SA_DataBean>> result = null;
> Iterator<ConstraintViolation<MM_SA_DataBean>> it = null;
>
> long init = System.currentTimeMillis();
> result = validator.validate(bean);
> long end = System.currentTimeMillis();
>
> System.out.println("Tiempo ejecución: [" + (end - init)+ "]");
>
> it = result.iterator();
>
> while(it.hasNext()){
> ConstraintViolation<MM_SA_DataBean> bean1 = it.next();
> System.out.println("Valor:" + bean1.getInvalidValue() + "
> Mensaje:" + bean1.getMessage());
> }
> }