users@jaxb.java.net

Validate Error

From: Yuemin Wang <ywang_at_TODO1.COM>
Date: Wed, 27 Nov 2002 17:09:08 -0700

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