Title: Mixed type requiring an optional (choice) element

I declared a field in the .xsd as

        <xs:element name="data_identifier">
                <xs:complexType mixed="true">
                        <xs:choice minOccurs="0">
                                <xs:element ref="error"/>
                        </xs:choice>
                </xs:complexType>
        </xs:element>


The code that was generated for the Descriptor class appears to create the "desc" twice and the last one wins!!  In this case, even though I would like to have to only set the value of an element by using .setContent(), the validator is requiring an error element!

<data_identifier>some content<error>...</error></data_identifier>

I am not wanting to have to create an error element.  Am I doing something wrong?  Can I turn off validation when marshalling?

      //----------------/
     //- Constructors -/
    //----------------/

    public DataIdentifierDescriptor() {
        super();
        xmlName = "data_identifier";
        XMLFieldDescriptorImpl  desc           = null;
        XMLFieldHandler         handler        = null;
        FieldValidator          fieldValidator = null;
       
        //-- set grouping compositor
        setCompositorAsChoice();
        //-- _content
        desc = new XMLFieldDescriptorImpl(java.lang.String.class, "_content", "PCDATA", NodeType.Text);
        desc.setImmutable(true);
        handler = (new XMLFieldHandler() {
            public java.lang.Object getValue( java.lang.Object object )
                throws IllegalStateException
            {
                DataIdentifier target = (DataIdentifier) object;
                return target.getContent();
            }
            public void setValue( java.lang.Object object, java.lang.Object value)
                throws IllegalStateException, IllegalArgumentException
            {
                try {
                    DataIdentifier target = (DataIdentifier) object;
                    target.setContent( (java.lang.String) value);
                }
                catch (Exception ex) {
                    throw new IllegalStateException(ex.toString());
                }
            }
            public java.lang.Object newInstance( java.lang.Object parent ) {
                return null;
            }
        } );
        desc.setHandler(handler);
        addFieldDescriptor(desc);
       
        //-- validation code for: _content
        fieldValidator = new FieldValidator();
        { //-- local scope
            StringValidator sv = new StringValidator();
            sv.setWhiteSpace("preserve");
            fieldValidator.setValidator(sv);
        }
        desc.setValidator(fieldValidator);
       
        //-- initialize attribute descriptors
       
        //-- initialize element descriptors
       
        //-- _error
        desc = new XMLFieldDescriptorImpl(Error.class, "_error", "error", NodeType.Element);
        handler = (new XMLFieldHandler() {
            public java.lang.Object getValue( java.lang.Object object )
                throws IllegalStateException
            {
                DataIdentifier target = (DataIdentifier) object;
                return target.getError();
            }
            public void setValue( java.lang.Object object, java.lang.Object value)
                throws IllegalStateException, IllegalArgumentException
            {
                try {
                    DataIdentifier target = (DataIdentifier) object;
                    target.setError( (Error) value);
                }
                catch (Exception ex) {
                    throw new IllegalStateException(ex.toString());
                }
            }
            public java.lang.Object newInstance( java.lang.Object parent ) {
                return new Error();
            }
        } );
        desc.setHandler(handler);
        desc.setRequired(true);
        desc.setMultivalued(false);
        addFieldDescriptor(desc);
       
        //-- validation code for: _error
        fieldValidator = new FieldValidator();
        fieldValidator.setMinOccurs(1);
        desc.setValidator(fieldValidator);
       
    } //-- com.rainhail.insurance.edas.xml.producer.DataIdentifierDescriptor()

Reply via email to