users@jaxb.java.net

Re: Validate Error

From: Ed Mooney <Ed.Mooney_at_sun.com>
Date: Mon, 02 Dec 2002 10:41:42 -0500

Hi Yuemin,

jaxb-1.0-beta throws javax.xml.bind.ValidationException[1] if you try to
validate an instance containing an empty element whose schema requires
it not to be.

Regards,
--
Ed Mooney         |Sun Microsystems, Inc.|Time flies like
Java Web Services |UBUR02-201            |an arrow, but
Ed.Mooney_at_Sun.COM |1 Network Drive       |fruit flies like
781-442-0459      |Burlington, MA  01803 |a banana. Groucho
[1] http://java.sun.com/xml/jaxb/api/javax/xml/bind/ValidationException.html
Yuemin Wang wrote:
> Hi,
>
> I found a possible bug in jaxb-1.0-ea: "Validate errorjava.lang.NullPointerException"
>
> This error happenes when validate option field (?) itself is an NESTED element.
>
> Case one:
> ---------------------------------
> <!ELEMENT ALIMPRS (STATUS, CONFIRMNUM?, OPERCONFDT?)>
> <!ELEMENT CONFIRMNUM (#PCDATA) >
> <!ELEMENT OPERCONFDT (#PCDATA) >
>
> validation code:
>     public void validate(Validator v)
>         throws StructureValidationException
>     {
>         v.validate(_STATUS);
>     }
>
> ==> no problem! CONFIRMNUM and OPERCONFDT are simple ELEMENT
>
> Case two:
> ---------------------------------
> <!ELEMENT ALIMPRQ (USERINFO, ALTPROV*, PAYINFO?)>
> <!ELEMENT USERINFO EMPTY>
> <!ATTLIST USERINFO
>         USERID        CDATA #REQUIRED
>         USERPASS      CDATA #IMPLIED
>
> ...
> <!ELEMENT PAYINFO (ACCTINFO, AMOUNT) >
> <!ELEMENT AMOUNT (#PCDATA) >
>
> Validation Code:
>     public void validate(Validator v)
>         throws StructureValidationException
>     {
>         v.validate(_USERINFO);
>         for (Iterator i = _ALTPROV.iterator(); i.hasNext(); ) {
>             v.validate(((ValidatableObject) i.next()));
>         }
>         v.validate(_PAYINFO);
>     }
>
> ==> Problem: the PAYINFO is not allow 'null' ==> cause the error
> This happens when PAYINFO has nested ELEMENTS.
>
> The correct code for validate PAYINFO? shall be:
>
> if ( _PAYINFO != null)
>      v.validate(_PAYINFO);
>
> Don't know if this problem fix in the newest version?
>
> Thank you and happy holiday!
>
> Yuemin Wang