[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-cvs
Subject:    svn commit: r1074003 - in
From:       mukulg () apache ! org
Date:       2011-02-24 1:03:35
Message-ID: 20110224010335.8667623889B2 () eris ! apache ! org
[Download RAW message or body]

Author: mukulg
Date: Thu Feb 24 01:03:35 2011
New Revision: 1074003

URL: http://svn.apache.org/viewvc?rev=1074003&view=rev
Log:
committing few improvements to assertions processing, when a simpleType is derived \
from list (whose itemType has assertions). the commit also does few refactoring \
changes.

Modified:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java
  xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java
  xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java


Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apac \
he/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java?rev=1074003&r1=1074002&r2=1074003&view=diff
 ==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathXPath2Impl.java \
Thu Feb 24 01:03:35 2011 @@ -321,29 +321,33 @@ public class \
XMLAssertPsychopathXPath2Im  if (assertImpl.getType() == XSConstants.ASSERTION) {
                 // not an assertion facet
                 xpathContextExists = true;   
-            }
-            
+            }            
             if (assertImpl.getAttrName() != null) {
                 // evaluate assertion from an attribute
                 value = assertImpl.getAttrValue();
-                XSSimpleTypeDefinition assertSimpleType = (XSSimpleTypeDefinition) \
assertImpl.getTypeDefinition();                                 +                \
XSSimpleTypeDefinition attrSimpleType = (XSSimpleTypeDefinition) \
assertImpl.getTypeDefinition(); +                final boolean isTypeDerivedFromList \
= ((XSSimpleType) attrSimpleType.getBaseType()).getVariety() == \
XSSimpleType.VARIETY_LIST; +                final boolean isTypeDerivedFromUnion = \
((XSSimpleType) attrSimpleType.getBaseType()).getVariety() == \
                XSSimpleType.VARIETY_UNION;
                 if (assertImpl.getVariety() == \
                XSSimpleTypeDefinition.VARIETY_ATOMIC) {
                     // evaluating assertions for "simpleType -> restriction" (not \
                derived by union)
-                    setTypedValueFor$value(value, null, assertSimpleType, false);
+                    setTypedValueFor$value(value, null, attrSimpleType, false);
                     AssertionError assertError = evaluateOneAssertion(element, \
assertImpl, value, xpathContextExists, false);  if (assertError != null) {
                         reportAssertionsError(assertError);    
                     }
                 }
                 else if (assertImpl.getVariety() == \
                XSSimpleTypeDefinition.VARIETY_LIST) {
-                    // evaluating assertions for "simpleType -> list"
-                    final boolean isTypeDerivedFromList = ((XSSimpleType) \
                assertSimpleType.getBaseType()).getVariety() == \
                XSSimpleType.VARIETY_LIST;
-                    evaluateAssertionOnSTListValue(element, value, assertImpl, \
xpathContextExists, assertSimpleType, isTypeDerivedFromList); +                    // \
evaluating assertions for "simpleType -> list"                     +                  \
evaluateAssertionOnSTListValue(element, value, assertImpl, xpathContextExists, \
attrSimpleType, isTypeDerivedFromList);  }
                 else {
-                    // evaluating assertions for "simpleType -> union"
-                    final boolean isTypeDerivedFromUnion = ((XSSimpleType) \
                assertSimpleType.getBaseType()).getVariety() == \
                XSSimpleType.VARIETY_UNION;
-                    evaluateAssertionOnSTUnion(element, \
assertSimpleType.getMemberTypes(), isTypeDerivedFromUnion, assertImpl, value); +      \
// evaluating assertions for "simpleType -> union"                     +              \
evaluateAssertionOnSTUnion(element, attrSimpleType.getMemberTypes(), \
isTypeDerivedFromUnion, assertImpl, value); +                }                
+                // evaluate assertions on itemType of xs:list
+                XSSimpleTypeDefinition attrItemType = attrSimpleType.getItemType();
+                if (isTypeDerivedFromList && attrItemType != null) {
+                    evaluateAssertsFromItemTypeOfSTList(element, attrItemType, \
value);  }
             }
             else {
@@ -354,6 +358,7 @@ public class XMLAssertPsychopathXPath2Im
                 }  
             }
         }
