Author: mukulg
Date: Sun Apr 17 11:36:27 2022
New Revision: 1899939

URL: http://svn.apache.org/viewvc?rev=1899939&view=rev
Log:
improvements to, fixes for jira issue XERCESJ-1744

Modified:
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertXPath2EngineImpl.java

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertXPath2EngineImpl.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertXPath2EngineImpl.java?rev=1899939&r1=1899938&r2=1899939&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertXPath2EngineImpl.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertXPath2EngineImpl.java
 Sun Apr 17 11:36:27 2022
@@ -390,40 +390,44 @@ public class XMLAssertXPath2EngineImpl e
            while (listStrTokens.hasMoreTokens()) {
               String listItemStrValue = listStrTokens.nextToken();
               // iterate over all the member types of union
-              boolean isListItemValidWithXSNsType = false;
+              boolean isValidationForListItemSuccessful = false;
               for (int idx = 0; idx < assertions.size(); idx++) {
-                  XSSimpleTypeDecl xsSimpleTypeDecl = 
(XSSimpleTypeDecl)assertions.get(idx);
-                  if 
(SchemaSymbols.URI_SCHEMAFORSCHEMA.equals(xsSimpleTypeDecl.getNamespace()) && 
-                                                         
XS11TypeHelper.isStrValueValidForASimpleType(listItemStrValue, 
-                                                                               
                       xsSimpleTypeDecl, Constants.SCHEMA_VERSION_1_1)) {
-                     isListItemValidWithXSNsType = true; 
-                     break; 
-                  }   
-              }
-              if (!isListItemValidWithXSNsType) {
-                  for (int idx = 0; idx < assertions.size(); idx++) {
-                      XSSimpleTypeDecl xsSimpleTypeDecl = 
(XSSimpleTypeDecl)assertions.get(idx);
-                      if 
(!SchemaSymbols.URI_SCHEMAFORSCHEMA.equals(xsSimpleTypeDecl.getNamespace()) && 
-                                                         
XS11TypeHelper.isStrValueValidForASimpleType(listItemStrValue, 
-                                                                               
                       xsSimpleTypeDecl, Constants.SCHEMA_VERSION_1_1)) {
-                          Vector assertVector = 
xsSimpleTypeDecl.getAssertions();
-                          if (assertVector != null) {
-                              for (int idx1 = 0; idx1 < assertVector.size(); 
idx1++) {
-                                  
setXDMTypedValueOf$valueForSTVarietyAtomic(listItemStrValue, 
getXercesXSDTypeCodeFor$value((XSTypeDefinition)xsSimpleTypeDecl), 
-                                                                             
fXpath2DynamicContext);                        
-                                  AssertionError assertError = 
evaluateOneAssertion(element, (XSAssertImpl)assertVector.get(idx1), 
listItemStrValue, false, true);
-                                  if (assertError != null) {                   
              
-                                     XSSimpleTypeDefinition simpleTypeDefn = 
(XSSimpleTypeDefinition) ((ElementPSVI) 
-                                                                               
                augs.getItem(Constants.ELEMENT_PSVI)).getTypeDefinition(); 
-                                     
fXmlSchemaValidator.reportSchemaError("cvc-datatype-valid.4.1.4", new Object[] 
{value, element.rawname, 
-                                                                             
listItemStrValue, XS11TypeHelper.getSchemaTypeName((XSTypeDefinition)
-                                                                               
                                             simpleTypeDefn.getItemType())});
-                                  } 
-                              }
-                          }
-                      }  
+                  XSSimpleTypeDecl xsSimpleTypeDecl = 
(XSSimpleTypeDecl)assertions.get(idx);                  
+                  if 
(XS11TypeHelper.isStrValueValidForASimpleType(listItemStrValue, 
xsSimpleTypeDecl, Constants.SCHEMA_VERSION_1_1)) {
+                      Vector assertVector = xsSimpleTypeDecl.getAssertions();
+                      if (assertVector != null) {
+                         int noOfAsserts = assertVector.size();
+                         int noOfAssertSuccesses = 0;
+                         for (int idx1 = 0; idx1 < assertVector.size(); 
idx1++) {
+                             
setXDMTypedValueOf$valueForSTVarietyAtomic(listItemStrValue, 
getXercesXSDTypeCodeFor$value((XSTypeDefinition)xsSimpleTypeDecl), 
+                                                                               
                            fXpath2DynamicContext);
+                             AssertionError assertError = 
evaluateOneAssertion(element, (XSAssertImpl)assertVector.get(idx1), 
listItemStrValue, false, true);
+                             if (assertError == null) {
+                                noOfAssertSuccesses++;
+                             }
+                         }
+                         if (noOfAsserts == noOfAssertSuccesses) {
+                            isValidationForListItemSuccessful = true;
+                            break;
+                         }
+                      }
+                      else {
+                         isValidationForListItemSuccessful = true;  
+                      }
+                  }
+                  
+                  if (isValidationForListItemSuccessful) {                     
 
+                     break;
                   }
               }
+              
+              if (!isValidationForListItemSuccessful) {
+                  XSSimpleTypeDefinition simpleTypeDefn = 
(XSSimpleTypeDefinition)((ElementPSVI) 
+                                                                               
      augs.getItem(Constants.ELEMENT_PSVI)).getTypeDefinition(); 
+                  
fXmlSchemaValidator.reportSchemaError("cvc-datatype-valid.4.1.4", new Object[] 
{value, element.rawname, 
+                                                                               
           listItemStrValue, XS11TypeHelper.getSchemaTypeName(
+                                                                               
           (XSTypeDefinition) simpleTypeDefn.getItemType())}); 
+              }
            }
         }
         else {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to