[
https://issues.apache.org/jira/browse/CXF-4597?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13493210#comment-13493210
]
Balaji Sengeni commented on CXF-4597:
-------------------------------------
Hi Freeman,
I have tried using the 'cxf-codegen-plugin' for wsdl2java goal, even then
nillable attribute is missing for the generated java class.
i.e, actually @XmlElement(required = true) but not create as
@XmlElement(required = true, nillable = false) for all the elements in the xsd
where nillable is not defined explicitly in schema. [since nillable is false by
default as per xsd]
But JAXB parser accepts empty xml element as shown in example below.
XSD fragment :
------------
<xsd:complexType name="person">
<xsd:sequence>
<xsd:element name="title" type="xsd:string" minOccurs="0"
maxOccurs="1"/>
<xsd:element name="firstnames">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="lastname">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="date-of-birth" type="dateTimeZ"/>
</xsd:sequence>
</xsd:complexType>
for this xsd included in wsdl below xml fragment is allowed by the cxf ws with
schema validation enabled.
<person>
<title>Mr</title>
<firstnames>Freeman</firstnames>
<lastname></lastname>
<date-of-birth>19631015000000Z</date-of-birth>
</person>
where '<lastname>' element is null which is valid for java string datatype. But
as per schema, nillable is false(default for all elements in xsd) which
shouldn't accept this value and throw xsd validation failure exception but cxf
doesn't throw (JAXB skips this validation).
Hi Daniel,
I got your point of - user defined CXF interceptor configured before/after
default XSD validation phase and do explicit nillable validation for each
element which I feel little heavy(since I have min. 200 + elements in payload).
Please can you provide me a reference / example for it.
Thanks & Regards,
Balaji
> CXF - jaxws - schema validation for nillable false
> --------------------------------------------------
>
> Key: CXF-4597
> URL: https://issues.apache.org/jira/browse/CXF-4597
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 2.6
> Environment: Tomcat web server
> Reporter: Balaji Sengeni
> Priority: Blocker
> Fix For: Invalid
>
>
> Hi ,
> I apologize, if I have chosen wrong issue type.
> I use contract first web service where xsd is defined in external file.
> [by default, nillable is false if we haven't mentioned for elements in xsd]
> I used jaxws-maven-plugin to import java classes from wsdl. I noticed that
> nillable attribute is missing for @XmlElement(required = true) [java data
> type string]. I assume, its the default behaviour, so Jaxb will treat those
> element as nillable false.
> But when the user sends empty tag, my web service accepts that value.
> Without touching the xsd (setting minLength for the string), is there a easy
> way to do non empty string validation?
>
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira