| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| https://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <!-- |
| This file is used by the maven-changes-plugin to generate the release notes. |
| Useful ways of finding items to add to this file are: |
| |
| 1. Add items when you fix a bug or add a feature (this makes the |
| release process easy :-). |
| |
| 2. Do a Jira search for tickets closed since the previous release. |
| |
| 3. Use the report generated by the maven-changelog-plugin to see all |
| CVS commits. Set the project.properties' maven.changelog.range |
| property to the number of days since the last release. |
| |
| |
| To generate the release notes from this file: |
| |
| mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn] |
| |
| then tweak the source formatting if necessary and regenerate, then commit |
| |
| The <action> type attribute can be add,update,fix,remove. |
| --> |
| |
| <document xmlns="http://maven.apache.org/changes/2.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd"> |
| <properties> |
| <title>Release Notes</title> |
| </properties> |
| <body> |
| <!-- The release date is the date RC is cut --> |
| <release version="1.4.1" date="YYYY-MM-DD" description="This is a maintenance release. Java 8 or later is required."> |
| <!-- FIX --> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">POM assembly:single does not generate binary convenience files (tar/zip).</action> |
| <action type="fix" dev="ggregory" due-to="Dima1224, Gary Gregory">Make dynamicPropertyHandlerMap in ValueUtils thread-safe #251.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Refactor JXPathIntrospector internal static maps to use concurrent classes instead of synchronization.</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix inconsistent synchronization of NamespaceResolver.pointer; locked 50% of time (SpotBugs: MT_CORRECTNESS IS2_INCONSISTENT_SYNC).</action> |
| <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Apache RAT plugin console warnings.</action> |
| <!-- ADD --> |
| <!-- UPDATE --> |
| <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-parent from 81 to 98 #239, #262, #265, #282.</action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-beanutils:commons-beanutils from 1.10.1 to 1.11.0.</action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.20.0 #249.</action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-io:commons-io from 2.19.0 to 2.21.0.</action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-logging:commons-logging from 1.3.5 to 1.3.6.</action> |
| </release> |
| <release version="1.4.0" date="2025-04-12" description="This is a feature and maintenance release. Java 8 or later is required."> |
| <!-- FIX --> |
| <action issue="JXPATH-172" dev="britter" type="fix" due-to="Michele Vivoda"> |
| Clarify Javadoc of JXPathContext#getPointer. |
| </action> |
| <action issue="JXPATH-113" dev="britter" type="fix" due-to="Michele Vivoda"> |
| NullPointerException in ChildContext when document only contains an empty root node. |
| </action> |
| <action issue="JXPATH-160" dev="britter" type="fix" due-to="Stefan Albrecht, Michele Vivoda, Uwe Barthel"> |
| ValueUtils.getValue throws exception with set and index above size. |
| </action> |
| <action issue="JXPATH-162" dev="britter" type="fix" due-to="Uwe Barthel"> |
| Concurrency problem for JXPathContextFactory.factoryImplName static field. |
| </action> |
| <action issue="JXPATH-141" dev="mbenson" type="fix"> |
| FunctionLibrary Multithreading issue. |
| </action> |
| <action issue="JXPATH-131" dev="mbenson" type="fix" due-to="Gabriel Buades Rubio"> |
| Bean exception handling. |
| </action> |
| <action issue="JXPATH-128" dev="mbenson" type="fix" due-to="Gabriel Buades Rubio"> |
| JXPath support for LazyDynaBean is broken. |
| </action> |
| <action issue="JXPATH-129" dev="mbenson" type="fix"> |
| MethodLookupUtils#matchType uses TypeUtils#canConvert which causes "Ambiguous method call" exception. |
| </action> |
| <action issue="JXPATH-153" dev="mbenson" type="fix"> |
| Wrong entry IMPORT-PACKAGE in the file MANIFEST.MF for jdom and commons-beanutils. |
| </action> |
| <action issue="JXPATH-153" dev="mbenson" type="fix" due-to="John Trimble"> |
| Change dynamic class loading to consult context class loader. |
| </action> |
| <action issue="JXPATH-152" dev="mbenson" type="fix"> |
| Concurrent access on hashmap of JXPathIntrospector. |
| </action> |
| <action dev="ggregory" type="fix"> |
| Fix possible NPE in PackageFunctions.getFunction(String, String, Object[]). |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| JDOMNodePointer.compareChildNodePointers() now throws IllegalStateException instead of RuntimeException. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| ValueUtils.setValue() now throws IllegalArgumentException instead of RuntimeException. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| ClassLoaderUtil.toCanonicalName() now calls Objects.requireNonNull() instead of throwing a RuntimeException. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| XMLDocumentContainer.XMLDocumentContainer(Source) now calls Objects.requireNonNull() instead of throwing a RuntimeException. |
| </action> |
| <action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory"> |
| [StepSecurity] CI: Harden GitHub Actions #66. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Add missing Javadoc.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix PMD UnnecessaryFullyQualifiedName.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Add generics to JXPathContext.iterate(String).</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Add generics to JXPathContext.iteratePointers(String).</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Add generics to JXPathContext.decimalFormats.</action> |
| <action dev="ggregory" type="fix" due-to="strangelookingnerd">Migrate tests to JUnit5 #214.</action> |
| <action dev="ggregory" type="fix" due-to="strangelookingnerd, Gary Gregory">Replace try-catch constructs in tests with assertThrows #215.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Use generics internally.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">NodeSet.getPointers() is now typed with generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">ServletContextHandler.collectPropertyNames(HashSet, Object) is now typed with generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate MethodLookupUtils.MethodLookupUtils().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate KeyManagerUtils.KeyManagerUtils().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate TypeUtils.TypeUtils().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate ValueUtils.ValueUtils().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">PageScopeContext.getAttributeNames() is now typed with generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Functions.getUsedNamespaces() is now typed with generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">JXPathException now reuses its superclass' Throwable cause.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Bump JXPathException serialVersionUID from 4306409701468017766L to 2L.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">JXPathContextFactoryConfigurationError now reuses its superclass' Throwable cause.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Bump JXPathContextFactoryConfigurationError serialVersionUID from 1L to 2L.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate SimplePathInterpreter.SimplePathInterpreter().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate JXPathServletContexts.JXPathServletContexts().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate JXPathIntrospector.JXPathIntrospector().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate InfoSetUtil.InfoSetUtil().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate Constants.Constants().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate Parser.Parser().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">JXPathException.JXPathException(Throwable) now remembers its Throwable cause argument.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Make the private DOMNodePointer.id field final.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Make the private NullPointer.id field final.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Make the private NullPointer.qname field final.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Make the private JDOMNodePointer.id field final.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">ExpressionContext.getContextNodeList() now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">BasicTypeConverter.unmodifiableCollection(Collection) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory. PMD">Fix PMD AvoidDecimalLiteralsInBigDecimalConstructor in org.apache.commons.jxpath.util.BasicTypeConverter.allocateNumber(Class, double).</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.iteratePointers(String) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.iteratePointers(String, Expression) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.CompiledExpression.iteratePointers(JXPathContext) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.JXPathCompiledExpression.iteratePointers(JXPathContext) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(ClassLoader, String) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(ClassLoader, String, boolean) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(String) now uses generics.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">org.apache.commons.jxpath.util.ClassLoaderUtil.getClass(String, boolean) now uses generics.</action> |
| <!-- ADD --> |
| <action issue="JXPATH-123" dev="mbenson" type="add"> |
| XPath function "ends-with" is not implemented (although "starts-with" is). |
| </action> |
| <action dev="ggregory" type="update">public class org.apache.commons.jxpath.JXPathContextFactoryConfigurationError is Serializable incompatible.</action> |
| <action dev="ggregory" type="update">public abstract class org.apache.commons.jxpath.ri.model.beans.PropertyOwnerPointer is Serializable incompatible.</action> |
| <action dev="ggregory" type="update">public abstract class org.apache.commons.jxpath.ri.model.beans.PropertyPointer is Serializable incompatible.</action> |
| <action dev="ggregory" type="update">public abstract class org.apache.commons.jxpath.ri.model.NodePointer is Serializable incompatible.</action> |
| <action dev="ggregory" type="update">public class org.apache.commons.jxpath.ri.parser.ParseException is Serializable incompatible.</action> |
| <action dev="ggregory" type="update">public class org.apache.commons.jxpath.XMLDocumentContainer is Serializable incompatible.</action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump commons-parent from 54 to 81 #45, #49, #64, #110, #121, #403, #167, #173, #176, #181, #185, #188, #196. |
| </action> |
| <action issue="JXPATH-184" dev="britter" type="update" due-to="britter, Gary Gregory"> |
| Bump Java to 8. |
| </action> |
| <action dev="ggregory" type="update" due-to="britter, Gary Gregory"> |
| Bump JUnit 3.8.1 to 4.13.2. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump commons-logging from 1.1.1 to 1.3.5 #34, #129, #147, #160, #174. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump commons-beanutils from 1.8.2 to 1.10.1 #24. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump taglist-maven-plugin from 2.2 to 3.0.0 #32. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump servlet-api from 2.4 to 2.5 #29. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump JDOM from jdom:jdom 1.0 to org.jdom:jdom 1.1.3. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump org.codehaus.mojo:taglist-maven-plugin from 3.0.0 to 3.2.1 #161, #194. |
| </action> |
| <!-- REMOVE --> |
| <action dev="ggregory" type="remove" due-to="Gary Gregory">Remove obsolete Apache RAT file.</action> |
| <action dev="ggregory" type="remove" due-to="Gary Gregory">Remove obsolete Apache Ant files.</action> |
| <action dev="ggregory" type="remove" due-to="Gary Gregory">Remove obsolete src/conf/MANIFEST.MF file.</action> |
| <action dev="ggregory" type="remove" due-to="Gary Gregory">Remove obsolete maven-surefire-plugin configuration. Configuration is done in the parent POM.</action> |
| <action dev="ggregory" type="remove" due-to="Gary Gregory">Remove obsolete maven-assembly-plugin configuration. Configuration is done in the parent POM.</action> |
| <action dev="ggregory" type="remove" due-to="Gary Gregory">Remove obsolete STATUS.html files.</action> |
| <action dev="ggregory" type="remove" due-to="Gary Gregory">Remove unused package-private class org.apache.commons.jxpath.util.BasicTypeConverter.ValueNodeSet.</action> |
| </release> |
| </body> |
| </document> |