You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by ss...@apache.org on 2022/08/03 11:40:25 UTC

svn commit: r1903209 - in /xmlgraphics/batik/trunk: ./ batik-bridge/src/main/java/org/apache/batik/bridge/svg12/ batik-dom/ batik-dom/src/main/java/org/apache/batik/dom/ lib/

Author: ssteiner
Date: Wed Aug  3 11:40:25 2022
New Revision: 1903209

URL: http://svn.apache.org/viewvc?rev=1903209&view=rev
Log:
BATIK-1329: Remove xalan

Removed:
    xmlgraphics/batik/trunk/lib/LICENSE.xalan-2.7.2.txt
    xmlgraphics/batik/trunk/lib/README.xalan-2.7.2.txt
    xmlgraphics/batik/trunk/lib/xalan-2.7.2.jar
Modified:
    xmlgraphics/batik/trunk/batik-bridge/src/main/java/org/apache/batik/bridge/svg12/XPathPatternContentSelector.java
    xmlgraphics/batik/trunk/batik-dom/pom.xml
    xmlgraphics/batik/trunk/batik-dom/src/main/java/org/apache/batik/dom/AbstractDocument.java
    xmlgraphics/batik/trunk/pom.xml

Modified: xmlgraphics/batik/trunk/batik-bridge/src/main/java/org/apache/batik/bridge/svg12/XPathPatternContentSelector.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/batik-bridge/src/main/java/org/apache/batik/bridge/svg12/XPathPatternContentSelector.java?rev=1903209&r1=1903208&r2=1903209&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/batik-bridge/src/main/java/org/apache/batik/bridge/svg12/XPathPatternContentSelector.java (original)
+++ xmlgraphics/batik/trunk/batik-bridge/src/main/java/org/apache/batik/bridge/svg12/XPathPatternContentSelector.java Wed Aug  3 11:40:25 2022
@@ -18,20 +18,22 @@
  */
 package org.apache.batik.bridge.svg12;
 
-import java.util.ArrayList;
-
-import org.apache.xml.utils.PrefixResolver;
-import org.apache.xpath.XPath;
-import org.apache.xpath.XPathContext;
-
 import org.apache.batik.anim.dom.XBLOMContentElement;
 import org.apache.batik.dom.AbstractDocument;
-
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.xpath.XPathException;
 
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+import java.util.ArrayList;
+import java.util.Iterator;
+
 /**
  * A class to handle the XPath Pattern syntax for XBL content elements.
  *
@@ -48,12 +50,7 @@ public class XPathPatternContentSelector
     /**
      * The XPath expression.
      */
