Apache Commons JXPath 1.4.0 Release Notes
-----------------------------------------

The Apache Commons JXPath team is pleased to announce the release of Apache Commons JXPath 1.4.0.

Introduction
------------

A Java-based implementation of XPath 1.0 that, in addition to XML processing, can inspect/modify Java object graphs (the library's explicit purpose) and even mixed Java/XML structures.

New features and bug fixes.

New features
------------

o JXPATH-123:  XPath function "ends-with" is not implemented (although "starts-with" is). 

Fixed Bugs
----------

o JXPATH-172:  Clarify Javadoc of JXPathContext#getPointer. Thanks to Michele Vivoda. 
o JXPATH-113:  NullPointerException in ChildContext when document only contains an empty root node. Thanks to Michele Vivoda. 
o JXPATH-160:  ValueUtils.getValue throws exception with set and index above size. Thanks to Stefan Albrecht, Michele Vivoda, Uwe Barthel. 
o JXPATH-162:  Concurrency problem for JXPathContextFactory.factoryImplName static field. Thanks to Uwe Barthel. 
o JXPATH-141:  FunctionLibrary Multithreading issue. 
o JXPATH-131:  Bean exception handling. Thanks to Gabriel Buades Rubio. 
o JXPATH-128:  JXPath support for LazyDynaBean is broken. Thanks to Gabriel Buades Rubio. 
o JXPATH-129:  MethodLookupUtils#matchType uses TypeUtils#canConvert which causes "Ambiguous method call" exception. 
o JXPATH-153:  Wrong entry IMPORT-PACKAGE in the file MANIFEST.MF for jdom and commons-beanutils. 
o JXPATH-153:  Change dynamic class loading to consult context class loader. Thanks to John Trimble. 
o JXPATH-152:  Concurrent access on hashmap of JXPathIntrospector. 
o          Fix possible NPE in PackageFunctions.getFunction(String, String, Object[]). 
o          JDOMNodePointer.compareChildNodePointers() now throws IllegalStateException instead of RuntimeException. Thanks to Gary Gregory. 
o          ValueUtils.setValue() now throws IllegalArgumentException instead of RuntimeException. Thanks to Gary Gregory. 
o          ClassLoaderUtil.toCanonicalName() now calls Objects.requireNonNull() instead of throwing a RuntimeException. Thanks to Gary Gregory. 
o          XMLDocumentContainer.XMLDocumentContainer(Source) now calls Objects.requireNonNull() instead of throwing a RuntimeException. Thanks to Gary Gregory. 
o          [StepSecurity] CI: Harden GitHub Actions #66. Thanks to step-security-bot, Gary Gregory. 
o          Add missing Javadoc. Thanks to Gary Gregory. 
o          Fix PMD UnnecessaryFullyQualifiedName. Thanks to Gary Gregory. 
o          Add generics to JXPathContext.iterate(String). Thanks to Gary Gregory. 
o          Add generics to JXPathContext.iteratePointers(String). Thanks to Gary Gregory. 
o          Add generics to JXPathContext.decimalFormats. Thanks to Gary Gregory. 
o          Migrate tests to JUnit5 #214. Thanks to strangelookingnerd. 
o          Replace try-catch constructs in tests with assertThrows #215. Thanks to strangelookingnerd, Gary Gregory. 
o          Use generics internally. Thanks to Gary Gregory. 
o          NodeSet.getPointers() is now typed with generics. Thanks to Gary Gregory. 
o          ServletContextHandler.collectPropertyNames(HashSet, Object) is now typed with generics. Thanks to Gary Gregory. 
o          Deprecate MethodLookupUtils.MethodLookupUtils(). Thanks to Gary Gregory. 
o          Deprecate KeyManagerUtils.KeyManagerUtils(). Thanks to Gary Gregory. 
o          Deprecate TypeUtils.TypeUtils(). Thanks to Gary Gregory. 
o          Deprecate ValueUtils.ValueUtils(). Thanks to Gary Gregory. 
o          PageScopeContext.getAttributeNames() is now typed with generics. Thanks to Gary Gregory. 
o          Functions.getUsedNamespaces() is now typed with generics. Thanks to Gary Gregory. 
o          JXPathException now reuses its superclass' Throwable cause. Thanks to Gary Gregory. 
o          Bump JXPathException serialVersionUID from 4306409701468017766L to 2L. Thanks to Gary Gregory. 
o          JXPathContextFactoryConfigurationError now reuses its superclass' Throwable cause. Thanks to Gary Gregory. 
o          Bump JXPathContextFactoryConfigurationError serialVersionUID from 1L to 2L. Thanks to Gary Gregory. 
o          Deprecate SimplePathInterpreter.SimplePathInterpreter(). Thanks to Gary Gregory. 
o          Deprecate JXPathServletContexts.JXPathServletContexts(). Thanks to Gary Gregory. 
o          Deprecate JXPathIntrospector.JXPathIntrospector(). Thanks to Gary Gregory. 
o          Deprecate InfoSetUtil.InfoSetUtil(). Thanks to Gary Gregory. 
o          Deprecate Constants.Constants(). Thanks to Gary Gregory. 
o          Deprecate Parser.Parser(). Thanks to Gary Gregory. 
o          JXPathException.JXPathException(Throwable) now remembers its Throwable cause argument. Thanks to Gary Gregory. 
o          Make the private DOMNodePointer.id field final. Thanks to Gary Gregory. 
o          Make the private NullPointer.id field final. Thanks to Gary Gregory. 
o          Make the private NullPointer.qname field final. Thanks to Gary Gregory. 
o          Make the private JDOMNodePointer.id field final. Thanks to Gary Gregory. 
o          ExpressionContext.getContextNodeList() now uses generics. Thanks to Gary Gregory. 
o          BasicTypeConverter.unmodifiableCollection(Collection) now uses generics. Thanks to Gary Gregory. 
o          Fix PMD AvoidDecimalLiteralsInBigDecimalConstructor in org.apache.commons.jxpath.util.BasicTypeConverter.allocateNumber(Class, double). Thanks to Gary Gregory. PMD. 
o          org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.iteratePointers(String) now uses generics. Thanks to Gary Gregory. 
o          org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.iteratePointers(String, Expression) now uses generics. Thanks to Gary Gregory. 
o          org.apache.commons.jxpath.CompiledExpression.iteratePointers(JXPathContext) now uses generics. Thanks to Gary Gregory. 
o          org.apache.commons.jxpath.JXPathCompiledExpression.iteratePointers(JXPathContext) now uses generics. Thanks to Gary Gregory. 
o          org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(ClassLoader, String) now uses generics. Thanks to Gary Gregory. 
o          org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(ClassLoader, String, boolean) now uses generics. Thanks to Gary Gregory. 
o          org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(String) now uses generics. Thanks to Gary Gregory. 
o          org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(String, boolean) now uses generics. Thanks to Gary Gregory. 

Changes
-------

o          public class org.apache.commons.jxpath.JXPathContextFactoryConfigurationError is Serializable incompatible. 
o          public abstract class org.apache.commons.jxpath.ri.model.beans.PropertyOwnerPointer is Serializable incompatible. 
o          public abstract class org.apache.commons.jxpath.ri.model.beans.PropertyPointer is Serializable incompatible. 
o          public abstract class org.apache.commons.jxpath.ri.model.NodePointer is Serializable incompatible. 
o          public class org.apache.commons.jxpath.ri.parser.ParseException is Serializable incompatible. 
o          public class org.apache.commons.jxpath.XMLDocumentContainer is Serializable incompatible. 
o          Bump commons-parent from 54 to 81 #45, #49, #64, #110, #121, #403, #167, #173, #176, #181, #185, #188, #196. Thanks to Dependabot, Gary Gregory. 
o JXPATH-184:  Bump Java to 8. Thanks to britter, Gary Gregory. 
o          Bump JUnit 3.8.1 to 4.13.2. Thanks to britter, Gary Gregory. 
o          Bump commons-logging from 1.1.1 to 1.3.5 #34, #129, #147, #160, #174. Thanks to Dependabot, Gary Gregory. 
o          Bump commons-beanutils from 1.8.2 to 1.10.1 #24. Thanks to Dependabot, Gary Gregory. 
o          Bump taglist-maven-plugin from 2.2 to 3.0.0 #32. Thanks to Dependabot. 
o          Bump servlet-api from 2.4 to 2.5 #29. Thanks to Dependabot. 
o          Bump JDOM from jdom:jdom 1.0 to org.jdom:jdom 1.1.3. Thanks to Dependabot. 
o          Bump org.codehaus.mojo:taglist-maven-plugin from 3.0.0 to 3.2.1 #161, #194. Thanks to Dependabot. 

Removed
-------

o          Remove obsolete Apache RAT file. Thanks to Gary Gregory. o          Remove obsolete Apache Ant files. Thanks to Gary Gregory. o          Remove obsolete src/conf/MANIFEST.MF file. Thanks to Gary Gregory. o          Remove obsolete maven-surefire-plugin configuration. Configuration is done in the parent POM. Thanks to Gary Gregory. o          Remove obsolete maven-assembly-plugin configuration. Configuration is done in the parent POM. Thanks to Gary Gregory. o          Remove obsolete STATUS.html files. Thanks to Gary Gregory. o          Remove unused package-private class org.apache.commons.jxpath.util.BasicTypeConverter.ValueNodeSet. Thanks to Gary Gregory. 
Historical list of changes: https://commons.apache.org/proper/commons-jxpath/changes.html

For complete information on Apache Commons JXPath, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons JXPath website:

https://commons.apache.org/proper/commons-jxpath/

Download page: https://commons.apache.org/proper/commons-jxpath/download_io.cgi

Have fun!
-Apache Commons Team

------------------------------------------------------------------------------