You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2010/08/05 06:57:43 UTC

svn commit: r982470 - in /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs: SubstitutionGroupHandler.java XMLSchemaLoader.java XMLSchemaValidator.java

Author: mrglavas
Date: Thu Aug  5 04:57:42 2010
New Revision: 982470

URL: http://svn.apache.org/viewvc?rev=982470&view=rev
Log:
Fixing JIRA Issue #1463: http://issues.apache.org/jira/browse/XERCESJ-1463. A call to findSchemaGrammar() was missing for substitution groups. This could lead to an error reported for the substitution element if its declaration has not been loaded yet.

Modified:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SubstitutionGroupHandler.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SubstitutionGroupHandler.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SubstitutionGroupHandler.java?rev=982470&r1=982469&r2=982470&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SubstitutionGroupHandler.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SubstitutionGroupHandler.java Thu Aug  5 04:57:42 2010
@@ -39,14 +39,14 @@ public class SubstitutionGroupHandler {
 
     private static final XSElementDecl[] EMPTY_GROUP = new XSElementDecl[0];
 
-    // grammar resolver
-    XSGrammarBucket fGrammarBucket;
+    // global element declaration resolver
+    private final XSElementDeclHelper fXSElementDeclHelper;
 
     /**
      * Default constructor
      */
-    public SubstitutionGroupHandler(XSGrammarBucket grammarBucket) {
-        fGrammarBucket = grammarBucket;
+    public SubstitutionGroupHandler(XSElementDeclHelper elementDeclHelper) {
+        fXSElementDeclHelper = elementDeclHelper;
     }
 
     // 3.9.4 Element Sequence Locally Valid (Particle) 2.3.3
@@ -68,14 +68,8 @@ public class SubstitutionGroupHandler {
             return null;
         }
 
-        // get grammar of the element
-        SchemaGrammar sGrammar = fGrammarBucket.getGrammar(element.uri);
-        if (sGrammar == null) {
-            return null;
-        }
-
         // get the decl for the element
-        XSElementDecl eDecl = sGrammar.getGlobalElementDecl(element.localpart);
+        XSElementDecl eDecl = fXSElementDeclHelper.getGlobalElementDecl(element);
         if (eDecl == null) {
             return null;
         }

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java?rev=982470&r1=982469&r2=982470&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java Thu Aug  5 04:57:42 2010
@@ -51,6 +51,7 @@ import org.apache.xerces.util.ParserConf
 import org.apache.xerces.util.SymbolTable;
 import org.apache.xerces.util.XMLSymbols;
 import org.apache.xerces.util.URI.MalformedURIException;
+import org.apache.xerces.xni.QName;
 import org.apache.xerces.xni.XNIException;
 import org.apache.xerces.xni.grammars.Grammar;
 import org.apache.xerces.xni.grammars.XMLGrammarDescription;
@@ -93,7 +94,7 @@ import org.xml.sax.InputSource;
  * @author Neil Graham, IBM
  * @version $Id$
  */
-public class XMLSchemaLoader implements XMLGrammarLoader, XMLComponent,
+public class XMLSchemaLoader implements XMLGrammarLoader, XMLComponent, XSElementDeclHelper,
 // XML Component API 
 XSLoader, DOMConfiguration {
     
@@ -339,8 +340,8 @@ XSLoader, DOMConfiguration {
             grammarBucket = new XSGrammarBucket();
         }
         fGrammarBucket = grammarBucket;
-        if(sHandler == null) {
-            sHandler = new SubstitutionGroupHandler(fGrammarBucket);
+        if (sHandler == null) {
+            sHandler = new SubstitutionGroupHandler(this);
         }
         fSubGroupHandler = sHandler;
         
@@ -1466,6 +1467,15 @@ XSLoader, DOMConfiguration {
         
         return xis;
     }
+	
+    // Implements XSElementDeclHelper interface
+    public XSElementDecl getGlobalElementDecl(QName element) {
+        SchemaGrammar sGrammar = fGrammarBucket.getGrammar(element.uri);
+        if (sGrammar != null) {
+            return sGrammar.getGlobalElementDecl(element.localpart);
+        }
+        return null;
+    }
     
 } // XMLGrammarLoader
 

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java?rev=982470&r1=982469&r2=982470&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java Thu Aug  5 04:57:42 2010
@@ -1188,7 +1188,7 @@ public class XMLSchemaValidator
 
     /** Schema grammar resolver. */
     private final XSGrammarBucket fGrammarBucket = new XSGrammarBucket();
-    private final SubstitutionGroupHandler fSubGroupHandler = new SubstitutionGroupHandler(fGrammarBucket);
+    private final SubstitutionGroupHandler fSubGroupHandler = new SubstitutionGroupHandler(this);
 
     /** the DV usd to convert xsi:type to a QName */
     // REVISIT: in new simple type design, make things in DVs static,



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