[ 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]