You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xmlbeans.apache.org by "Jacob Danner (JIRA)" <xm...@xml.apache.org> on 2007/04/25 17:26:16 UTC
[jira] Assigned: (XMLBEANS-153) "validate on set" feature doesn't
catch values that are invalid against xs:int patterns
[ https://issues.apache.org/jira/browse/XMLBEANS-153?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jacob Danner reassigned XMLBEANS-153:
-------------------------------------
Assignee: Jacob Danner (was: Rajiv Bala)
> "validate on set" feature doesn't catch values that are invalid against xs:int patterns
> ---------------------------------------------------------------------------------------
>
> Key: XMLBEANS-153
> URL: https://issues.apache.org/jira/browse/XMLBEANS-153
> Project: XMLBeans
> Issue Type: Bug
> Components: Validator
> Affects Versions: Version 2 Beta 1
> Reporter: Steve Traut
> Assigned To: Jacob Danner
> 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.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org