+       
         
     } // evaluateAssertionsFromAComplexType
 
@@ -374,10 +379,11 @@ public class XMLAssertPsychopathXPath2Im
             }
         }
         
+        final boolean isTypeDerivedFromList = ((XSSimpleType) \
elemPSVI.getTypeDefinition().getBaseType()).getVariety() == \
XSSimpleType.VARIETY_LIST; +        final boolean isTypeDerivedFromUnion = \
((XSSimpleType) elemPSVI.getTypeDefinition().getBaseType()).getVariety() == \
XSSimpleType.VARIETY_UNION;  // process assertions from a simple type definition      \
  Vector assertList = (Vector) assertions;
-        final int assertListLength = assertList.size();
-        
+        final int assertListLength = assertList.size();        
         for (int assertIdx = 0; assertIdx < assertListLength; assertIdx++) {
             XSAssertImpl assertImpl = (XSAssertImpl) assertList.get(assertIdx);
             String xPathDefaultNamespace = assertImpl.getXPathDefaultNamespace(); 
@@ -393,33 +399,64 @@ public class XMLAssertPsychopathXPath2Im
                 }    
             }
             else if (itemType != null) {
-               // evaluating assertions for "simpleType -> list"
-               final boolean isTypeDerivedFromList = ((XSSimpleType) \
elemPSVI.getTypeDefinition().getBaseType()).getVariety() == \
XSSimpleType.VARIETY_LIST; +               // evaluating assertions for "simpleType \
                -> list"               
                evaluateAssertionOnSTListValue(element, value, assertImpl, false, \
itemType, isTypeDerivedFromList);  }            
             else {
-               // evaluating assertions for "simpleType -> union"
-               final boolean isTypeDerivedFromUnion = ((XSSimpleType) \
elemPSVI.getTypeDefinition().getBaseType()).getVariety() == \
XSSimpleType.VARIETY_UNION; +               // evaluating assertions for "simpleType \
                -> union"               
                evaluateAssertionOnSTUnion(element, memberTypes, \
isTypeDerivedFromUnion, assertImpl, value);  }
         }
         
