Author: mukulg
Date: Sat Oct 22 08:42:24 2011
New Revision: 1187673
URL: http://svn.apache.org/viewvc?rev=1187673&view=rev
Log:
schema 1.1 commit:
made some fixes to XPath2 function fn:namespace-uri-from-QName (which is now
able to look into the XPath2 dynamic context as well, to resolve namespace
prefixes). ref Eclipse bug,
https://bugs.eclipse.org/bugs/show_bug.cgi?id=361721. this behavior is needed
by one of XSD 1.1 test suite tests. committing related Xerces code base changes
as well.
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/AbstractPsychoPathXPath2Impl.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
xerces/java/branches/xml-schema-1.1-dev/tools/org.eclipse.wst.xml.xpath2.processor_1.2.0.jar
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java?rev=1187673&r1=1187672&r2=1187673&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
Sat Oct 22 08:42:24 2011
@@ -499,6 +499,7 @@ public final class Constants {
// Constants to support PsychoPath XPath engine uses
public final static String XPATH2_NAMESPACE_CONTEXT = "XPATH2_NS_CONTEXT";
+ public final static String IS_CTA_EVALUATOR = "CTA-EVALUATOR";
// private
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/AbstractPsychoPathXPath2Impl.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/AbstractPsychoPathXPath2Impl.java?rev=1187673&r1=1187672&r2=1187673&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/AbstractPsychoPathXPath2Impl.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/AbstractPsychoPathXPath2Impl.java
Sat Oct 22 08:42:24 2011
@@ -17,7 +17,9 @@
package org.apache.xerces.impl.xs;
+import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.List;
import java.util.Map;
import javax.xml.XMLConstants;
@@ -62,6 +64,7 @@ public class AbstractPsychoPathXPath2Imp
private DynamicContext fXpath2DynamicContext = null;
private Document fDomDoc = null;
+
/*
* Initialize the PsychoPath engine XPath 2.0 dynamic context. This also
initializes the XPath engine's static
* context, since dynamic context is inherited from the static context.
@@ -72,12 +75,24 @@ public class AbstractPsychoPathXPath2Imp
// populate the 'PsychoPath XPath 2' static context, with namespace
bindings derived from the XML Schema document
NamespaceSupport xpath2NamespaceContext = (NamespaceSupport)
psychoPathParams.get(Constants.XPATH2_NAMESPACE_CONTEXT);
- Enumeration currPrefixes = xpath2NamespaceContext.getAllPrefixes();
- while (currPrefixes.hasMoreElements()) {
- String prefix = (String)currPrefixes.nextElement();
- addNamespaceBindingToXPath2DynamicContext(prefix,
xpath2NamespaceContext.getURI(prefix));
+ Boolean isCtaAvaluator =
(Boolean)psychoPathParams.get(Constants.IS_CTA_EVALUATOR);
+ if (isCtaAvaluator != null && isCtaAvaluator.booleanValue()) {
+ // check if the call to this method came from CTA evaluator. needs
special treatment for handling namespace context.
+ String[] namespaceBindingInfo =
xpath2NamespaceContext.getNamespaceBindingInfo();
+ List prefixes = getPrefixesXS11CTA(namespaceBindingInfo);
+ for (int prfxIdx = 0; prfxIdx < prefixes.size(); prfxIdx++) {
+ String prefix = (String)prefixes.get(prfxIdx);
+ addNamespaceBindingToXPath2DynamicContext(prefix,
getURIXS11CTA(prefix, namespaceBindingInfo));
+ }
+ }
+ else {
+ Enumeration currPrefixes = xpath2NamespaceContext.getAllPrefixes();
+ while (currPrefixes.hasMoreElements()) {
+ String prefix = (String)currPrefixes.nextElement();
+ addNamespaceBindingToXPath2DynamicContext(prefix,
xpath2NamespaceContext.getURI(prefix));
+ }
+
addNamespaceBindingToXPath2DynamicContext(XMLConstants.XML_NS_PREFIX,
XMLConstants.XML_NS_URI);
}
- addNamespaceBindingToXPath2DynamicContext(XMLConstants.XML_NS_PREFIX,
XMLConstants.XML_NS_URI);
fXpath2DynamicContext.add_function_library(new FnFunctionLibrary());
fXpath2DynamicContext.add_function_library(new XSCtrLibrary());
fDomDoc = document;
@@ -160,4 +175,31 @@ public class AbstractPsychoPathXPath2Imp
} // compileXPathStr
+
+ /*
+ * Get in-scope namespace prefixes. special handling for CTA.
+ */
+ private List getPrefixesXS11CTA(String[] namespaceBindingInfo) {
+ List prefixes = new ArrayList();
+ for (int prefixIdx = 0; prefixIdx < namespaceBindingInfo.length &&
namespaceBindingInfo[prefixIdx] != null; prefixIdx += 2) {
+ prefixes.add(namespaceBindingInfo[prefixIdx]);
+ }
+ return prefixes;
+ } // getPrefixesXS11CTA
+
+
+ /*
+ * Get an URI for a particular in-scope namespace prefix. special
handling for CTA.
+ */
+ private String getURIXS11CTA(String prefix, String[]
namespaceBindingInfo) {
+ String uri = null;
+ for (int prefixIdx = 0; prefixIdx < namespaceBindingInfo.length &&
namespaceBindingInfo[prefixIdx] != null; prefixIdx += 2) {
+ if (prefix.equals(namespaceBindingInfo[prefixIdx])) {
+ uri = namespaceBindingInfo[prefixIdx + 1];
+ break;
+ }
+ }
+ return uri;
+ } // getURIXS11CTA
+
} // class AbstractPsychoPathXPath2Impl
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java?rev=1187673&r1=1187672&r2=1187673&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
Sat Oct 22 08:42:24 2011
@@ -159,6 +159,7 @@ public class Test extends AbstractPsycho
// construct parameter values for psychopath xpath processor
Map psychoPathParams = new HashMap();
psychoPathParams.put(Constants.XPATH2_NAMESPACE_CONTEXT,
fXPath2NamespaceContext);
+ psychoPathParams.put(Constants.IS_CTA_EVALUATOR, Boolean.TRUE);
DynamicContext xpath2DynamicContext =
initXPath2DynamicContext(null, document, psychoPathParams);
xpath2DynamicContext.set_base_uri(fTypeAlternative.getBaseURI());
// set base-uri property in XPath2 static context, to the URI of XSD document
if (fTypeAlternative.fXPathDefaultNamespace != null) {
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java?rev=1187673&r1=1187672&r2=1187673&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
Sat Oct 22 08:42:24 2011
@@ -72,7 +72,6 @@ class XSDTypeAlternativeTraverser extend
private static final XSSimpleType fErrorType;
private boolean fIsFullXPathModeForCTA;
private String[] fctaXPathModes = {"cta-subset", "cta-full"};
- private AbstractPsychoPathXPath2Impl abstractPsychoPathInst = new
AbstractPsychoPathXPath2Impl();
static {
SchemaGrammar grammar =
SchemaGrammar.getS4SGrammar(Constants.SCHEMA_VERSION_1_1);
@@ -207,6 +206,7 @@ class XSDTypeAlternativeTraverser extend
XPath xp = xpp.parse("boolean(" + testStr + ")");
Map psychoPathParams = new HashMap();
psychoPathParams.put(Constants.XPATH2_NAMESPACE_CONTEXT,
schemaDoc.fNamespaceSupport);
+ AbstractPsychoPathXPath2Impl abstractPsychoPathInst = new
AbstractPsychoPathXPath2Impl();
StaticChecker name_check = new
StaticNameResolver(abstractPsychoPathInst.initXPath2DynamicContext(null, null,
psychoPathParams));
name_check.check(xp);
testExpr = new Test(xp, testStr, typeAlternative,
schemaDoc.fNamespaceSupport);
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java?rev=1187673&r1=1187672&r2=1187673&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
Sat Oct 22 08:42:24 2011
@@ -286,6 +286,10 @@ public class NamespaceSupport implements
return false;
}
+ public String[] getNamespaceBindingInfo() {
+ return fNamespace;
+ }
+
protected final class Prefixes implements Enumeration {
private String[] prefixes;
private int counter = 0;
Modified:
xerces/java/branches/xml-schema-1.1-dev/tools/org.eclipse.wst.xml.xpath2.processor_1.2.0.jar
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/tools/org.eclipse.wst.xml.xpath2.processor_1.2.0.jar?rev=1187673&r1=1187672&r2=1187673&view=diff
==============================================================================
Binary files - no diff available.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]