Author: mukulg
Date: Fri Jun 17 09:37:42 2011
New Revision: 1136825

URL: http://svn.apache.org/viewvc?rev=1136825&view=rev
Log:
committing a schema 1.1 fix. it seems that implementation of attribute 
xpathDefaultNamespace for xs:selector & xs:field in IDC constraints was 
incomplete (the evaluation of this wasn't occurring, but traverser was fine). 
i'm committing an improved implementation of this functionality.

Modified:
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaValidator.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Field.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Selector.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/XPathMatcher.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java

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=1136825&r1=1136824&r2=1136825&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
 Fri Jun 17 09:37:42 2011
@@ -1709,6 +1709,9 @@ public class XMLSchemaValidator
         ValueStore valueStore =
             fValueStoreCache.getValueStoreFor(field.getIdentityConstraint(), 
initialDepth);
         XPathMatcher matcher = field.createMatcher(valueStore);
+        if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
+            matcher.setXPathDefaultNamespace(field.getXPathDefaultNamespace());
+        }
         fMatcherStack.addMatcher(matcher);
         matcher.startDocumentFragment();
         return matcher;
@@ -1734,6 +1737,9 @@ public class XMLSchemaValidator
         if (selector == null)
             return;
         XPathMatcher matcher = selector.createMatcher(activator, 
fElementDepth);
+        if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
+            
matcher.setXPathDefaultNamespace(selector.getXPathDefaultNamespace());
+        }
         fMatcherStack.addMatcher(matcher);
         matcher.startDocumentFragment();
     }

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Field.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Field.java?rev=1136825&r1=1136824&r2=1136825&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Field.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Field.java
 Fri Jun 17 09:37:42 2011
