Author: mukulg
Date: Thu Aug 30 15:04:33 2012
New Revision: 1378976

URL: http://svn.apache.org/viewvc?rev=1378976&view=rev
Log:
committing the fix for recent issue reported for jira issue, XERCESJ-1578.

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

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java?rev=1378976&r1=1378975&r2=1378976&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
 Thu Aug 30 15:04:33 2012
@@ -1215,7 +1215,7 @@ public class XSDHandler {
                     newSchemaRoot = resolveSchema(schemaSource, 
fSchemaGrammarDescription, mustResolve, child);                    
                     schemaNamespace = currSchemaInfo.fTargetNamespace;
                     if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
-                        if (isOverride && newSchemaRoot != null && 
schemaSource.getSystemId() != "") {
+                        if (isOverride && newSchemaRoot != null && 
isValidTargetUriForOverride(schemaSource, locationHint)) {
                             final Element transformedSchemaRoot = (Element) 
fOverrideHandler.transform(schemaId, child, newSchemaRoot);
 
                             // Either we had a collision where the transformed
@@ -1278,6 +1278,14 @@ public class XSDHandler {
         fDependencyMap.put(currSchemaInfo, dependencies);
         return currSchemaInfo;
     } // end constructTrees
+    
+    /*
+     * Check if the target URI for <override> is correct. It must not be 
absent, and it should not point to the parent
+     * schema document (otherwise, this would result in an un-terminating 
recursion).
+     */
+    private boolean isValidTargetUriForOverride(XMLInputSource schemaSource, 
String locationHint) {
+        return schemaSource.getSystemId() != "" && ((locationHint != null) ? 
(schemaSource.getSystemId() != locationHint) : true);
+    }
 
     private boolean isExistingGrammar(XSDDescription desc, boolean 
ignoreConflict) {
         SchemaGrammar sg = 
fGrammarBucket.getGrammar(desc.getTargetNamespace());



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

Reply via email to