[ http://issues.apache.org/jira/browse/XMLBEANS-153?page=all ]

Lawrence Jones reassigned XMLBEANS-153:
---------------------------------------

    Assign To: Rajiv Bala

> "validate on set" feature doesn't catch values that are invalid against 
> xs:int patterns
> ---------------------------------------------------------------------------------------
>
>          Key: XMLBEANS-153
>          URL: http://issues.apache.org/jira/browse/XMLBEANS-153
>      Project: XMLBeans
>         Type: Bug
>   Components: Validator
>     Versions: Version 2 Beta 1
>     Reporter: Steve Traut
>     Assignee: Rajiv Bala
>     Priority: Minor

>
> Using XmlOptions.setValidateOnSet will set up XMLBeans to throw an exception 
> in some cases, but not others. 
> For example, an exception will be thrown when schema restricts xs:int to a 
> max value of 100, but a value higher is set. It will NOT throw an exception 
> when schema restricts xs:int to a pattern of three numerals in succession, 
> but a longer value is set. Setting a longer value does render the XML 
> invalid, as a call to XmlObject.validate shows. But "validate on set" doesn't 
> catch this. 
> "validate on set" should set up XMLBeans to catch *anything* that would be 
> invalid in a call to the validate method. Otherwise, it's too 
> counterintuitive to be useful.
> Here's a snippet of the Java code that tries to incorrectly set the value of 
> an id attribute (defined in schema below):
>     public boolean isValidOnTheFly()
>     {
>         private XmlOptions validationOptions = new XmlOptions();
>         validationOptions.setValidateOnSet();
>         
>         TodolistDocument todoList = 
> TodolistDocument.Factory.newInstance(validationOptions);
>         Todolist list = todoList.addNewTodolist();
>         ItemType item = list.addNewItem();
>         item.setName("Procrastinate");
>         item.setDescription("A new item.");
>         item.setAction(ActionType.SOMEDAY_MAYBE_DEFER);
>         
>         // Should throw an exception because the value renders the XML 
> invalid.
>         item.setId(8587);
>         
>         System.out.println(todoList.validate());
>         return true;
>     }
> Here's a snippet from the schema I'm using. Note the id attribute defined as 
> idType:
>     <xs:complexType name="itemType">
>         <xs:sequence>
>             <xs:element name="name" type="xs:string"/>
>             <xs:element name="description" type="xs:string"/>
>             <xs:element name="due_by" type="xs:dateTime"/>
>             <xs:element name="action" type="actionType"/>
>         </xs:sequence>
>         <xs:attribute name="id" type="idType"/> 
>     </xs:complexType>
> When the idType is defined as follows, the code throws an exception:
>     <xs:simpleType name="idType">
>         <xs:restriction base="xs:int">
>             <xs:maxExclusive value="100"/>
>         </xs:restriction>
>     </xs:simpleType>
> When the idType is defined this way, the code throws no exception, although 
> the value set by the code above still renders the XML I'm building invalid:
>     <xs:simpleType name="idType">
>         <xs:restriction base="xs:int">
>             <xs:pattern value="[0-9][0-9][0-9]"/>
>         </xs:restriction>
>     </xs:simpleType>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to