-    protected XPath xpath;
-
-    /**
-     * The XPath context.
-     */
-    protected XPathContext context;
+    protected XPathExpression xpath;
 
     /**
      * The selected nodes.
@@ -81,10 +78,11 @@ public class XPathPatternContentSelector
      * Parses the XPath selector.
      */
     protected void parse() {
-        context = new XPathContext();
         try {
-            xpath = new XPath(expression, null, prefixResolver, XPath.MATCH);
-        } catch (javax.xml.transform.TransformerException te) {
+            XPath xPathAPI = XPathFactory.newInstance().newXPath();
+            xPathAPI.setNamespaceContext(prefixResolver);
+            xpath = xPathAPI.compile(expression);
+        } catch (XPathExpressionException te) {
             AbstractDocument doc
                 = (AbstractDocument) contentElement.getOwnerDocument();
             throw doc.createXPathException
@@ -173,9 +171,8 @@ public class XPathPatternContentSelector
         protected void update(Node n) {
             if (!isSelected(n)) {
                 try {
-                    double matchScore
-                        = xpath.execute(context, n, prefixResolver).num();
-                    if (matchScore != XPath.MATCH_SCORE_NONE) {
+                    Double matchScore = (Double) xpath.evaluate(n, XPathConstants.NUMBER);
+                    if (matchScore != null) {
                         if (!descendantSelected(n)) {
                             nodes.add(n);
                         }
@@ -186,7 +183,7 @@ public class XPathPatternContentSelector
                             n = n.getNextSibling();
                         }
                     }
-                } catch (javax.xml.transform.TransformerException te) {
+                } catch (XPathExpressionException te) {
                     AbstractDocument doc
                         = (AbstractDocument) contentElement.getOwnerDocument();
                     throw doc.createXPathException
@@ -217,36 +214,20 @@ public class XPathPatternContentSelector
     /**
      * Xalan prefix resolver.
      */
-    protected class NSPrefixResolver implements PrefixResolver {
-
-        /**
-         * Get the base URI for this resolver.  Since this resolver isn't
-         * associated with a particular node, returns null.
-         */
-        public String getBaseIdentifier() {
-            return null;
-        }
-
+    protected class NSPrefixResolver implements NamespaceContext {
         /**
          * Resolves the given namespace prefix.
          */
-        public String getNamespaceForPrefix(String prefix) {
+        public String getNamespaceURI(String prefix) {
             return contentElement.lookupNamespaceURI(prefix);
         }
 
-        /**
-         * Resolves the given namespace prefix.
-         */
-        public String getNamespaceForPrefix(String prefix, Node context) {
-            // ignore the context node
-            return contentElement.lookupNamespaceURI(prefix);
+        public String getPrefix(String namespaceURI) {
+            return null;
         }
 
-        /**
-         * Returns whether this PrefixResolver handles a null prefix.
-         */
-        public boolean handlesNullPrefixes() {
-            return false;
+        public Iterator getPrefixes(String namespaceURI) {
+            return null;
         }
     }
 }

Modified: xmlgraphics/batik/trunk/batik-dom/pom.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/batik-dom/pom.xml?rev=1903209&r1=1903208&r2=1903209&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/batik-dom/pom.xml (original)
+++ xmlgraphics/batik/trunk/batik-dom/pom.xml Wed Aug  3 11:40:25 2022
@@ -61,11 +61,6 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>xalan</groupId>
-      <artifactId>xalan</artifactId>
-      <version>${xalan.version}</version>
-    </dependency>
-    <dependency>
       <groupId>xml-apis</groupId>
       <artifactId>xml-apis</artifactId>
       <version>${xmlapis.version}</version>

Modified: xmlgraphics/batik/trunk/batik-dom/src/main/java/org/apache/batik/dom/AbstractDocument.java
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/batik-dom/src/main/java/org/apache/batik/dom/AbstractDocument.java?rev=1903209&r1=1903208&r2=1903209&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/batik-dom/src/main/java/org/apache/batik/dom/AbstractDocument.java (original)
+++ xmlgraphics/batik/trunk/batik-dom/src/main/java/org/apache/batik/dom/AbstractDocument.java Wed Aug  3 11:40:25 2022
@@ -45,12 +45,6 @@ import org.apache.batik.util.DOMConstant
 import org.apache.batik.util.SoftDoublyIndexedTable;
 import org.apache.batik.constants.XMLConstants;
 
-import org.apache.xml.utils.PrefixResolver;
-
-import org.apache.xpath.XPath;
-import org.apache.xpath.XPathContext;
-import org.apache.xpath.objects.XObject;
-
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.DocumentType;
@@ -79,6 +73,13 @@ import org.w3c.dom.xpath.XPathExpression
 import org.w3c.dom.xpath.XPathNSResolver;
 import org.w3c.dom.xpath.XPathResult;
 
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.transform.TransformerException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
 /**
  * This class implements the {@link org.w3c.dom.Document} interface.
  *
@@ -2177,7 +2178,7 @@ public abstract class AbstractDocument
         /**
          * The compiled XPath expression.
          */
-        protected XPath xpath;
+        protected javax.xml.xpath.XPathExpression xpath;
 
         /**
          * The namespace resolver.
@@ -2190,11 +2191,6 @@ public abstract class AbstractDocument
         protected NSPrefixResolver prefixResolver;
 
         /**
-         * The XPathContext object.
-         */
-        protected XPathContext context;
-
-        /**
          * Creates a new XPathExpr object.
          */
         public XPathExpr(String expr, XPathNSResolver res)
@@ -2202,9 +2198,10 @@ public abstract class AbstractDocument
             resolver = res;
             prefixResolver = new NSPrefixResolver();
             try {
-                xpath = new XPath(expr, null, prefixResolver, XPath.SELECT);
-                context = new XPathContext();
-            } catch (javax.xml.transform.TransformerException te) {
+                XPath xPathAPI = XPathFactory.newInstance().newXPath();
+                xPathAPI.setNamespaceContext(prefixResolver);
+                xpath = xPathAPI.compile(expr);
+            } catch (XPathExpressionException te) {
                 throw createXPathException
                     (XPathException.INVALID_EXPRESSION_ERR,
                      "xpath.invalid.expression",
@@ -2245,48 +2242,25 @@ public abstract class AbstractDocument
                          new Object[] {(int) contextNode.getNodeType(),
                                         contextNode.getNodeName() });
             }
-            context.reset();
-            XObject result = null;
-            try {
-                result = xpath.execute(context, contextNode, prefixResolver);
-            } catch (javax.xml.transform.TransformerException te) {
-                throw createXPathException
-                    (XPathException.INVALID_EXPRESSION_ERR,
-                     "xpath.error",
-                     new Object[] { xpath.getPatternString(),
-                                    te.getMessage() });
-            }
+
             try {
                 switch (type) {
                     case XPathResult.ANY_UNORDERED_NODE_TYPE:
                     case XPathResult.FIRST_ORDERED_NODE_TYPE:
-                        return convertSingleNode(result, type);
+                        return new Result((Node) xpath.evaluate(contextNode, XPathConstants.NODE), type);
                     case XPathResult.BOOLEAN_TYPE:
-                        return convertBoolean(result);
+                        return new Result((Boolean) xpath.evaluate(contextNode, XPathConstants.BOOLEAN));
                     case XPathResult.NUMBER_TYPE:
-                        return convertNumber(result);
+                        return new Result((Double) xpath.evaluate(contextNode, XPathConstants.NUMBER));
                     case XPathResult.ORDERED_NODE_ITERATOR_TYPE:
                     case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
                     case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:
                     case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
-                        return convertNodeIterator(result, type);
+                        return new Result((Node) xpath.evaluate(contextNode, XPathConstants.NODE), type);
                     case XPathResult.STRING_TYPE:
-                        return convertString(result);
-                    case XPathResult.ANY_TYPE:
-                        switch (result.getType()) {
-                            case XObject.CLASS_BOOLEAN:
-                                return convertBoolean(result);
-                            case XObject.CLASS_NUMBER:
-                                return convertNumber(result);
-                            case XObject.CLASS_STRING:
-                                return convertString(result);
-                            case XObject.CLASS_NODESET:
-                                return convertNodeIterator
-                                    (result,
-                                     XPathResult.UNORDERED_NODE_ITERATOR_TYPE);
-                        }
+                        return new Result((String) xpath.evaluate(contextNode, XPathConstants.STRING));
                 }
-            } catch (javax.xml.transform.TransformerException te) {
+            } catch (XPathExpressionException | TransformerException te) {
                 throw createXPathException
                     (XPathException.TYPE_ERR,
                      "xpath.cannot.convert.result",
@@ -2297,45 +2271,6 @@ public abstract class AbstractDocument
         }
 
         /**
-         * Converts an XObject to a single node XPathResult.
-         */
-        protected Result convertSingleNode(XObject xo, short type)
-                throws javax.xml.transform.TransformerException {
-            return new Result(xo.nodelist().item(0), type);
-        }
-
-        /**
-         * Converts an XObject to a boolean XPathResult.
-         */
-        protected Result convertBoolean(XObject xo)
-                throws javax.xml.transform.TransformerException {
-            return new Result(xo.bool());
-        }
-
-        /**
-         * Converts an XObject to a number XPathResult.
-         */
-        protected Result convertNumber(XObject xo)
-                throws javax.xml.transform.TransformerException {
-            return new Result(xo.num());
-        }
-
-        /**
-         * Converts an XObject to a string XPathResult.
-         */
-        protected Result convertString(XObject xo) {
-            return new Result(xo.str());
-        }
-
-        /**
-         * Converts an XObject to a node iterator XPathResult.
-         */
-        protected Result convertNodeIterator(XObject xo, short type)
-                throws javax.xml.transform.TransformerException {
-            return new Result(xo.nodelist(), type);
-        }
-
-        /**
          * XPathResult implementation.
          * XXX Namespace nodes are not handled correctly, since Xalan returns
          *     namespace nodes as simply the attribute node that caused the
@@ -2537,42 +2472,23 @@ public abstract class AbstractDocument
         /**
          * Xalan prefix resolver.
          */
-        protected class NSPrefixResolver implements PrefixResolver {
-
-            /**
-             * Get the base URI for this resolver.  Since this resolver isn't
-             * associated with a particular node, returns null.
-             */
-            public String getBaseIdentifier() {
-                return null;
-            }
-
+        protected class NSPrefixResolver implements NamespaceContext {
             /**
              * Resolves the given namespace prefix.
              */
-            public String getNamespaceForPrefix(String prefix) {
+            public String getNamespaceURI(String prefix) {
                 if (resolver == null) {
                     return null;
                 }
                 return resolver.lookupNamespaceURI(prefix);
             }
 
-            /**
-             * Resolves the given namespace prefix.
-             */
-            public String getNamespaceForPrefix(String prefix, Node context) {
-                // ignore the context node
-                if (resolver == null) {
-                    return null;
-                }
-                return resolver.lookupNamespaceURI(prefix);
+            public String getPrefix(String namespaceURI) {
+                return null;
             }
 
-            /**
-             * Returns whether this PrefixResolver handles a null prefix.
-             */
-            public boolean handlesNullPrefixes() {
-                return false;
+            public Iterator getPrefixes(String namespaceURI) {
+                return null;
             }
         }
     }

Modified: xmlgraphics/batik/trunk/pom.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/batik/trunk/pom.xml?rev=1903209&r1=1903208&r2=1903209&view=diff
==============================================================================
--- xmlgraphics/batik/trunk/pom.xml (original)
+++ xmlgraphics/batik/trunk/pom.xml Wed Aug  3 11:40:25 2022
@@ -27,7 +27,6 @@
     <release.version>2.5.2</release.version>
     <rhino.version>1.7.7</rhino.version>
     <surefire.version>2.18.1</surefire.version>
-    <xalan.version>2.7.2</xalan.version>
     <xmlapis.version>1.4.01</xmlapis.version>
     <xmlapisext.version>1.3.04</xmlapisext.version>
     <xmlgraphics.commons.version>2.4.0-SNAPSHOT</xmlgraphics.commons.version>