Update the JAR `Hander` so that URL `startsWith` checks produce less
garbage. Comparisons are now performed first on the `path` rather than
the full `toString`. URL `toString` operations produce quite a lot of
garbage since a `StringBuilder` is always used.
In addition, we now also cache the JarFile URL toString to save repeated
calculation.
Closes gh-14561
Rewrite `ConfigurationPropertyName` in an attempt to consume less memory
and to reduce GC pressure from `toString()`.
Prior to this commit the `toString()` method would always construct a
new value from the name elements. This is sub-optimal since on on many
occasions the `ConfigurationPropertyName` is created from an already
well-formed String. The updated code now attempts to directly use the
original value for both `toString` and `equals` whenever possible.
Further refinements have also been made to the way that elements are
stored. Rather than a list or objects, we now use arrays that contains
the split points and types. This helps to reduce the amount of memory
required to store the name.
Closes gh-13414
Update `SpringConfigurationPropertySource` so that the
`DelegatingPropertyMapper` accepts a maximum of two values and does
not need to wrap arguments in an array. Also optimize the merge
operation to return a single result directly rather than always using
a new `List`.
Closes gh-14563
Generally speaking, methods on configuration classes will only be called once
and, therefore, it should be safe to hold a reference to a Stream for later
one-time usage. However, there are some scenarios in Spring Fu where functional
registration results in an attempt being made to use a Stream more than use.
This commit protects against multiple use by storing the ObjectProvider and
getting a new ordered Stream each time it's needed.
Closes gh-14467
This commit makes sure that "org.quartz.scheduler.instanceName" is
honoured if set. Previously, "spring.quartz.scheduler-name" had a
default value and was always set. As a result, `SchedulerFactoryBean`
did not take the quartz property into account.
Closes gh-14243
This commit adds the ability to have escaped characters, like the quote,
when using the BasicJsonParser. It also adds a short test for escaped
quotes.
Closes gh-14521
Previously, if a class was added and then changed, a restart would be triggered
and things would behave as if the class had been deleted. This occurred
because, when looking for additional classes that were not on the original
classpath, only files that had been added were considered. The subsequent
change to the class was noticed as a modified rather than an addition,
resulting in the class being skipped.
This commit updates the resource resolver to only ignore deleted files and
consider both added files and modified files when looking for additional
resources.
Closes gh-14205