+        // evaluate assertions on itemType of xs:list
+        if (isTypeDerivedFromList && itemType != null) {
+            evaluateAssertsFromItemTypeOfSTList(element, itemType, value); 
+        }
+        
     } // evaluateAssertionsFromASimpleType
     
     
     /*
+     * Evaluate assertions from itemType (having variety 'atomic') of xs:list. This \
method is used to evaluate assertions from elements +     * with simple content, and \
simpleType definitions from attributes. +     */
+    private void evaluateAssertsFromItemTypeOfSTList(QName element, \
XSSimpleTypeDefinition listItemType, String value) throws Exception{ +        
+        Vector itemTypeAsserts = \
XSTypeHelper.getAssertsFromSimpleType(listItemType); +        if \
(listItemType.getVariety() ==  XSSimpleTypeDefinition.VARIETY_ATOMIC && \
itemTypeAsserts.size() > 0) { +            for (int assertIdx = 0; assertIdx < \
itemTypeAsserts.size(); assertIdx++) { +                XSAssertImpl itemTypeAssert = \
(XSAssertImpl) itemTypeAsserts.get(assertIdx); +                StringTokenizer \
listStrTokens = new StringTokenizer(value, " \n\t\r"); +                while \
(listStrTokens.hasMoreTokens()) { +                    String listItemStrValue = \
listStrTokens.nextToken(); +                    \
setValueOf$valueForSTVarietyList(listItemStrValue, listItemType, false);              \
 +                    AssertionError assertError = evaluateOneAssertion(element, \
itemTypeAssert, listItemStrValue, false, true);                         +             \
if (assertError != null) { +                        \
assertError.setIsTypeDerivedFromList(false); +                        \
reportAssertionsError(assertError);     +                    }
+                }
+            }
+        }
+        
+    } // evaluateAssertsFromItemTypeOfSTList
+    
+    
+    /*
      * Evaluate assertion on a simpleType xs:list value.
      */
     private void evaluateAssertionOnSTListValue(QName element, String listStrValue, \
                XSAssertImpl assertImpl, boolean xpathContextExists,
                                                 XSSimpleTypeDefinition itemType, \
boolean isTypeDerivedFromList) throws Exception {  
+        AssertionError assertError = null;
+        
         if (isTypeDerivedFromList) {
             setValueOf$valueForSTVarietyList(listStrValue, itemType, \
                isTypeDerivedFromList);
-            AssertionError assertError = evaluateOneAssertion(element, assertImpl, \
listStrValue, xpathContextExists, true); +            assertError = \
evaluateOneAssertion(element, assertImpl, listStrValue, xpathContextExists, true);  \
                if (assertError != null) {
                 assertError.setIsTypeDerivedFromList(isTypeDerivedFromList);
                 reportAssertionsError(assertError);    
-            }
+            }            
         }
         else {
             // evaluate assertion on all of list items
@@ -428,7 +465,7 @@ public class XMLAssertPsychopathXPath2Im
             while (listStrTokens.hasMoreTokens()) {
                 String listItemStrValue = listStrTokens.nextToken();
                 setValueOf$valueForSTVarietyList(listItemStrValue, itemType, \
                isTypeDerivedFromList);                        
-                AssertionError assertError = evaluateOneAssertion(element, \
assertImpl, listItemStrValue, xpathContextExists, true); +                assertError \
= evaluateOneAssertion(element, assertImpl, listItemStrValue, xpathContextExists, \
true);  if (assertError != null) {
                     reportAssertionsError(assertError);    
                 }
@@ -660,20 +697,19 @@ public class XMLAssertPsychopathXPath2Im
     
     
     /*
-     * Set a typed value of XPath2 context variable $value if an atomic value on \
                which assertion is been evaluated, is an item
-     * of schema component xs:list.
+     * Set a typed value of XPath2 context variable $value, if the simpleType \
                context is xs:list.
      */
-    private void setValueOf$valueForSTVarietyList(String listItemStrValue, \
XSSimpleTypeDefinition itemType, boolean isTypeDerivedFromList) throws Exception { +  \
private void setValueOf$valueForSTVarietyList(String listStrValue, \
XSSimpleTypeDefinition itemType, boolean isTypeDerivedFromList) throws Exception {  
         XSObjectList memberTypes = itemType.getMemberTypes();
         if (memberTypes.getLength() > 0) {
             // the list's item type has variety 'union'
-            XSSimpleTypeDefinition actualListItemType = \
getActualListItemTypeForVarietyUnion(memberTypes, listItemStrValue); +            \
XSSimpleTypeDefinition actualListItemType = \
getActualListItemTypeForVarietyUnion(memberTypes, listStrValue);  // set a schema \
                'typed value' to variable $value
-            setTypedValueFor$value(listItemStrValue, actualListItemType, null, \
false); +            setTypedValueFor$value(listStrValue, actualListItemType, null, \
false);  } 
         else {
-            setTypedValueFor$value(listItemStrValue, itemType, null, \
isTypeDerivedFromList);  +            setTypedValueFor$value(listStrValue, itemType, \
null, isTypeDerivedFromList);   }
 
     } // setValueOf$valueForSTVarietyList

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apac \
he/xerces/impl/xs/XSDAssertionValidator.java?rev=1074003&r1=1074002&r2=1074003&view=diff
 ==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XSDAssertionValidator.java \
Thu Feb 24 01:03:35 2011 @@ -27,6 +27,7 @@ import org.apache.xerces.impl.xs.asserti
 import org.apache.xerces.impl.xs.assertion.XSAssert;
 import org.apache.xerces.impl.xs.assertion.XSAssertImpl;
 import org.apache.xerces.impl.xs.util.XSObjectListImpl;
+import org.apache.xerces.impl.xs.util.XSTypeHelper;
 import org.apache.xerces.util.AugmentationsImpl;
 import org.apache.xerces.util.NamespaceSupport;
 import org.apache.xerces.xni.Augmentations;
@@ -152,18 +153,17 @@ public class XSDAssertionValidator {
         
        XSTypeDefinition typeDef = \
xmlSchemaValidator.fCurrentPSVI.getTypeDefinition();  
-       List assertionList = null;
-            
+       List assertionList = null;            
        if (typeDef.getTypeCategory() == XSTypeDefinition.COMPLEX_TYPE) {
            // if element's schema type is a "complex type"               
-           XSObjectListImpl complexTypeAsserts = getAssertsFromComplexType(typeDef, \
attributes); +           XSObjectListImpl complexTypeAsserts = \
getAssertsFromComplexType((XSComplexTypeDefinition) typeDef, attributes);  if \
(complexTypeAsserts.size() > 0) {  assertionList = complexTypeAsserts;             
            }
        }
        else if (typeDef.getTypeCategory() == XSTypeDefinition.SIMPLE_TYPE) {
            // if element's schema type is a "simple type"
-           assertionList = getAssertsFromSimpleType(typeDef);            
+           assertionList = getAssertsFromSimpleType((XSSimpleTypeDefinition) \
typeDef);              }
                
        return assertionList;
@@ -174,32 +174,24 @@ public class XSDAssertionValidator {
     /*
      * Accumulate assertions from a complex type.
      */
-    private XSObjectListImpl getAssertsFromComplexType(XSTypeDefinition typeDef, \
XMLAttributes attributes) { +    private XSObjectListImpl \
getAssertsFromComplexType(XSComplexTypeDefinition complexTypeDef, XMLAttributes \
attributes) {  
         XSObjectListImpl complexTypeAsserts = new XSObjectListImpl();
 
-        XSComplexTypeDefinition complexTypeDef = (XSComplexTypeDefinition) typeDef;
-
         XSObjectList primaryAssertions = complexTypeDef.getAssertions();
         if (primaryAssertions.getLength() > 0) {
-            for (int i = 0; i < primaryAssertions.getLength(); i++) {
-                complexTypeAsserts.addXSObject((XSAssert) primaryAssertions.get(i));
+            for (int assertIdx = 0; assertIdx < primaryAssertions.getLength(); \
assertIdx++) { +                complexTypeAsserts.addXSObject((XSAssert) \
primaryAssertions.get(assertIdx));  }
         }
 
         // add assertion facets from "complexType -> simpleContent -> restriction"
         XSSimpleTypeDefinition simpleContentType = complexTypeDef.getSimpleType();
-        if (simpleContentType != null) {
-            XSObjectList complexTypeFacets = \
                simpleContentType.getMultiValueFacets();
-            for (int i = 0; i < complexTypeFacets.getLength(); i++) {
-                XSMultiValueFacet facet = (XSMultiValueFacet) \
                complexTypeFacets.item(i);
-                if (facet.getFacetKind() == XSSimpleTypeDefinition.FACET_ASSERT) {
-                    Vector simpleContentAsserts = facet.getAsserts();
-                    for (int simpleAssertIdx = 0; simpleAssertIdx < \
                simpleContentAsserts.size(); simpleAssertIdx++) {
-                        XSAssert simpleContentAssert = (XSAssert) \
                simpleContentAsserts.get(simpleAssertIdx);
-                        complexTypeAsserts.addXSObject(simpleContentAssert);
-                    }
-                }
+        if (simpleContentType != null) {            
+            Vector simpleContentAsserts = \
XSTypeHelper.getAssertsFromSimpleType(simpleContentType); +            for (int \
assertIdx = 0; assertIdx < simpleContentAsserts.size(); assertIdx++) { +              \
XSAssert simpleContentAssert = (XSAssert) simpleContentAsserts.get(assertIdx); +      \
complexTypeAsserts.addXSObject(simpleContentAssert);  }
         }
 
@@ -227,19 +219,19 @@ public class XSDAssertionValidator {
             XSSimpleTypeDefinition attrType = (XSSimpleTypeDefinition) \
attrPSVI.getTypeDefinition();  if (attrType != null) {
                 // this accumulates assertions only for "simpleType -> restriction"
-                XSObjectList facets = attrType.getMultiValueFacets();
-
+                XSObjectList facetList = attrType.getMultiValueFacets();
                 // simpleType variety is 'unknown/absent' at the moment              \
                
                 short attrTypeVariety = XSSimpleTypeDefinition.VARIETY_ABSENT;
-
-                if (facets.getLength() == 0 && attrType.getItemType() != null) {
+                if (attrType.getItemType() != null) {
                     // facets for "simpleType -> list"
                     attrTypeVariety = XSSimpleTypeDefinition.VARIETY_LIST;
-                    facets = (XSObjectListImpl) \
attrType.getItemType().getMultiValueFacets();     +                    if \
(facetList.getLength() == 0) { +                       facetList = (XSObjectListImpl) \
attrType.getItemType().getMultiValueFacets();   +                    }
                 }
                 else if (attrType.getVariety() == \
                XSSimpleTypeDefinition.VARIETY_UNION) {
                     attrTypeVariety = XSSimpleTypeDefinition.VARIETY_UNION;
-                    // Special handling for assertions on "simpleType -> union" \
cases. Adding an assertion here, +                    // Special handling for \
                assertions on "simpleType -> union" cases. Adding an assertion here
                     // for determining the XSModel NamespaceContext. This particular \
                assertion object is not 
                     // actually evaluated. For simpleType's with variety union, \
                assertions are later again determined 
                     // in XMLAssertPsychopathImpl, which are evaluated to determine \
validity of an XML instance.                @@ -256,10 +248,9 @@ public class \
                XSDAssertionValidator {
                     attrTypeVariety = XSSimpleTypeDefinition.VARIETY_ATOMIC;   
                 }
 
-                // iterate all the schema facets for attributes having the \
                simpleType variety "atomic | list", and
-                // accumulate assertions from them.
-                for (int facetIdx = 0; facetIdx < facets.getLength(); facetIdx++) {
-                    XSMultiValueFacet facet = (XSMultiValueFacet) \
facets.item(facetIdx); +                // iterate all the schema facets for \
attributes having the simpleType variety "atomic | list", and accumulate assertions \
from them +                for (int facetIdx = 0; facetIdx < facetList.getLength(); \
facetIdx++) { +                    XSMultiValueFacet facet = (XSMultiValueFacet) \
                facetList.item(facetIdx);
                     if (facet.getFacetKind() == XSSimpleTypeDefinition.FACET_ASSERT) \
{  Vector attrAsserts = facet.getAsserts();
                         for (int assertIdx = 0; assertIdx < attrAsserts.size(); \
assertIdx++) {                              @@ -273,8 +264,7 @@ public class \
                XSDAssertionValidator {
                             \
                attrAssert.setAttrName(attributes.getLocalName(attrIndx));
                             attrAssert.setAttrValue(attributes.getValue(attrIndx));  \
  attrAssertList.addXSObject(attrAssert);
-                        }
-                        // break from the for loop
+                        }                        
                         break;
                     }
                 }                
@@ -289,21 +279,17 @@ public class XSDAssertionValidator {
     /*
      * Get assertions from a simpleType.
      */
-    private List getAssertsFromSimpleType(XSTypeDefinition typeDef) {
+    private List getAssertsFromSimpleType(XSSimpleTypeDefinition simpleTypeDef) {
         
         List simpleTypeAsserts = null;
-
-        XSSimpleTypeDefinition simpleTypeDef = (XSSimpleTypeDefinition) typeDef;     \
                
-
-        XSObjectListImpl facets = (XSObjectListImpl) \
                simpleTypeDef.getMultiValueFacets();
-
-        if (facets.getLength() == 0 && simpleTypeDef.getItemType() != null) {
+                   
+        XSObjectListImpl facetList = (XSObjectListImpl) \
simpleTypeDef.getMultiValueFacets(); +        if (facetList.getLength() == 0 && \
simpleTypeDef.getItemType() != null) {  // facets for "simpleType -> list"
-            facets = (XSObjectListImpl) \
simpleTypeDef.getItemType().getMultiValueFacets();     +            facetList = \
(XSObjectListImpl) simpleTypeDef.getItemType().getMultiValueFacets();      }
         else if (simpleTypeDef.getVariety() == XSSimpleTypeDefinition.VARIETY_UNION) \
                {
-            // Special handling for assertions on "simpleType -> union" cases. \
                Adding an assertion here,
-            // for determining the NamespaceContext.
+            // special handling for assertions on "simpleType -> union" cases. \
                Adding an assertion here, for determining the NamespaceContext
             XSAssertImpl assertImpl = \
getFirstAssertFromUnionMemberTypes(simpleTypeDef.getMemberTypes());  if (assertImpl \
!= null) {  simpleTypeAsserts = new Vector();
@@ -311,10 +297,9 @@ public class XSDAssertionValidator {
             }
         }
 
-        // iterate all the schema facets having the simpleType variety "atomic | \
                list", and accumulate assertions
-        // from them.
-        for (int facetIdx = 0; facetIdx < facets.getLength(); facetIdx++) {
-            XSMultiValueFacet facet = (XSMultiValueFacet) facets.item(facetIdx);
+        // iterate all the schema facets having the simpleType variety "atomic | \
list", and accumulate assertions from them +        for (int facetIdx = 0; facetIdx < \
facetList.getLength(); facetIdx++) { +            XSMultiValueFacet facet = \
                (XSMultiValueFacet) facetList.item(facetIdx);
             if (facet.getFacetKind() == XSSimpleTypeDefinition.FACET_ASSERT) {
                 if (simpleTypeAsserts == null) {
                     simpleTypeAsserts = new Vector();   
@@ -332,28 +317,18 @@ public class XSDAssertionValidator {
      * Get the 1st assertion from the member types of simpleType having variety \
                union. Needed to get an schema
      * "namespace context" which is available for example, in the 1st assertion in \
                the assertions list.
      */
-    private XSAssertImpl getFirstAssertFromUnionMemberTypes(XSObjectList \
memberTypes) { +    private XSAssertImpl \
getFirstAssertFromUnionMemberTypes(XSObjectList unionMemberTypes) {  
-        XSAssertImpl assertImpl = null;
+         XSAssertImpl assertImpl = null;
         
-        for (int memberTypeIdx = 0; memberTypeIdx < memberTypes.getLength(); \
                memberTypeIdx++) {
-            boolean isAssertFound = false;
-            XSSimpleTypeDefinition memType = (XSSimpleTypeDefinition) \
                memberTypes.item(memberTypeIdx);
-            if (!SchemaSymbols.URI_SCHEMAFORSCHEMA.equals(memType.getNamespace())) {
-                XSObjectList memberTypeFacets = memType.getMultiValueFacets();
-                for (int memberTypeFacetIdx = 0; memberTypeFacetIdx < \
                memberTypeFacets.getLength(); memberTypeFacetIdx++) {
-                    XSMultiValueFacet facet = (XSMultiValueFacet) \
                memberTypeFacets.item(memberTypeFacetIdx);
-                    if (facet.getFacetKind() == XSSimpleTypeDefinition.FACET_ASSERT) \
                {
-                        Vector assertFacets = facet.getAsserts();
-                        assertImpl = (XSAssertImpl) assertFacets.get(0);             \
                
-                        // return the 1st assertion that's found
-                        isAssertFound = true;
-                        break;
-                    }
-                 }
-             }
-             if (isAssertFound) {
-                break;  
+         for (int memberTypeIdx = 0; memberTypeIdx < unionMemberTypes.getLength(); \
memberTypeIdx++) { +             XSSimpleTypeDefinition unionMemberType = \
(XSSimpleTypeDefinition) unionMemberTypes.item(memberTypeIdx); +             if \
(!SchemaSymbols.URI_SCHEMAFORSCHEMA.equals(unionMemberType.getNamespace())) { +       \
Vector memberTypeAsserts = XSTypeHelper.getAssertsFromSimpleType(unionMemberType); +  \
if (memberTypeAsserts.size() > 0) { +                   assertImpl = (XSAssertImpl) \
memberTypeAsserts.get(0); +                   break;
+                }                
              }
          }
         

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java
                
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apac \
he/xerces/impl/xs/util/XSTypeHelper.java?rev=1074003&r1=1074002&r2=1074003&view=diff \
                ==============================================================================
                
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java \
                (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/util/XSTypeHelper.java \
Thu Feb 24 01:03:35 2011 @@ -17,6 +17,8 @@
 
 package org.apache.xerces.impl.xs.util;
 
+import java.util.Vector;
+
 import org.apache.xerces.impl.XMLErrorReporter;
 import org.apache.xerces.impl.dv.InvalidDatatypeValueException;
 import org.apache.xerces.impl.dv.ValidatedInfo;
@@ -27,7 +29,9 @@ import org.apache.xerces.impl.xs.SchemaS
 import org.apache.xerces.impl.xs.XSMessageFormatter;
 import org.apache.xerces.util.XMLChar;
 import org.apache.xerces.xni.NamespaceContext;
+import org.apache.xerces.xs.XSMultiValueFacet;
 import org.apache.xerces.xs.XSObjectList;
+import org.apache.xerces.xs.XSSimpleTypeDefinition;
 import org.apache.xerces.xs.XSTypeDefinition;
 
 /**
@@ -63,8 +67,7 @@ public class XSTypeHelper {
             if (isURIEqual(typeDefn1.getNamespace(), typeDefn2.getNamespace())) {
                 // if targetNamespace of types are same, then check for  equality of \
type names and of the base type  if ((type1Name == null && type2Name == null) ||
-                    (type1Name != null && type1Name.equals(type2Name))
-                          && (isSchemaTypesIdentical(typeDefn1.getBaseType(), \
typeDefn2.getBaseType()))) { +                    (type1Name != null && \
type1Name.equals(type2Name)) && (isSchemaTypesIdentical(typeDefn1.getBaseType(), \
typeDefn2.getBaseType()))) {  typesIdentical = true;   
                 }
             }
@@ -74,12 +77,14 @@ public class XSTypeHelper {
         
     } // isSchemaTypesIdentical
     
+    
     /*
      * Check if two URI values are equal.
      */
     public static boolean isURIEqual(String uri1, String uri2) {
         return (uri1 == uri2 || (uri1 != null && uri1.equals(uri2)));
-    } // isURIEqual   
+    } // isURIEqual  
+    
     
     /*
      * Determine if an atomic value is valid with respect to any of the union's \
member types (those that are in XML Schema namespace).  @@ -166,4 +171,24 @@ public \
class XSTypeHelper {  
     } // validateQNameValue
     
+    
+    /*
+     * Get assertions list of a simpleType definition.
+     */
+    public static Vector getAssertsFromSimpleType(XSSimpleTypeDefinition simplType) \
{ +
+        Vector simpleTypeAsserts = new Vector();
+        
+        XSObjectListImpl facetList = (XSObjectListImpl) \
simplType.getMultiValueFacets();          +        for (int facetIdx = 0; facetIdx < \
facetList.getLength(); facetIdx++) { +            XSMultiValueFacet facet = \
(XSMultiValueFacet) facetList.item(facetIdx); +            if (facet.getFacetKind() \
== XSSimpleTypeDefinition.FACET_ASSERT) { +                simpleTypeAsserts = \
facet.getAsserts(); +            }
+        }
+        
+        return simpleTypeAsserts;
+        
+    } // getAssertsFromSimpleType
+    
 } // class XSTypeHelper



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic