You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by sa...@apache.org on 2001/10/29 18:09:51 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/impl/xs/traversers XSDSimpleTypeTraverser.java

sandygao    01/10/29 09:09:51

  Modified:    java/src/org/apache/xerces/impl/xs/traversers
                        XSDSimpleTypeTraverser.java
  Log:
  Need to pass current "grammar" and "schemaDoc" along every method call.
  It's possible that we go to traverse another simpleType when traversing the
  current one, so having global variables fGrammar and fSchemaDoc is not
  correct.
  
  Revision  Changes    Path
  1.2       +17 -23    xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java
  
  Index: XSDSimpleTypeTraverser.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDSimpleTypeTraverser.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XSDSimpleTypeTraverser.java	2001/10/25 20:36:04	1.1
  +++ XSDSimpleTypeTraverser.java	2001/10/29 17:09:50	1.2
  @@ -110,15 +110,13 @@
    * </union>
    *
    * @author Elena Litani, IBM
  - * @version $Id: XSDSimpleTypeTraverser.java,v 1.1 2001/10/25 20:36:04 elena Exp $
  + * @version $Id: XSDSimpleTypeTraverser.java,v 1.2 2001/10/29 17:09:50 sandygao Exp $
    */
   class XSDSimpleTypeTraverser extends XSDAbstractTraverser {
   
       //private data
       private String fListName = "";
   
  -    private XSDocumentInfo fSchemaDoc = null;
  -    private SchemaGrammar fGrammar = null;
       private int fSimpleTypeAnonCount = 0;
       private final QName fQName = new QName();
   
  @@ -132,11 +130,9 @@
                                        XSDocumentInfo schemaDoc,
                                        SchemaGrammar grammar) {
           // General Attribute Checking
  -        fSchemaDoc = schemaDoc;
  -        fGrammar = grammar;
           Object[] attrValues = fAttrChecker.checkAttributes(elmNode, true, schemaDoc);
           String nameAtt = (String)attrValues[XSAttributeChecker.ATTIDX_NAME];
  -        DatatypeValidator type = traverseSimpleTypeDecl(elmNode, attrValues, schemaDoc, true);
  +        DatatypeValidator type = traverseSimpleTypeDecl(elmNode, attrValues, schemaDoc, grammar, true);
           fAttrChecker.returnAttrArray(attrValues, schemaDoc);
   
           return type;
  @@ -145,18 +141,16 @@
       DatatypeValidator traverseLocal(Element elmNode,
                                       XSDocumentInfo schemaDoc,
                                       SchemaGrammar grammar) {
  -        fSchemaDoc = schemaDoc;
  -        fGrammar = grammar;
  -
           Object[] attrValues = fAttrChecker.checkAttributes(elmNode, false, schemaDoc);
  -        DatatypeValidator type = traverseSimpleTypeDecl (elmNode, attrValues, schemaDoc, false);
  +        DatatypeValidator type = traverseSimpleTypeDecl (elmNode, attrValues, schemaDoc, grammar, false);
           fAttrChecker.returnAttrArray(attrValues, schemaDoc);
   
           return type;
       }
   
       private DatatypeValidator traverseSimpleTypeDecl(Element simpleTypeDecl, Object[] attrValues,
  -                                                     XSDocumentInfo schemaDoc, boolean isGlobal) {
  +                                                     XSDocumentInfo schemaDoc,
  +                                                     SchemaGrammar grammar, boolean isGlobal) {
   
           String nameProperty  = (String)attrValues[XSAttributeChecker.ATTIDX_NAME];
           String qualifiedName = nameProperty;
  @@ -165,16 +159,16 @@
           // set qualified name
           //---------------------------------------------------
           if (nameProperty == null) { // anonymous simpleType
  -            qualifiedName = fSchemaDoc.fTargetNamespace == null?
  +            qualifiedName = schemaDoc.fTargetNamespace == null?
                   ",#s#"+(fSimpleTypeAnonCount++):
  -                fSchemaDoc.fTargetNamespace+",#S#"+(fSimpleTypeAnonCount++);
  +                schemaDoc.fTargetNamespace+",#S#"+(fSimpleTypeAnonCount++);
               //REVISIT:
               // add to symbol table?
           }
           else {
  -            qualifiedName = fSchemaDoc.fTargetNamespace == null?
  +            qualifiedName = schemaDoc.fTargetNamespace == null?
                   ","+nameProperty:
  -                fSchemaDoc.fTargetNamespace+","+nameProperty;
  +                schemaDoc.fTargetNamespace+","+nameProperty;
               //REVISIT:
               // add to symbol table?
   
  @@ -280,7 +274,7 @@
                   return null;
               }
               if (DOMUtil.getLocalName(content).equals( SchemaSymbols.ELT_SIMPLETYPE )) {
  -                baseValidator = traverseLocal(content, fSchemaDoc, fGrammar);
  +                baseValidator = traverseLocal(content, schemaDoc, grammar);
                   if (baseValidator != null && union) {
                       dTValidators.addElement((DatatypeValidator)baseValidator);
                   }
  @@ -315,7 +309,7 @@
                   if (union) {
                       baseTypeName = (QName)memberTypes.elementAt(i);
                   }
  -                baseValidator = findDTValidator ( simpleTypeDecl, baseTypeName, baseRefContext);
  +                baseValidator = findDTValidator ( simpleTypeDecl, baseTypeName, baseRefContext, schemaDoc);
                   if (baseValidator == null) {
                       Object[] args = { content.getAttribute( SchemaSymbols.ATT_BASE ), nameProperty};
                       reportSchemaError("dt-unknown-basetype", args);
  @@ -387,7 +381,7 @@
                   }
               }
               while (content!=null) {
  -                baseValidator = traverseLocal(content, fSchemaDoc, fGrammar);
  +                baseValidator = traverseLocal(content, schemaDoc, grammar);
                   if (baseValidator != null) {
                       if (fListName.length() != 0 && baseValidator instanceof ListDatatypeValidator) {
                           reportCosListOfAtomic(nameProperty);
  @@ -412,7 +406,7 @@
               }
           }
           if (restriction && content != null) {
  -            fFacetInfo fi = traverseFacets(content, contentAttrs,nameProperty, baseValidator, schemaDoc, fGrammar);
  +            fFacetInfo fi = traverseFacets(content, contentAttrs,nameProperty, baseValidator, schemaDoc, grammar);
               content = fi.nodeAfterFacets;
               if (content != null) {
                   content = null;
  @@ -460,7 +454,7 @@
               newDV = new UnionDatatypeValidator(dTValidators, fErrorReporter);
           }
   
  -        // don't add global components without name to the grammar 
  +        // don't add global components without name to the grammar
           if (nameProperty == null && isGlobal) {
               return null;
           }
  @@ -468,7 +462,7 @@
           if (newDV != null && isGlobal) {
               newDV.setFinalSet(finalProperty);
               ((AbstractDatatypeValidator)newDV).fLocalName = nameProperty;
  -            fGrammar.addGlobalTypeDecl(newDV);
  +            grammar.addGlobalTypeDecl(newDV);
           }
   
           return newDV;
  @@ -486,7 +480,7 @@
       //return DatatypeValidator available for the baseTypeStr, null if not found or disallowed.
       // also throws an error if the base type won't allow itself to be used in this context.
       // REVISIT: can this code be re-used?
  -    private DatatypeValidator findDTValidator (Element elm, QName baseTypeStr, int baseRefContext ) {
  +    private DatatypeValidator findDTValidator (Element elm, QName baseTypeStr, int baseRefContext, XSDocumentInfo schemaDoc) {
           if (baseTypeStr.uri !=null &&  baseTypeStr.uri.equals(SchemaSymbols.URI_SCHEMAFORSCHEMA) &&
               baseTypeStr.localpart.equals(SchemaSymbols.ATTVAL_ANYSIMPLETYPE) &&
               baseRefContext == SchemaSymbols.RESTRICTION) {
  @@ -496,7 +490,7 @@
               return  (DatatypeValidator)SchemaGrammar.SG_SchemaNS.getGlobalTypeDecl(SchemaSymbols.ATTVAL_STRING);
           }
           DatatypeValidator baseValidator = null;
  -        baseValidator = (DatatypeValidator)fSchemaHandler.getGlobalDecl(fSchemaDoc, fSchemaHandler.TYPEDECL_TYPE, baseTypeStr);
  +        baseValidator = (DatatypeValidator)fSchemaHandler.getGlobalDecl(schemaDoc, fSchemaHandler.TYPEDECL_TYPE, baseTypeStr);
           if (baseValidator != null) {
               if ((baseValidator.getFinalSet() & baseRefContext) != 0) {
                   reportSchemaError("dt-restiction-final",new Object[] { baseTypeStr.rawname} );
  
  
  

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