neilg       2003/07/25 10:24:25

  Modified:    java/src/org/apache/xerces/impl/xs/traversers
                        XSDHandler.java
  Log:
  fix for bug 20892; thanks to Peter McCracken for the report and the fix.
  
  Revision  Changes    Path
  1.73      +54 -50    
xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
  
  Index: XSDHandler.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- XSDHandler.java   3 Jul 2003 15:18:20 -0000       1.72
  +++ XSDHandler.java   25 Jul 2003 17:24:24 -0000      1.73
  @@ -1764,39 +1764,41 @@
                   reportSchemaError("src-redefine.5.a.a", null, child);
               }
               else {
  -                String grandKidName = grandKid.getLocalName();
  +                String grandKidName = DOMUtil.getLocalName(grandKid);
                   if (grandKidName.equals(SchemaSymbols.ELT_ANNOTATION)) {
                       grandKid = DOMUtil.getNextSiblingElement(grandKid);
  -                    grandKidName = grandKid.getLocalName();
                   }
                   if (grandKid == null) {
                       reportSchemaError("src-redefine.5.a.a", null, child);
                   }
  -                else if (!grandKidName.equals(SchemaSymbols.ELT_RESTRICTION)) {
  -                    reportSchemaError("src-redefine.5.a.b", new 
Object[]{grandKidName}, child);
  -                }
                   else {
  -                    Object[] attrs = fAttributeChecker.checkAttributes(grandKid, 
false, currSchema);
  -                    QName derivedBase = 
(QName)attrs[XSAttributeChecker.ATTIDX_BASE];
  -                    if (derivedBase == null ||
  -                        derivedBase.uri != currSchema.fTargetNamespace ||
  -                        !derivedBase.localpart.equals(oldName)) {
  -                        reportSchemaError("src-redefine.5.a.c",
  -                                          new Object[]{grandKidName,
  -                                                       
(currSchema.fTargetNamespace==null?"":currSchema.fTargetNamespace)
  -                                                       + "," + oldName},
  -                                          child);
  +                    grandKidName = DOMUtil.getLocalName(grandKid);
  +                    if (!grandKidName.equals(SchemaSymbols.ELT_RESTRICTION)) {
  +                        reportSchemaError("src-redefine.5.a.b", new 
Object[]{grandKidName}, child);
                       }
                       else {
  -                        // now we have to do the renaming...
  -                        if (derivedBase.prefix != null && 
derivedBase.prefix.length() > 0)
  -                            grandKid.setAttribute( SchemaSymbols.ATT_BASE,
  -                                                   derivedBase.prefix + ":" + 
newName );
  -                        else
  -                            grandKid.setAttribute( SchemaSymbols.ATT_BASE, newName 
);
  -//                        return true;
  +                        Object[] attrs = 
fAttributeChecker.checkAttributes(grandKid, false, currSchema);
  +                        QName derivedBase = 
(QName)attrs[XSAttributeChecker.ATTIDX_BASE];
  +                        if (derivedBase == null ||
  +                            derivedBase.uri != currSchema.fTargetNamespace ||
  +                            !derivedBase.localpart.equals(oldName)) {
  +                            reportSchemaError("src-redefine.5.a.c",
  +                                              new Object[]{grandKidName,
  +                                                           
(currSchema.fTargetNamespace==null?"":currSchema.fTargetNamespace)
  +                                                           + "," + oldName},
  +                                              child);
  +                        }
  +                        else {
  +                            // now we have to do the renaming...
  +                            if (derivedBase.prefix != null && 
derivedBase.prefix.length() > 0)
  +                                grandKid.setAttribute( SchemaSymbols.ATT_BASE,
  +                                                       derivedBase.prefix + ":" + 
newName );
  +                            else
  +                                grandKid.setAttribute( SchemaSymbols.ATT_BASE, 
newName );
  +//                            return true;
  +                        }
  +                        fAttributeChecker.returnAttrArray(attrs, currSchema);
                       }
  -                    fAttributeChecker.returnAttrArray(attrs, currSchema);
                   }
               }
           }
  @@ -1806,7 +1808,7 @@
                   reportSchemaError("src-redefine.5.b.a", null, child);
               }
               else {
  -                if (grandKid.getLocalName().equals(SchemaSymbols.ELT_ANNOTATION)) {
  +                if 
(DOMUtil.getLocalName(grandKid).equals(SchemaSymbols.ELT_ANNOTATION)) {
                       grandKid = DOMUtil.getNextSiblingElement(grandKid);
                   }
                   if (grandKid == null) {
  @@ -1819,39 +1821,41 @@
                           reportSchemaError("src-redefine.5.b.b", null, grandKid);
                       }
                       else {
  -                        String greatGrandKidName = greatGrandKid.getLocalName();
  +                        String greatGrandKidName = 
DOMUtil.getLocalName(greatGrandKid);
                           if (greatGrandKidName.equals(SchemaSymbols.ELT_ANNOTATION)) 
{
                               greatGrandKid = 
DOMUtil.getNextSiblingElement(greatGrandKid);
  -                            greatGrandKidName = greatGrandKid.getLocalName();
                           }
                           if (greatGrandKid == null) {
                               reportSchemaError("src-redefine.5.b.b", null, grandKid);
                           }
  -                        else if 
(!greatGrandKidName.equals(SchemaSymbols.ELT_RESTRICTION) &&
  -                                 
!greatGrandKidName.equals(SchemaSymbols.ELT_EXTENSION)) {
  -                            reportSchemaError("src-redefine.5.b.c", new 
Object[]{greatGrandKidName}, greatGrandKid);
  -                        }
                           else {
  -                            Object[] attrs = 
fAttributeChecker.checkAttributes(greatGrandKid, false, currSchema);
  -                            QName derivedBase = 
(QName)attrs[XSAttributeChecker.ATTIDX_BASE];
  -                            if (derivedBase == null ||
  -                                derivedBase.uri != currSchema.fTargetNamespace ||
  -                                !derivedBase.localpart.equals(oldName)) {
  -                                reportSchemaError("src-redefine.5.b.d",
  -                                                  new Object[]{greatGrandKidName,
  -                                                               
(currSchema.fTargetNamespace==null?"":currSchema.fTargetNamespace)
  -                                                               + "," + oldName},
  -                                                  greatGrandKid);
  +                            greatGrandKidName = DOMUtil.getLocalName(greatGrandKid);
  +                            if 
(!greatGrandKidName.equals(SchemaSymbols.ELT_RESTRICTION) &&
  +                                 
!greatGrandKidName.equals(SchemaSymbols.ELT_EXTENSION)) {
  +                                reportSchemaError("src-redefine.5.b.c", new 
Object[]{greatGrandKidName}, greatGrandKid);
                               }
                               else {
  -                                // now we have to do the renaming...
  -                                if (derivedBase.prefix != null && 
derivedBase.prefix.length() > 0)
  -                                    greatGrandKid.setAttribute( 
SchemaSymbols.ATT_BASE,
  -                                                                derivedBase.prefix 
+ ":" + newName );
  -                                else
  -                                    greatGrandKid.setAttribute( 
SchemaSymbols.ATT_BASE,
  -                                                                newName );
  -//                                return true;
  +                                Object[] attrs = 
fAttributeChecker.checkAttributes(greatGrandKid, false, currSchema);
  +                                QName derivedBase = 
(QName)attrs[XSAttributeChecker.ATTIDX_BASE];
  +                                if (derivedBase == null ||
  +                                    derivedBase.uri != currSchema.fTargetNamespace 
||
  +                                    !derivedBase.localpart.equals(oldName)) {
  +                                    reportSchemaError("src-redefine.5.b.d",
  +                                                      new 
Object[]{greatGrandKidName,
  +                                                                   
(currSchema.fTargetNamespace==null?"":currSchema.fTargetNamespace)
  +                                                                   + "," + oldName},
  +                                                      greatGrandKid);
  +                                }
  +                                else {
  +                                    // now we have to do the renaming...
  +                                    if (derivedBase.prefix != null && 
derivedBase.prefix.length() > 0)
  +                                        greatGrandKid.setAttribute( 
SchemaSymbols.ATT_BASE,
  +                                                                    
derivedBase.prefix + ":" + newName );
  +                                    else
  +                                        greatGrandKid.setAttribute( 
SchemaSymbols.ATT_BASE,
  +                                                                    newName );
  +//                                    return true;
  +                                }
                               }
                           }
                       }
  @@ -1936,7 +1940,7 @@
           int result = 0;
           for (Element child = DOMUtil.getFirstChildElement(curr);
               child != null; child = DOMUtil.getNextSiblingElement(child)) {
  -            String name = child.getLocalName();
  +            String name = DOMUtil.getLocalName(child);
               if (!name.equals(elementSought))
                   result += changeRedefineGroup(originalQName, elementSought, 
newName, child, schemaDoc);
               else {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to