[prev in list] [next in list] [prev in thread] [next in thread]
List: xmlbeans-dev
Subject: [jira] Created: (XMLBEANS-153) "validate on set" feature doesn't catch values that are invalid again
From: "Steve Traut (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date: 2005-05-19 21:34:13
Message-ID: 1083047059.1116538453679.JavaMail.jira () ajax ! apache ! org
[Download RAW message or body]
"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
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: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic