You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2010/11/17 21:43:35 UTC

svn commit: r1036217 - /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java

Author: knoaman
Date: Wed Nov 17 20:43:35 2010
New Revision: 1036217

URL: http://svn.apache.org/viewvc?rev=1036217&view=rev
Log:
Fixing another bug in xs:override where we did not report an error for duplicate children components

Modified:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java?rev=1036217&r1=1036216&r2=1036217&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/override/DOMOverrideImpl.java Wed Nov 17 20:43:35 2010
@@ -18,6 +18,7 @@
 package org.apache.xerces.impl.xs.traversers.override;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 
 import org.apache.xerces.impl.xs.SchemaSymbols;
@@ -38,6 +39,10 @@ public final class DOMOverrideImpl exten
 
     // records all the override schema components and it's properties
     private final ArrayList fOverrideComponents = new ArrayList();
+    private final HashMap[] fOverrideComponentsMap =  new HashMap[] {
+            null, new HashMap(), new HashMap(), new HashMap(),
+            new HashMap(), new HashMap(), new HashMap()
+    };
 
     // overridden schema document 
     private Document fOverridenDoc;
@@ -78,6 +83,9 @@ public final class DOMOverrideImpl exten
 
     public void clearState(){
         fOverrideComponents.clear();
+        for (int i=1; i <fOverrideComponentsMap.length; i++) {
+            fOverrideComponentsMap[i].clear();
+        }
         fOverridenDoc = null;
         fOverrideElem = null;            
         hasPerformedTransformations = false;
@@ -214,9 +222,16 @@ public final class DOMOverrideImpl exten
      * Create a new OverrideElemnt and record it into <override> components
      */
     private void addOverrideElement(int componentType, Element elem) {
-        String cName = DOMUtil.getAttrValue(elem, SchemaSymbols.ATT_NAME);
-        OverrideElement e = new OverrideElement(componentType, elem,cName);
-        fOverrideComponents.add(e);
+        final String cName = DOMUtil.getAttrValue(elem, SchemaSymbols.ATT_NAME);
+        final HashMap cMap = fOverrideComponentsMap[componentType];
+        if (cMap.get(cName) != null) {
+            fSchemaHandler.reportSchemaError("sch-props-correct.2", new Object []{cName}, elem);
+        }
+        else {
+            OverrideElement e = new OverrideElement(componentType, elem,cName);
+            fOverrideComponents.add(e);
+            cMap.put(cName, e);
+        }
     }
 
     /**



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