@@ -47,16 +47,19 @@ public class Field {
 
     /** Identity constraint. */
     protected final IdentityConstraint fIdentityConstraint;
+    
+    /** XPath default namespace. */
+    protected String fXpathDefaultNamespace;
 
     //
     // Constructors
     //
 
     /** Constructs a field. */
-    public Field(Field.XPath xpath, 
-                 IdentityConstraint identityConstraint) {
+    public Field(Field.XPath xpath, IdentityConstraint identityConstraint, 
String xpathDefaultNamespace) {
         fXPath = xpath;
         fIdentityConstraint = identityConstraint;
+        fXpathDefaultNamespace = xpathDefaultNamespace;
     } // <init>(Field.XPath,IdentityConstraint)
 
     //
@@ -88,6 +91,11 @@ public class Field {
     public String toString() {
         return fXPath.toString();
     } // toString():String
+    
+    /** Return value of xpathDefaultNamespace. */
+    public String getXPathDefaultNamespace() {
+        return fXpathDefaultNamespace;
+    }
 
     //
     // Classes

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Selector.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Selector.java?rev=1136825&r1=1136824&r2=1136825&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Selector.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/Selector.java
 Fri Jun 17 09:37:42 2011
@@ -49,16 +49,19 @@ public class Selector {
     // the Identity constraint we're the matcher for.  Only
     // used for selectors!
     protected IdentityConstraint fIDConstraint;
+    
+    /** XPath default namespace. */
+    protected String fXpathDefaultNamespace;
 
     //
     // Constructors
     //
 
     /** Constructs a selector. */
-    public Selector(Selector.XPath xpath, 
-                    IdentityConstraint identityConstraint) {
+    public Selector(Selector.XPath xpath, IdentityConstraint 
identityConstraint, String xpathDefaultNamespace) {
         fXPath = xpath;
         fIdentityConstraint = identityConstraint;
+        fXpathDefaultNamespace = xpathDefaultNamespace; 
     } // <init>(Selector.XPath,IdentityConstraint)
 
     //
@@ -94,6 +97,11 @@ public class Selector {
     public String toString() {
         return fXPath.toString();
     } // toString():String
+    
+    /** Return value of xpathDefaultNamespace. */
+    public String getXPathDefaultNamespace() {
+        return fXpathDefaultNamespace;
+    }
 
     //
     // Classes

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/XPathMatcher.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/XPathMatcher.java?rev=1136825&r1=1136824&r2=1136825&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/XPathMatcher.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/identity/XPathMatcher.java
 Fri Jun 17 09:37:42 2011
@@ -92,6 +92,9 @@ public class XPathMatcher {
 
     /** The matching string. */
     protected Object fMatchedString;
+    
+    /** XPath default namespace. */
+    protected String fXpathDefaultNamespace;
 
     /** Integer stack of step indexes. */
     private final IntStack[] fStepIndexes;
@@ -275,6 +278,10 @@ public class XPathMatcher {
                 steps[fCurrentStep[i]].axis.type == XPath.Axis.CHILD) {
                 XPath.Step step = steps[fCurrentStep[i]];
                 XPath.NodeTest nodeTest = step.nodeTest;
+                // set xpathDefaultNamespace if applicable. for XML Schema 1.1
+                if (nodeTest.name.uri == null) {
+                    nodeTest.name.uri = fXpathDefaultNamespace;
+                }
                 if (DEBUG_MATCH) {
                     System.out.println(toString()+" [CHILD] before");
                 }
@@ -314,7 +321,10 @@ public class XPathMatcher {
                 int attrCount = attributes.getLength();
                 if (attrCount > 0) {
                     XPath.NodeTest nodeTest = steps[fCurrentStep[i]].nodeTest;
-
+                    // set xpathDefaultNamespace if applicable. for XML Schema 
1.1
+                    if (nodeTest.name.uri == null) {
+                        nodeTest.name.uri = fXpathDefaultNamespace;
+                    }
                     for (int aIndex = 0; aIndex < attrCount; aIndex++) {
                         attributes.getName(aIndex, fQName);
                         if (matches(nodeTest, fQName)) {
@@ -444,6 +454,13 @@ public class XPathMatcher {
         }
         return str.toString();
     } // toString():String
+    
+    /*
+     * Sets the value of XPath default namespace.
+     */
+    public void setXPathDefaultNamespace(String xpathDefaultNamespace) {
+        fXpathDefaultNamespace = xpathDefaultNamespace;   
+    }
 
     //
     // Private methods

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java?rev=1136825&r1=1136824&r2=1136825&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractIDConstraintTraverser.java
 Fri Jun 17 09:37:42 2011
@@ -114,11 +114,10 @@ class XSDAbstractIDConstraintTraverser e
         }
         sText = XMLChar.trim(sText);
         
-        Selector.XPath sXpath = null;
+        Selector.XPath sXpath = null; 
         try {
-            sXpath = new Selector.XPath(sText, fSymbolTable,
-                    schemaDoc.fNamespaceSupport);
-            Selector selector = new Selector(sXpath, ic);
+            sXpath = new Selector.XPath(sText, fSymbolTable, 
schemaDoc.fNamespaceSupport);
+            Selector selector = new Selector(sXpath, ic, 
getXPathDefaultNamespace(attrValues, schemaDoc));
             ic.setSelector(selector);
         }
         catch (XPathException e) {
@@ -172,10 +171,10 @@ class XSDAbstractIDConstraintTraverser e
                 return false;
             }
             fText = XMLChar.trim(fText);
+            
             try {
-                Field.XPath fXpath = new Field.XPath(fText, fSymbolTable,
-                        schemaDoc.fNamespaceSupport);
-                Field field = new Field(fXpath, ic);
+                Field.XPath fXpath = new Field.XPath(fText, fSymbolTable, 
schemaDoc.fNamespaceSupport);
+                Field field = new Field(fXpath, ic, 
getXPathDefaultNamespace(attrValues, schemaDoc));
                 ic.addField(field);
             }
             catch (XPathException e) {
@@ -192,6 +191,17 @@ class XSDAbstractIDConstraintTraverser e
         return ic.getFieldCount() > 0;
     } // traverseIdentityConstraint(IdentityConstraint,Element, XSDocumentInfo)
     
+    /*
+     * Get the value of xpathDefaultNamespace attribute for xs:selector or 
xs:field
+     */
+    private String getXPathDefaultNamespace(Object[] attrValues, 
XSDocumentInfo schemaDoc) {
+        String xpathDefaultNamespace = 
((String)attrValues[XSAttributeChecker.ATTIDX_XPATHDEFAULTNS]); 
+        if (xpathDefaultNamespace == null) {
+            xpathDefaultNamespace = schemaDoc.fXpathDefaultNamespace;   
+        }
+        return xpathDefaultNamespace;
+    } // getXPathDefaultNamespace
+    
     void traverseIdentityConstraintReferral(Element icElem, XSElementDecl 
element, 
             XSDocumentInfo schemaDoc, SchemaGrammar grammar) {
      



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

Reply via email to