xerces-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sandy...@apache.org
Subject svn commit: r1026362 - in /xerces/java/trunk/src/org/apache/xerces/impl/dv: ValidatedInfo.java xs/XSSimpleTypeDecl.java
Date Fri, 22 Oct 2010 15:15:19 GMT
Author: sandygao
Date: Fri Oct 22 15:15:18 2010
New Revision: 1026362

URL: http://svn.apache.org/viewvc?rev=1026362&view=rev
Log:
When evaluating list values, need to set the "actualType" after the list is processed, otherwise
the "actualType" would have the item type, because same ValidatedInfo is used to process both
the list and the items. And when copying an XSValue, need to be careful to only ask for the
memberTypes if the type is a list of union.

Modified:
    xerces/java/trunk/src/org/apache/xerces/impl/dv/ValidatedInfo.java
    xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java

Modified: xerces/java/trunk/src/org/apache/xerces/impl/dv/ValidatedInfo.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/dv/ValidatedInfo.java?rev=1026362&r1=1026361&r2=1026362&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/dv/ValidatedInfo.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/dv/ValidatedInfo.java Fri Oct 22 15:15:18
2010
@@ -219,16 +219,17 @@ public class ValidatedInfo implements XS
             actualValueType = o.getActualValueType();
             actualType = (XSSimpleType)o.getTypeDefinition();
             memberType = (XSSimpleType)o.getMemberTypeDefinition();
-            XSObjectList members = o.getMemberTypeDefinitions();
-            if (members == null || members.getLength() == 0) {
-                memberTypes = null;
-            }
-            else {
+            XSSimpleType realType = memberType == null ? actualType : memberType;
+            if (realType != null && realType.getBuiltInKind() == XSConstants.LISTOFUNION_DT)
{
+                XSObjectList members = o.getMemberTypeDefinitions();
                 memberTypes = new XSSimpleType[members.getLength()];
                 for (int i = 0; i < members.getLength(); i++) {
                     memberTypes[i] = (XSSimpleType)members.get(i);
                 }
             }
+            else {
+                memberTypes = null;
+            }
             itemValueTypes = o.getListValueTypes();
         }
     }

Modified: xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java
URL: http://svn.apache.org/viewvc/xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java?rev=1026362&r1=1026361&r2=1026362&view=diff
==============================================================================
--- xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java (original)
+++ xerces/java/trunk/src/org/apache/xerces/impl/dv/xs/XSSimpleTypeDecl.java Fri Oct 22 15:15:18
2010
@@ -1818,8 +1818,6 @@ public class XSSimpleTypeDecl implements
             ValidatedInfo validatedInfo, boolean needNormalize)
     throws InvalidDatatypeValueException{
 
-        validatedInfo.actualType = this;
-
         String nvalue;
         if (needNormalize) {
             nvalue = normalize(content, fWhiteSpace);
@@ -1868,6 +1866,7 @@ public class XSSimpleTypeDecl implements
             Object avalue = fDVs[fValidationDV].getActualValue(nvalue, context);
             validatedInfo.actualValue = avalue;
             validatedInfo.actualValueType = fBuiltInKind;
+            validatedInfo.actualType = this;
 
             return avalue;
 
@@ -1905,6 +1904,8 @@ public class XSSimpleTypeDecl implements
             validatedInfo.memberTypes = memberTypes;
             validatedInfo.itemValueTypes = new ShortListImpl(itemTypes, itemTypes.length);
             validatedInfo.normalizedValue = nvalue;
+            // Need to set it here or it will become the item type
+            validatedInfo.actualType = this;
 
             return v;
 
@@ -1924,7 +1925,7 @@ public class XSSimpleTypeDecl implements
                         fMemberTypes[i].checkFacets(validatedInfo);
                     }
                     validatedInfo.memberType = fMemberTypes[i];
-                    // Set this again because it was changed to the member type
+                    // Need to set it here or it will become the member type
                     validatedInfo.actualType = this;
                     return aValue;
                 } catch(InvalidDatatypeValueException invalidValue) {



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


Mime
View raw message