You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ra...@apache.org on 2006/03/31 01:06:54 UTC

svn commit: r390274 - in /xmlbeans/trunk/src: typeimpl/org/apache/xmlbeans/impl/schema/StscChecker.java typeimpl/org/apache/xmlbeans/impl/values/XmlObjectBase.java xmlpublic/org/apache/xmlbeans/XmlOptions.java

Author: radup
Date: Thu Mar 30 15:06:52 2006
New Revision: 390274

URL: http://svn.apache.org/viewcvs?rev=390274&view=rev
Log:
Fix for JIRA issue XMLBEANS-251.

Modified:
    xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscChecker.java
    xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/values/XmlObjectBase.java
    xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlOptions.java

Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscChecker.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscChecker.java?rev=390274&r1=390273&r2=390274&view=diff
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscChecker.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/schema/StscChecker.java Thu Mar 30 15:06:52 2006
@@ -19,6 +19,7 @@
 import org.apache.xmlbeans.SchemaParticle;
 import org.apache.xmlbeans.XmlError;
 import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlOptions;
 import org.apache.xmlbeans.SchemaLocalElement;
 import org.apache.xmlbeans.SchemaIdentityConstraint;
 import org.apache.xmlbeans.SchemaAttributeModel;
@@ -175,7 +176,9 @@
                         try
                         {
                             XmlAnySimpleType val = model.getDefaultValue();
-                            if (!val.validate())
+                            XmlOptions opt = new XmlOptions();
+                            opt.put(XmlOptions.VALIDATE_TEXT_ONLY);
+                            if (!val.validate(opt))
                                 throw new Exception();
 
                             SchemaPropertyImpl sProp = (SchemaPropertyImpl)parentType.getElementProperty(model.getName());
@@ -279,7 +282,7 @@
                     switch (baseType.getContentType())
                     {
                         case SchemaType.SIMPLE_CONTENT:
-                            // 5.1.1 The {content type} of the {base type definition} must be a simple type definition of which the {content type} is a ·valid restriction· as defined in Derivation Valid (Restriction, Simple) (§3.14.6).
+                            // 5.1.1 The {content type} of the {base type definition} must be a simple type definition of which the {content type} is a �valid restriction� as defined in Derivation Valid (Restriction, Simple) (�3.14.6).
                             SchemaType cType = sType.getContentBasedOnType();
                             if (cType != baseType)
                             {
@@ -298,7 +301,7 @@
                             break;
                             
                         case SchemaType.MIXED_CONTENT:
-                            // 5.1.2 The {base type definition} must be mixed and have a particle which is ·emptiable· as defined in Particle Emptiable (§3.9.6).
+                            // 5.1.2 The {base type definition} must be mixed and have a particle which is �emptiable� as defined in Particle Emptiable (�3.9.6).
                             if (baseType.getContentModel() != null && !baseType.getContentModel().isSkippable())
                             {
                                 state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$SC_AND_MIXED_EMPTIABLE,
@@ -323,7 +326,7 @@
                             break;
                         case SchemaType.MIXED_CONTENT:
                         case SchemaType.ELEMENT_CONTENT:
-                            // 5.2.2 The {content type} of the {base type definition} must be elementOnly or mixed and have a particle which is ·emptiable· as defined in Particle Emptiable (§3.9.6).
+                            // 5.2.2 The {content type} of the {base type definition} must be elementOnly or mixed and have a particle which is �emptiable� as defined in Particle Emptiable (�3.9.6).
                             if (baseType.getContentModel() != null && !baseType.getContentModel().isSkippable())
                             {
                                 state.error(XmlErrorCodes.COMPLEX_TYPE_RESTRICTION$EMPTY_AND_ELEMENT_OR_MIXED_EMPTIABLE,
@@ -363,7 +366,7 @@
                         return false;
                     }
                     
-                    // 5.3 ... then the particle of the complex type definition itself must be a ·valid restriction· of the particle of the {content type} of the {base type definition}
+                    // 5.3 ... then the particle of the complex type definition itself must be a �valid restriction� of the particle of the {content type} of the {base type definition}
                     SchemaParticle baseModel = baseType.getContentModel();
                     SchemaParticle derivedModel = sType.getContentModel();
                     assert(baseModel != null && derivedModel != null);
@@ -374,7 +377,7 @@
                         return false;
                     }
                     
-                    // 5.3 ...  as defined in Particle Valid (Restriction) (§3.9.6).
+                    // 5.3 ...  as defined in Particle Valid (Restriction) (�3.9.6).
                     List errors = new ArrayList();
                     boolean isValid = isParticleValidRestriction(baseModel, derivedModel, errors, location);
                     if (!isValid)
@@ -555,15 +558,15 @@
         assert derivedModel.getParticleType() == SchemaParticle.SEQUENCE;
         boolean mapAndSumValid = true;
         // Schema Component Constraint: Particle Derivation OK (Sequence:Choice -- MapAndSum)
-        // For a sequence group particle to be a ·valid restriction· of a choice group particle all of the following
+        // For a sequence group particle to be a �valid restriction� of a choice group particle all of the following
         // must be true:
         // 1 There is a complete functional mapping from the particles in the {particles} of R to the particles in the
-        // {particles} of B such that each particle in the {particles} of R is a ·valid restriction· of the particle in
-        // the {particles} of B it maps to as defined by Particle Valid (Restriction) (§3.9.6).
+        // {particles} of B such that each particle in the {particles} of R is a �valid restriction� of the particle in
+        // the {particles} of B it maps to as defined by Particle Valid (Restriction) (�3.9.6).
         // interpretation:  each particle child in derived should have a match in base.
         // 2 The pair consisting of the product of the {min occurs} of R and the length of its {particles} and unbounded
         // if {max occurs} is unbounded otherwise the product of the {max occurs} of R and the length of its {particles}
-        // is a valid restriction of B's occurrence range as defined by Occurrence Range OK (§3.9.6).
+        // is a valid restriction of B's occurrence range as defined by Occurrence Range OK (�3.9.6).
         // NOTE: This clause is in principle more restrictive than absolutely necessary, but in practice will cover
         // all the likely cases, and is much easier to specify than the fully general version.
         // NOTE: This case allows the "unfolding" of iterated disjunctions into sequences. It may be particularly useful
@@ -639,12 +642,12 @@
                 || (baseModel.getParticleType() == SchemaParticle.SEQUENCE && derivedModel.getParticleType() == SchemaParticle.ELEMENT);
         // Schema Component Constraint: Particle Derivation OK (Elt:All/Choice/Sequence -- RecurseAsIfGroup)
 
-        // For an element declaration particle to be a ·valid restriction· of a group particle
+        // For an element declaration particle to be a �valid restriction� of a group particle
         // (all, choice or sequence) a group particle of the variety corresponding to B's, with {min occurs} and
         // {max occurs} of 1 and with {particles} consisting of a single particle the same as the element declaration
-        // must be a ·valid restriction· of the group as defined by Particle Derivation OK
-        // (All:All,Sequence:Sequence -- Recurse) (§3.9.6), Particle Derivation OK (Choice:Choice -- RecurseLax)
-        // (§3.9.6) or Particle Derivation OK (All:All,Sequence:Sequence -- Recurse) (§3.9.6), depending on whether
+        // must be a �valid restriction� of the group as defined by Particle Derivation OK
+        // (All:All,Sequence:Sequence -- Recurse) (�3.9.6), Particle Derivation OK (Choice:Choice -- RecurseLax)
+        // (�3.9.6) or Particle Derivation OK (All:All,Sequence:Sequence -- Recurse) (�3.9.6), depending on whether
         // the group is all, choice or sequence
 
         // interpretation:  make a fake group of the right type, with min occurs and max occurs of 1
@@ -663,15 +666,15 @@
         assert baseModel.getParticleType() == SchemaParticle.CHOICE && derivedModel.getParticleType() == SchemaParticle.CHOICE;
         boolean recurseLaxValid = true;
         //Schema Component Constraint: Particle Derivation OK (Choice:Choice -- RecurseLax)
-        // For a choice group particle to be a ·valid restriction· of another choice group particle all of the
+        // For a choice group particle to be a �valid restriction� of another choice group particle all of the
         // following must be true:
         // 1 R's occurrence range is a valid restriction of B's occurrence range as defined by Occurrence
-        // Range OK (§3.9.6);
-        // 2 There is a complete ·order-preserving· functional mapping from the particles in the {particles} of R
+        // Range OK (�3.9.6);
+        // 2 There is a complete �order-preserving� functional mapping from the particles in the {particles} of R
         // to the particles in the {particles} of B such that each particle in the {particles} of R is a
-        // ·valid restriction· of the particle in the {particles} of B it maps to as defined by
-        // Particle Valid (Restriction) (§3.9.6).
-        // NOTE: Although the ·validation· semantics of a choice group does not depend on the order of its particles,
+        // �valid restriction� of the particle in the {particles} of B it maps to as defined by
+        // Particle Valid (Restriction) (�3.9.6).
+        // NOTE: Although the �validation� semantics of a choice group does not depend on the order of its particles,
         // derived choice groups are required to match the order of their base in order to simplify
         // checking that the derivation is OK.
         // interpretation:  check derived choices for match in order, must get an in order match on a base particle,
@@ -722,18 +725,18 @@
         assert baseModel.getParticleType() == SchemaParticle.ALL && derivedModel.getParticleType() == SchemaParticle.SEQUENCE;
         boolean recurseUnorderedValid = true;
         // Schema Component Constraint: Particle Derivation OK (Sequence:All -- RecurseUnordered)
-        // For a sequence group particle to be a ·valid restriction· of an all group particle all of the
+        // For a sequence group particle to be a �valid restriction� of an all group particle all of the
         // following must be true:
         // 1 R's occurrence range is a valid restriction of B's occurrence range as defined by
-        // Occurrence Range OK (§3.9.6).
+        // Occurrence Range OK (�3.9.6).
         // 2 There is a complete functional mapping from the particles in the {particles} of R to the particles
         // in the {particles} of B such that all of the following must be true:
         // 2.1 No particle in the {particles} of B is mapped to by more than one of the particles in
         // the {particles} of R;
-        // 2.2 Each particle in the {particles} of R is a ·valid restriction· of the particle in the {particles} of B
-        // it maps to as defined by Particle Valid (Restriction) (§3.9.6);
+        // 2.2 Each particle in the {particles} of R is a �valid restriction� of the particle in the {particles} of B
+        // it maps to as defined by Particle Valid (Restriction) (�3.9.6);
         // 2.3 All particles in the {particles} of B which are not mapped to by any particle in the {particles}
-        // of R are ·emptiable· as defined by Particle Emptiable (§3.9.6).
+        // of R are �emptiable� as defined by Particle Emptiable (�3.9.6).
         // NOTE: Although this clause allows reordering, because of the limits on the contents of all groups the
         // checking process can still be deterministic.
         // 1, 2.2, and 2.3 are the same as recurse, so do 2.1 and then call recurse
@@ -812,17 +815,17 @@
     private static boolean recurse(SchemaParticle baseModel, SchemaParticle derivedModel, Collection errors, XmlObject context) {
         // recurse is called when base: ALL derived: ALL or base: SEQUENCE derived: SEQUENCE
         boolean recurseValid = true;
-        // For an all or sequence group particle to be a ·valid restriction· of another group particle with the same
+        // For an all or sequence group particle to be a �valid restriction� of another group particle with the same
         // {compositor} all of the following must be true:
         // 1 R's occurrence range is a valid restriction of B's occurrence range as defined by
-        // Occurrence Range OK (§3.9.6).
-        // 2 There is a complete ·order-preserving· functional mapping from the particles in the {particles} of R to
+        // Occurrence Range OK (�3.9.6).
+        // 2 There is a complete �order-preserving� functional mapping from the particles in the {particles} of R to
         // the particles in the {particles} of B such that all of the following must be true:
-        //   2.1 Each particle in the {particles} of R is a ·valid restriction· of the particle in the {particles}
-        //   of B it maps to as defined by Particle Valid (Restriction) (§3.9.6).
+        //   2.1 Each particle in the {particles} of R is a �valid restriction� of the particle in the {particles}
+        //   of B it maps to as defined by Particle Valid (Restriction) (�3.9.6).
         //   2.2 All particles in the {particles} of B which are not mapped to by any particle in the {particles}
-        //   of R are ·emptiable· as defined by Particle Emptiable (§3.9.6).
-        // NOTE: Although the ·validation· semantics of an all group does not depend on the order of its particles,
+        //   of R are �emptiable� as defined by Particle Emptiable (�3.9.6).
+        // NOTE: Although the �validation� semantics of an all group does not depend on the order of its particles,
         // derived all groups are required to match the order of their base in order to simplify checking that
         // the derivation is OK.
         // [Definition:]  A complete functional mapping is order-preserving if each particle r in the domain R maps
@@ -909,8 +912,8 @@
                 || (derivedModel.getParticleType() == SchemaParticle.CHOICE)
                 || (derivedModel.getParticleType() == SchemaParticle.SEQUENCE);
         boolean nsRecurseCheckCardinality = true;
-        // For a group particle to be a ·valid restriction· of a wildcard particle all of the following must be true:
-        // 1 Every member of the {particles} of the group is a ·valid restriction· of the wildcard as defined by Particle Valid (Restriction) (§3.9.6).
+        // For a group particle to be a �valid restriction� of a wildcard particle all of the following must be true:
+        // 1 Every member of the {particles} of the group is a �valid restriction� of the wildcard as defined by Particle Valid (Restriction) (�3.9.6).
         //  Note:  not positive what this means.  Interpreting to mean that every particle of the group must adhere to wildcard derivation rules
         //         in a recursive manner
         //  Loop thru the children particles of the group and invoke the appropriate function to check for wildcard restriction validity
@@ -953,9 +956,9 @@
             }
         }
 
-        // 2 The effective total range of the group, as defined by Effective Total Range (all and sequence) (§3.8.6)
-        // (if the group is all or sequence) or Effective Total Range (choice) (§3.8.6) (if it is choice) is a valid
-        // restriction of B's occurrence range as defined by Occurrence Range OK (§3.9.6).
+        // 2 The effective total range of the group, as defined by Effective Total Range (all and sequence) (�3.8.6)
+        // (if the group is all or sequence) or Effective Total Range (choice) (�3.8.6) (if it is choice) is a valid
+        // restriction of B's occurrence range as defined by Occurrence Range OK (�3.9.6).
 
         if (nsRecurseCheckCardinality) {
             nsRecurseCheckCardinality = checkGroupOccurrenceOK(baseModel, derivedModel, errors, context);
@@ -1260,11 +1263,11 @@
         assert baseModel.getParticleType() == SchemaParticle.WILDCARD;
         assert derivedModel.getParticleType() == SchemaParticle.WILDCARD;
         boolean nsSubset = false;
-        // For a wildcard particle to be a ·valid restriction· of another wildcard particle all of the following must be true:
-        // 1 R's occurrence range must be a valid restriction of B's occurrence range as defined by Occurrence Range OK (§3.9.6).
+        // For a wildcard particle to be a �valid restriction� of another wildcard particle all of the following must be true:
+        // 1 R's occurrence range must be a valid restriction of B's occurrence range as defined by Occurrence Range OK (�3.9.6).
         if (occurrenceRangeOK(baseModel, derivedModel, errors, context)) {
             // 2 R's {namespace constraint} must be an intensional subset of B's {namespace constraint} as defined
-            // by Wildcard Subset (§3.10.6).
+            // by Wildcard Subset (�3.10.6).
             if (baseModel.getWildcardSet().inverse().isDisjoint(derivedModel.getWildcardSet())) {
                 nsSubset = true;
             } else {
@@ -1286,11 +1289,11 @@
         // nsCompat is called when base: ANY, derived: ELEMENT
         assert baseModel.getParticleType() == SchemaParticle.WILDCARD;
         boolean nsCompat = false;
-        // For an element declaration particle to be a ·valid restriction· of a wildcard particle all of the following must be true:
-        // 1 The element declaration's {target namespace} is ·valid· with respect to the wildcard's {namespace constraint}
-        // as defined by Wildcard allows Namespace Name (§3.10.4).
+        // For an element declaration particle to be a �valid restriction� of a wildcard particle all of the following must be true:
+        // 1 The element declaration's {target namespace} is �valid� with respect to the wildcard's {namespace constraint}
+        // as defined by Wildcard allows Namespace Name (�3.10.4).
         if (baseModel.getWildcardSet().contains(derivedElement.getName())) {
-            // 2 R's occurrence range is a valid restriction of B's occurrence range as defined by Occurrence Range OK (§3.9.6).
+            // 2 R's occurrence range is a valid restriction of B's occurrence range as defined by Occurrence Range OK (�3.9.6).
             if (occurrenceRangeOK(baseModel, (SchemaParticle) derivedElement, errors, context)) {
                 nsCompat = true;
             } else {
@@ -1326,7 +1329,7 @@
             return false;
         }
         
-        // 3 R's occurrence range is a valid restriction of B's occurrence range as defined by Occurrence Range OK (§3.9.6).
+        // 3 R's occurrence range is a valid restriction of B's occurrence range as defined by Occurrence Range OK (�3.9.6).
         if (!occurrenceRangeOK((SchemaParticle) baseElement, (SchemaParticle) derivedElement, errors, context)) {
             // error already produced
             return false;
@@ -1348,7 +1351,7 @@
         }
         
         // 7 R's {type definition} is validly derived given {extension, list, union} from B's {type definition} as
-        // defined by Type Derivation OK (Complex) (§3.4.6) or Type Derivation OK (Simple) (§3.14.6), as appropriate.
+        // defined by Type Derivation OK (Complex) (�3.4.6) or Type Derivation OK (Simple) (�3.14.6), as appropriate.
         if (!typeDerivationOK(baseElement.getType(), derivedElement.getType(), errors, context))
         {
             // error already produced
@@ -1398,10 +1401,10 @@
         // 2.1 B and D must be the same type definition.
         // 2.2 B must be D's {base type definition}.
         // 2.3 All of the following must be true:
-        // 2.3.1 D's {base type definition} must not be the ·ur-type definition·.
+        // 2.3.1 D's {base type definition} must not be the �ur-type definition�.
         // 2.3.2 The appropriate case among the following must be true:
         // 2.3.2.1 If D's {base type definition} is complex, then it must be validly derived from B given the subset as defined by this constraint.
-        // 2.3.2.2 If D's {base type definition} is simple, then it must be validly derived from B given the subset as defined in Type Derivation OK (Simple) (§3.14.6).
+        // 2.3.2.2 If D's {base type definition} is simple, then it must be validly derived from B given the subset as defined in Type Derivation OK (Simple) (�3.14.6).
         //   This line will check if derivedType is a subType of baseType (should handle all of the 2.xx checks above)
         if (baseType.isAssignableFrom(derivedType)) {
             // Ok derived type is subtype but need to make sure that all of the derivations between the two types are by

Modified: xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/values/XmlObjectBase.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/values/XmlObjectBase.java?rev=390274&r1=390273&r2=390274&view=diff
==============================================================================
--- xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/values/XmlObjectBase.java (original)
+++ xmlbeans/trunk/src/typeimpl/org/apache/xmlbeans/impl/values/XmlObjectBase.java Thu Mar 30 15:06:52 2006
@@ -350,7 +350,8 @@
     {
         Collection errorListener = options == null ? null : (Collection)options.get(XmlOptions.ERROR_LISTENER);
         XmlErrorWatcher watcher = new XmlErrorWatcher(errorListener);
-        if (!schemaType().isSimpleType())
+        if (!(schemaType().isSimpleType() || options != null &&
+                options.hasOption(XmlOptions.VALIDATE_TEXT_ONLY)))
         {
             // cannot have any required attributes or elements
             SchemaProperty[] properties = schemaType().getProperties();
@@ -360,9 +361,9 @@
                 {
                     // KHK: error code?
                     if (properties[i].isAttribute())
-                        watcher.add(XmlError.forObject("Missing required attribute " + QNameHelper.pretty(properties[i].getName()), this));
+                        watcher.add(XmlError.forObject(XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$MISSING_REQUIRED_ATTRIBUTE, new Object[]{QNameHelper.pretty(properties[i].getName()), }, this));
                     else
-                        watcher.add(XmlError.forObject("Missing required element " + QNameHelper.pretty(properties[i].getName()), this));
+                        watcher.add(XmlError.forObject(XmlErrorCodes.ELEM_COMPLEX_TYPE_LOCALLY_VALID$MISSING_ELEMENT, new Object[]{properties[i].getMinOccurs(), QNameHelper.pretty(properties[i].getName()), }, this));
                 }
             }
 

Modified: xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlOptions.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlOptions.java?rev=390274&r1=390273&r2=390274&view=diff
==============================================================================
--- xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlOptions.java (original)
+++ xmlbeans/trunk/src/xmlpublic/org/apache/xmlbeans/XmlOptions.java Thu Mar 30 15:06:52 2006
@@ -811,6 +811,8 @@
     /** @exclude */
     public static final String VALIDATE_TREAT_LAX_AS_SKIP      = "VALIDATE_TREAT_LAX_AS_SKIP";
     /** @exclude */
+    public static final String VALIDATE_TEXT_ONLY              = "VALIDATE_TEXT_ONLY";
+    /** @exclude */
     public static final String UNSYNCHRONIZED                  = "UNSYNCHRONIZED";
     /** @exclude */
     public static final String ENTITY_RESOLVER                 = "ENTITY_RESOLVER";



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