diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 35e8909643..9609ed396b 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -31,6 +31,9 @@ This is a {{ site.pmd.release_type }} release. ### API Changes +* The implementation of the adapters for the XPath engines Saxon and Jaxen (package `net.sourceforge.pmd.lang.ast.xpath`) + are now deprecated. They'll be moved to an internal package come 7.0.0. Only `Attribute` remains public API. + ### External Contributions * [#1384](https://github.com/pmd/pmd/pull/1384): \[java] New Rule - UseUnderscoresInNumericLiterals - [RajeshR](https://github.com/rajeshggwp) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/XPathHandler.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/XPathHandler.java index d3d7ca82b6..95728185d7 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/XPathHandler.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/XPathHandler.java @@ -6,6 +6,7 @@ package net.sourceforge.pmd.lang; import org.jaxen.Navigator; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.xpath.Initializer; import net.sf.saxon.sxpath.IndependentContext; @@ -14,6 +15,8 @@ import net.sf.saxon.sxpath.IndependentContext; * Interface for performing Language specific XPath handling, such as * initialization and navigation. */ +@InternalApi +@Deprecated public interface XPathHandler { XPathHandler DUMMY = new XPathHandler() { @@ -48,6 +51,9 @@ public interface XPathHandler { /** * Get a Jaxen Navigator for this Language. May return null if * there is no Jaxen Navigation for this language. + * + * @deprecated Support for Jaxen will be removed come 7.0.0 */ + @Deprecated Navigator getNavigator(); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AbstractASTXPathHandler.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AbstractASTXPathHandler.java index 4c9fad1fdf..f4c1e8ddbe 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AbstractASTXPathHandler.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AbstractASTXPathHandler.java @@ -6,11 +6,15 @@ package net.sourceforge.pmd.lang.ast.xpath; import org.jaxen.Navigator; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.XPathHandler; import net.sf.saxon.sxpath.IndependentContext; + +@Deprecated +@InternalApi public abstract class AbstractASTXPathHandler implements XPathHandler { @Override diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AttributeAxisIterator.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AttributeAxisIterator.java index 2a93c13ba5..75807ecd71 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AttributeAxisIterator.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/AttributeAxisIterator.java @@ -14,6 +14,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; @@ -22,7 +23,11 @@ import net.sourceforge.pmd.lang.ast.Node; * attributes. This is the default way the attributes of a node * are made accessible to XPath rules, and defines an important * piece of PMD's XPath support. + * + * @deprecated Use {@link Node#getXPathAttributesIterator()} */ +@Deprecated +@InternalApi public class AttributeAxisIterator implements Iterator { /** Caches the precomputed attribute accessors of a given class. */ diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DefaultASTXPathHandler.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DefaultASTXPathHandler.java index 4bf033c437..974d426e80 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DefaultASTXPathHandler.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DefaultASTXPathHandler.java @@ -4,8 +4,13 @@ package net.sourceforge.pmd.lang.ast.xpath; +import net.sourceforge.pmd.annotation.InternalApi; + import net.sf.saxon.sxpath.IndependentContext; + +@Deprecated +@InternalApi public class DefaultASTXPathHandler extends AbstractASTXPathHandler { @Override public void initialize() { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DocumentNavigator.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DocumentNavigator.java index 9fcdcf2163..4f90c2cac7 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DocumentNavigator.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/DocumentNavigator.java @@ -11,12 +11,15 @@ import org.jaxen.DefaultNavigator; import org.jaxen.XPath; import org.jaxen.util.SingleObjectIterator; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.RootNode; /** * @author daniels */ +@Deprecated +@InternalApi public class DocumentNavigator extends DefaultNavigator { private static final Iterator EMPTY_ITERATOR = new ArrayList().iterator(); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/NodeIterator.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/NodeIterator.java index 2d189cfcef..c442baa8ed 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/NodeIterator.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/NodeIterator.java @@ -7,6 +7,7 @@ package net.sourceforge.pmd.lang.ast.xpath; import java.util.Iterator; import java.util.NoSuchElementException; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; /** @@ -15,6 +16,8 @@ import net.sourceforge.pmd.lang.ast.Node; * * @author daniels */ +@Deprecated +@InternalApi public abstract class NodeIterator implements Iterator { private Node node; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AbstractNodeInfo.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AbstractNodeInfo.java index d309e65b68..1e7c8e0825 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AbstractNodeInfo.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AbstractNodeInfo.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.lang.ast.xpath.saxon; +import net.sourceforge.pmd.annotation.InternalApi; + import net.sf.saxon.Configuration; import net.sf.saxon.event.Receiver; import net.sf.saxon.om.Axis; @@ -27,6 +29,8 @@ import net.sf.saxon.value.Value; * useful implementations, such as {@link #iterateAxis(byte, NodeTest)} and * {@link #isSameNodeInfo(NodeInfo)}. */ +@Deprecated +@InternalApi public class AbstractNodeInfo implements VirtualNode, SiblingCountingNode { @Override public String getSystemId() { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeAxisIterator.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeAxisIterator.java index ada6ed8a78..9a0e23baf1 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeAxisIterator.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeAxisIterator.java @@ -6,6 +6,7 @@ package net.sourceforge.pmd.lang.ast.xpath.saxon; import java.util.Iterator; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.xpath.Attribute; import net.sf.saxon.om.Navigator; @@ -15,6 +16,8 @@ import net.sf.saxon.om.SequenceIterator; * An adapter over our {@link net.sourceforge.pmd.lang.ast.xpath.AttributeAxisIterator} * for the Saxon model. */ +@Deprecated +@InternalApi public class AttributeAxisIterator extends Navigator.BaseEnumeration { protected final ElementNode startNodeInfo; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeNode.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeNode.java index 69e93cddb4..fc36cf6b24 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeNode.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/AttributeNode.java @@ -4,6 +4,7 @@ package net.sourceforge.pmd.lang.ast.xpath.saxon; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.xpath.Attribute; import net.sourceforge.pmd.lang.rule.xpath.SaxonXPathRuleQuery; @@ -18,6 +19,8 @@ import net.sf.saxon.value.Value; * Belongs to an {@link ElementNode}, and wraps an * {@link Attribute}. */ +@Deprecated +@InternalApi public class AttributeNode extends AbstractNodeInfo { protected final Attribute attribute; protected final int id; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/DocumentNode.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/DocumentNode.java index d3aa3bfb5d..f91718c816 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/DocumentNode.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/DocumentNode.java @@ -8,6 +8,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sf.saxon.om.Axis; @@ -21,6 +22,8 @@ import net.sf.saxon.type.Type; /** * A Saxon OM Document node for an AST Node. */ +@Deprecated +@InternalApi public class DocumentNode extends AbstractNodeInfo implements DocumentInfo { /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/ElementNode.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/ElementNode.java index 73b4dbf606..60960f4f4b 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/ElementNode.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/ElementNode.java @@ -4,6 +4,7 @@ package net.sourceforge.pmd.lang.ast.xpath.saxon; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sf.saxon.om.Axis; @@ -19,6 +20,8 @@ import net.sf.saxon.type.Type; /** * A Saxon OM Element type node for an AST Node. */ +@Deprecated +@InternalApi public class ElementNode extends AbstractNodeInfo { protected final DocumentNode document; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/IdGenerator.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/IdGenerator.java index a014729421..afb0886811 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/IdGenerator.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/xpath/saxon/IdGenerator.java @@ -4,9 +4,14 @@ package net.sourceforge.pmd.lang.ast.xpath.saxon; +import net.sourceforge.pmd.annotation.InternalApi; + + /** * This class is used to generate unique IDs for nodes. */ +@Deprecated +@InternalApi public class IdGenerator { private int id; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/Initializer.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/Initializer.java index 54d28699c6..c73ef828a7 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/Initializer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/Initializer.java @@ -4,6 +4,7 @@ package net.sourceforge.pmd.lang.xpath; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; @@ -16,7 +17,11 @@ import net.sf.saxon.sxpath.IndependentContext; * initialization. For example, initializing custom Jaxen Functions. * Initialization should be performed before any XPath related operations are * performed. + * + * @deprecated Is internal API */ +@InternalApi +@Deprecated public final class Initializer { private Initializer() { } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/MatchesFunction.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/MatchesFunction.java index 67493ca9c5..252ed9bdec 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/MatchesFunction.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/MatchesFunction.java @@ -14,9 +14,12 @@ import org.jaxen.FunctionCallException; import org.jaxen.SimpleFunctionContext; import org.jaxen.XPathFunctionContext; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.xpath.Attribute; // FIXME Can this function be extended to work on non-AST attributes? +@InternalApi +@Deprecated public class MatchesFunction implements Function { public static void registerSelfInSimpleContext() { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/PMDFunctions.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/PMDFunctions.java index 394bd230d1..5a26e7b75c 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/PMDFunctions.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/xpath/PMDFunctions.java @@ -4,6 +4,11 @@ package net.sourceforge.pmd.lang.xpath; +import net.sourceforge.pmd.annotation.InternalApi; + + +@InternalApi +@Deprecated public final class PMDFunctions { private PMDFunctions() { } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/GetCommentOnFunction.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/GetCommentOnFunction.java index 386798653b..9e79e5328f 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/GetCommentOnFunction.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/GetCommentOnFunction.java @@ -12,6 +12,7 @@ import org.jaxen.FunctionCallException; import org.jaxen.SimpleFunctionContext; import org.jaxen.XPathFunctionContext; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.AbstractNode; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; @@ -24,6 +25,8 @@ import net.sourceforge.pmd.lang.java.ast.Comment; * * @author Andy Throgmorton */ +@InternalApi +@Deprecated public class GetCommentOnFunction implements Function { public static void registerSelfInSimpleContext() { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/JavaFunctions.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/JavaFunctions.java index 35f43e830b..d4242f26e6 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/JavaFunctions.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/JavaFunctions.java @@ -4,6 +4,7 @@ package net.sourceforge.pmd.lang.java.xpath; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.xpath.saxon.ElementNode; @@ -12,6 +13,8 @@ import net.sf.saxon.expr.XPathContext; /** * Exposes all Java Language specific functions for Saxon use. */ +@InternalApi +@Deprecated public final class JavaFunctions { private JavaFunctions() { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/MetricFunction.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/MetricFunction.java index 24a1f0a030..29e9c2bb69 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/MetricFunction.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/MetricFunction.java @@ -15,6 +15,7 @@ import org.jaxen.FunctionCallException; import org.jaxen.SimpleFunctionContext; import org.jaxen.XPathFunctionContext; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTAnyTypeDeclaration; import net.sourceforge.pmd.lang.java.ast.MethodLikeNode; @@ -32,6 +33,8 @@ import net.sourceforge.pmd.lang.java.metrics.api.JavaOperationMetricKey; * @author Clément Fournier * @since 6.0.0 */ +@InternalApi +@Deprecated public class MetricFunction implements Function { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsExactlyFunction.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsExactlyFunction.java index e6437fcce3..811afd1525 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsExactlyFunction.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsExactlyFunction.java @@ -12,10 +12,14 @@ import org.jaxen.FunctionCallException; import org.jaxen.SimpleFunctionContext; import org.jaxen.XPathFunctionContext; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.TypeNode; import net.sourceforge.pmd.lang.java.typeresolution.TypeHelper; + +@InternalApi +@Deprecated public class TypeIsExactlyFunction implements Function { public static void registerSelfInSimpleContext() { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsFunction.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsFunction.java index 0c5ecb3c3f..41ac55d5b0 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsFunction.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/xpath/TypeIsFunction.java @@ -12,10 +12,14 @@ import org.jaxen.FunctionCallException; import org.jaxen.SimpleFunctionContext; import org.jaxen.XPathFunctionContext; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.TypeNode; import net.sourceforge.pmd.lang.java.typeresolution.TypeHelper; + +@InternalApi +@Deprecated public class TypeIsFunction implements Function { public static void registerSelfInSimpleContext() {