Skip to content
This repository was archived by the owner on Jul 8, 2025. It is now read-only.

[pull] develop from eXist-db:develop#383

Open
pull[bot] wants to merge 1602 commits into
EIDO-Systems:developfrom
eXist-db:develop
Open

[pull] develop from eXist-db:develop#383
pull[bot] wants to merge 1602 commits into
EIDO-Systems:developfrom
eXist-db:develop

Conversation

@pull

@pull pull Bot commented Jun 5, 2025

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.1)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull Bot added the ⤵️ pull label Jun 5, 2025
joewiz and others added 29 commits May 18, 2026 19:12
Litmus locks tests cond_put_corrupt_token and fail_cond_put_unlocked
were returning 204 No Content when they should have returned 412
Precondition Failed: the If header asserted state-tokens that were
not actually held by the resource (a corrupt opaquelocktoken in one
case, the special <DAV:no-lock> guaranteed-no-match URI in the other).

Jackrabbit's matchesIfHeader/isPreconditionValid path was permissive
in these scenarios. Add an explicit pre-check (validateIfHeaderLockTokens)
wired into PUT, PROPPATCH, DELETE, COPY and MOVE that parses the
If-header per RFC 4918 §10.4 and rejects any positive state-token
assertion whose URI is not in the union of locks held on the resource
and on any deep-locked ancestor collection.

The parser tracks paren depth so it distinguishes Tagged-list
Resource-Tags (a <URI> outside parens that scopes the next list and
is NOT an assertion) from State-tokens (a <URI> inside parens that
asserts the resource holds that token). Negated assertions
(Not <token>) are left for Jackrabbit's existing precondition path
since they require the opposite check. ETag-form preconditions
([etag]) are unchanged.

Litmus locks now passes 37/37 (was 35/37, with the failing pair
returning 204 instead of 412). The other three suites remain at
100% (basic 16/16, copymove 13/13, props 28/28).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The jackrabbit-webdav fork now lives at eXist-db/jackrabbit-webdav-jakarta
and publishes to maven.pkg.github.com via GitHub Actions on tag. Add the
<repository> entry so the org.exist-db.thirdparty.org.apache.jackrabbit
artifact resolves from there instead of the third-party Maven repo.

Mirrors the existing github / github-xqts-runner precedent; releases AND
snapshots enabled since we cut tagged releases on the new repo (unlike
xqts-runner which is snapshot-only).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The new <repository id="github-jackrabbit-webdav-jakarta"> in
exist-parent/pom.xml needs a matching <server> in CI's settings.xml
so the GITHUB_TOKEN can authenticate to maven.pkg.github.com (which
requires auth even for public packages).

Without this, the build fails with 401 Unauthorized when resolving
org.exist-db.thirdparty.org.apache.jackrabbit:jackrabbit-webdav:2.22.3-jakarta-ee10.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The maven-github-settings composite action (which writes ~/.m2/settings.xml
with auth for the eXist-db org's GitHub Packages repos) was only invoked
from the OWASP dependency-check job. The other jobs that run mvn — ci-test
test job, ci-container, webdav-compliance — had no settings.xml at all and
hit 401 Unauthorized resolving the new jackrabbit-webdav-jakarta artifact.

Pre-PR these jobs ran fine without auth because nothing critical was
fetched from GitHub Packages (the existing github-xqts-runner reference
only triggered harmless metadata warnings). The new jackrabbit dep is the
first artifact eXist actually consumes from GitHub Packages, so all mvn
jobs now need auth.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three issues flagged on PR #6364:

1. Unnecessary fully qualified name 'jakarta.servlet.ServletException'
   (already imported)
2. Nested if statements that could be combined (extractStateTokens, "Not"
   prefix detection)
3. NPath complexity 320 in attachSession (threshold 200)

While addressing (3), decomposed attachSession into tryBasicAuth and
tryContainerPrincipal helpers, dropping the method to a linear flow with
NPath well under threshold. Lifted the write-methods set to a static
constant. Additional sweep cleaned up other FQNs (java.io.IOException
across the doXxx overrides, java.util.Base64, java.security.Principal,
org.exist.security.AuthenticationException) and moved WRITE_METHODS
above the constructor per PMD's FieldDeclarationsShouldBeAtStartOfClass.

Codacy now reports zero findings on the file.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… 1080 → under threshold)

Codacy flagged createLock() at NPath 1080 (#6364 review by @duncdrum).
Extract three private helpers — validateLockRequest, checkExistingLockCompatibility,
storeLockEntry — and reduce createLock to a 7-line orchestrator. Behavior
unchanged.

The five other NPath warnings Codacy reports on this PR's diff scope
(ExistCollection.createFile, .resourceCopyMove; ExistDocument.lock,
.resourceCopyMove, .refreshLock) are pre-existing on develop and not
introduced by this PR — left for separate refactoring work.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces .github/workflows/webdav-compliance.yml with a new bats spec
exist-docker/src/test/bats/04-webdav-litmus.bats. Addresses @duncdrum's
architectural review on #6364:

1. No more duplicate container build — the bats spec runs against the
   exist-ci container that ci-container.yml already builds and starts,
   not a second one.
2. WebDAV checks are now part of the bats suite, runnable locally via
   `bats --tap exist-docker/src/test/bats/*.bats` against any running
   exist-ci container.
3. Trigger scope widens — bats runs on every ci-container invocation
   (Jetty bumps, develop pushes, etc.), not only when extensions/webdav
   files change.
4. Local-runnable: per (2). macOS contributors can install litmus via
   MacPorts; Linux contributors via apt.
5. Litmus caching — replaced the source build (autoreconf, neon
   submodule, autogen.sh) with `apt-get install litmus`. Ubuntu packages
   a stable release, decoupling us from upstream litmus master
   instability and using apt's built-in caching.
6. Decoupled from unstable upstream — apt's stable-release packaging
   plays the same role a separate fork/repo would (Duncan's #6 ask),
   without the maintenance overhead of a new repo.

The litmus-baseline.txt + litmus-check.sh stay in
extensions/webdav/src/test/resources/ and are invoked by the bats spec.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
[bugfix] Preserve static context in union-step distribution
…empty-termMap scans

Closes #5738

util:expand with match-highlighting on full-text hits was several orders of
magnitude slower than util:expand with highlighting off, even on small result
sets. The reporter's bench showed ~1052 ms vs ~2.7 ms for a single hit and
the gap widened to several seconds for batch util:expand($hits) over a
wildcard-matched corpus.

LuceneMatchListener.reset() runs once per node passed through the serializer
chain. Two costs were repeated unnecessarily on every reset():

1. getTerms() reopened the IndexReader and re-rewrote each query's terms,
   even when the prior reset() had just done the same work. For wildcard
   and prefix queries on large indexes, term enumeration dominates.

2. scanMatches() walked the entry's XML stream and tokenized its text
   even when termMap was empty - the typical case for named-field queries
   like `lemma:Aachen` after PR #3467's configured-field exclusion. Every
   token lookup returned null but the work was done anyway.

Fix:

- Cache rewritten rawTerms per Lucene Query identity in a bounded LRU
  (max 32 entries). Lucene Query.equals is content-based, so semantically
  equal queries share a cache slot. Batch util:expand($hits) where every
  hit shares one ft:query now pays the term-rewrite cost once, not per hit.

- After getTerms() builds termMap, short-circuit reset() and startElement()
  when termMap is empty. No token can match, nodesWithMatch will stay
  empty, and characters() always passes through unchanged - so the SAX
  events flow without any deep scanning work.

Measured on an isolated reproducer (5000 TEI-style entries, lemma:a*
wildcard returning ~2500 hits):
- batch util:expand($hits): 1441 ms -> 312 ms (~4.6x)

Single-hit subsequence($hits, 1, 1) cases remain fast in the embedded
reproducer; the larger gains the issue reports come from the batch
serialization path and from skipping scanMatches when the configured-field
exclusion would have produced an empty termMap anyway.

Tests:
- UtilExpandHighlightingPerformanceTest covers correctness (PR #3467
  field-exclusion preserved, batch expand matches per-hit for-loop) and
  perf-threshold regression guards (single-hit ratio < 20x, batch
  ratio < 15x).
- All existing LuceneMatchListenerTest, LuceneIndexTest,
  SerializeAttrMatchesTest, ExpandTest, and ngram tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…emoization

Per review on PR #6318: replace the bounded LinkedHashMap LRU with a
Caffeine cache. Caffeine is already in the eXist dep graph; using it
gives configurable size, statistics, proper concurrency, and eviction
policies, instead of the hand-rolled LRU.

Same 32-entry bound as before. Behavior unchanged: a Lucene Query's
rewritten terms are computed once per query identity within the
listener's lifetime.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ncan review)

Per @duncdrum's review of #6318:
- The correctness checks fit xqsuite better than surefire (in-DB query shape,
  no need for Java-side BrokerPool setup or ENTRY_COUNT scale).
- The two perf-ratio tests (singleHit < 20x, batch < 15x) belong in JMH, not
  surefire — perf assertions are inherently flaky on shared CI runners and
  the index-extension reactor doesn't have a benchmark module yet. Filed as
  follow-up issue; deferring out of this PR.

Replaces UtilExpandHighlightingPerformanceTest.java (5 @test methods) with
extensions/indexes/lucene/src/test/xquery/lucene/ft-expand-highlight.xqm
(3 xqsuite tests). The xqsuite spec runs via the existing
xquery.lucene.LuceneTests launcher.

The 3 retained tests map 1:1 to the 3 original correctness checks:
- named-field-query-produces-no-highlights — PR #3467 invariant (the
  empty-termMap short-circuit's safety property)
- implicit-field-query-still-highlights — sanity check that the
  short-circuit doesn't over-suppress
- batch-expand-matches-per-hit-for-loop — the path the term-rewrite cache
  exercises

The TEI-flavored test corpus is gone — replaced with a generic dict/entry
shape using only the minimal element vocabulary needed (entry, form, orth,
sense, def) and no XML namespaces, addressing Duncan's "boilerplate
without testing value" comment.

Verified: 633/0/0 in xquery.lucene.LuceneTests on Java 21 (was 630 before
this commit; +3 from the new spec).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…recate functionsOrdered flag

Closes #6378

The functionsOrdered=true constructor flag opted modules into binary
search at the cost of an unenforced precondition: callers had to pass
a FunctionDef[] already sorted by FunctionId order. Five first-party
modules learned to satisfy the contract via boilerplate static blocks
(`static { Arrays.sort(functions, new FunctionComparator()); }`).
Third-party modules unaware of the convention (e.g. existdb-openapi's
cursor module, see #6376) silently lost function-lookup reachability
when their declaration order happened to violate the binary-search
contract.

Per duncdrum's preference on #6378, the broken-when-unsorted behavior
is removed. Per line-o's review of #6384, the 3-arg constructor is
retained as @deprecated rather than removed outright, so external
modules continue to compile against eXist 7 without source changes —
just a deprecation warning.

Changes to AbstractInternalModule.java:
- 2-arg constructor (FunctionDef[], Map) now defensive-copies + sorts
  the array. The caller's static final array is left intact.
- 3-arg constructor (FunctionDef[], Map, boolean) marked @deprecated
  (since="7.0.0", forRemoval=true). The boolean parameter is ignored;
  the constructor delegates to the 2-arg form.
- Remove the `ordered` field and the `if (ordered)` branch in
  getFunctionDef(); binary search is now unconditional.
- Reorder field declarations above the FunctionComparator inner class
  per PMD FieldDeclarationsShouldBeAtStartOfClass.

Sort cost: O(N log N) once per module instance construction; trivial
at typical module sizes (eXist's largest is FnModule with ~500
functions, sorted in microseconds).

Tests (AbstractInternalModuleSortTest):
- unsortedDeclarationOrderStillFindsAllFunctions — the #6376
  reproducer, now safe by construction
- callerArrayIsNotMutated — verifies the defensive copy
- alreadySortedArrayFindsAllFunctions — common-case sanity
- sameQnameDifferentAritiesAllFound — secondary sort key honored
- deprecatedThreeArgConstructorStillWorks — backwards-compat: an
  external module compiled against pre-#6378 eXist that still uses
  super(functions, parameters, true|false) compiles and produces a
  functioning module via the @deprecated delegating constructor

Caller updates and removal of redundant static-sort blocks ship in
the follow-up commit in the same PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…uctors

Follow-up to the AbstractInternalModule deprecation (#6378). The
boolean third argument has no effect — the base class always sorts.
20 callers switch to the cleaner 2-arg form so the codebase doesn't
keep emitting deprecation warnings against itself, and the 5 modules
that carried a `static { Arrays.sort(functions, new FunctionComparator()); }`
block no longer need it (the base class does this work); remove the
blocks and the now-unused java.util.Arrays imports.

Callers updated (20 files):
- exist-core: BackupModule, FnModule, InspectionModule, RequestModule,
  UtilModule, XMLDBModule, ArrayModule, MapModule, WebSocketModule,
  ConsoleCompatModule.
- extensions: ContentExtractionModule, ExiftoolModule, XQDocModule,
  CounterModule, ProcessModule, VectorModule, LuceneModule,
  SortModule, NGramModule, RangeIndexModule.

Static-sort blocks removed (5 modules): XMLDBModule, UtilModule,
RequestModule, FnModule, CounterModule.

External modules compiled against pre-#6378 eXist that still use the
deprecated 3-arg constructor will continue to compile against eXist 7
with a deprecation warning, no source changes required.

Net: -34 lines of boilerplate across the codebase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bumps the maven-plugins-apache group with 1 update in the / directory: [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer).


Updates `org.apache.maven.plugins:maven-enforcer-plugin` from 3.6.2 to 3.6.3
- [Release notes](https://github.com/apache/maven-enforcer/releases)
- [Commits](apache/maven-enforcer@enforcer-3.6.2...enforcer-3.6.3)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-enforcer-plugin
  dependency-version: 3.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-plugins-apache
...

Signed-off-by: dependabot[bot] <support@github.com>
[refactor] Always sort internal-module FunctionDef[]; drop functionsOrdered flag (#6378)
…-apache-92c47fc95f

Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.6.2 to 3.6.3 in the maven-plugins-apache group across 1 directory
[bugfix] following::* axis position-dependence (#2129)
…egistered-modules()

Previously, util:registered-modules() only returned namespace URIs from
Java built-in modules and Java EXPath package modules. XQuery EXPath
package modules and conf.xml-mapped XQuery modules were invisible.

This expands util:registered-modules() to enumerate all four module
sources with deduplication, and adds util:registered-modules-info() which
returns a sequence of maps with keys "uri", "prefix", and "source" (one
of "built-in", "package", or "mapped").

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e modules

The 0-arity util:registered-functions() previously only enumerated
functions from already-loaded modules. This resolves Java EXPath package
modules that haven't been imported yet, making their functions
discoverable. Adds deduplication across all function sources.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace boolean %test:assertTrue assertions with more informative ones
that show what failed on failure:

- util-is-registered: %test:assertEquals("true") for clear expected value
- no-duplicates: %test:assertEquals(0) shows duplicate count on failure
- info-missing-keys: %test:assertEmpty returns offending maps on failure
- info-invalid-sources: %test:assertEmpty returns maps with bad sources
- info-uris-match-registered: split into two %test:assertEmpty tests
  (registered-not-in-info, info-not-in-registered) showing mismatched URIs
- util-is-built-in: %test:assertEquals("built-in") for clear expected value
- mapped-modules-in-registered: kept %test:assertTrue (universal quantifier)

Uses map:get() instead of ?key lookup syntax for XQ 3.1 parser compat.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Per @line-o's review: use the mutable add(key, value) method instead
of the immutable put() which returns a new MapType each time. Cleaner
and avoids unnecessary object creation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Applies the five inline review comments from #6182 (2026-05-07):

ExistRepository.java
- Extract the EXPath namespace URI as a PKG_NAMESPACE constant (matches
  the existing pattern in AppRestoreUtils + Deployment).
- Extract the expath-pkg.xml parsing out of getXQueryModules() into a
  new private getExpathPkgXQueryModules(Package) helper. Inverts the
  pkgDescriptor null/missing check so the common case stays at minimal
  indentation; also flattens the inner empty-namespace check with a
  continue.

BuiltinFunctions.java
- Rename addFunctionsFromModulesDedup -> addDistinctFunctionsFromModules
  (3 call sites updated).

ModuleInfo.java
- Extract the switch's default arm into a new private
  evalRegisteredModules() method, mirroring the already-extracted
  evalRegisteredModulesInfo() pattern. The switch expression now reads
  uniformly as one-line arrows.

No behaviour changes. xquery.util.UtilTests passes 69/69 (includes the
moduleDiscoveryTest.xql assertions that exercise registered-modules()).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bumps the jline group with 2 updates: [org.jline:jline](https://github.com/jline/jline3) and [org.jline:jansi](https://github.com/jline/jline3).


Updates `org.jline:jline` from 4.1.0 to 4.1.2
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@4.1.0...4.1.2)

Updates `org.jline:jansi` from 4.1.0 to 4.1.2
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@4.1.0...4.1.2)

---
updated-dependencies:
- dependency-name: org.jline:jline
  dependency-version: 4.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jline
- dependency-name: org.jline:jansi
  dependency-version: 4.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jline
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the maven-plugins-apache group with 1 update: [org.apache.maven.plugins:maven-site-plugin](https://github.com/apache/maven-site-plugin).


Updates `org.apache.maven.plugins:maven-site-plugin` from 3.21.0 to 3.22.0
- [Release notes](https://github.com/apache/maven-site-plugin/releases)
- [Commits](apache/maven-site-plugin@maven-site-plugin-3.21.0...maven-site-plugin-3.22.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-site-plugin
  dependency-version: 3.22.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: maven-plugins-apache
...

Signed-off-by: dependabot[bot] <support@github.com>
XQueryContext.resolveInEXPathRepository computes the location of an
imported module relative to the importing module's load path via
Path.relativize(). When a client sends a synthetic load path that
isn't a real collection URI -- e.g. eXide sends "xmldb:exist://__new__1"
for unsaved in-memory buffers -- Path.relativize throws
IllegalArgumentException, which surfaces to the user as an XPath
compile error and prevents the query from importing any library module.

Extract the relativize call into a small package-private helper
(relativizeOrFallback) that catches IllegalArgumentException and falls
back to the absolute source collection, matching the behaviour of the
existing "." load-path case. Unit-tested in XQueryContextTest.

Reported by @line-o in the eXist-db Slack #core-dev channel (thread
2026-05-21 14:14 EDT).
joewiz and others added 30 commits June 2, 2026 18:01
Activate with `-Pizpack-rollback-5.2.4` to verify the IzPack 5.2.4 -> 5.2.5
upgrade caused the assembled installer JAR's console-mode regression:

    java -jar exist-installer/target/exist-installer-*.jar -console
    # Exception in thread "main" java.lang.NoClassDefFoundError:
    #   org/jsoup/nodes/Node
    #     at ... HTMLInfoConsolePanel construction

IzPack 5.2.5 rewrote AbstractTextConsolePanel's HTML extraction to use
jsoup (`Jsoup.parse` / `Document.selectFirst` / `Element.text` /
`Document.body`). izpack-installer-5.2.5.pom declares jsoup 1.18.3 as a
dependency, but the izpack-maven-plugin's installer-jar assembly does
not pull jsoup into the output. The 5.2.4 panel has no jsoup bytecode
references and is unaffected.

Building with this profile pins `izpack.version` to 5.2.4 and produces
an installer JAR that runs through the first HTMLInfoPanel cleanly
under both GUI and console modes. Verified locally.

Default behaviour stays on 5.2.5 (still broken in console mode) so this
PR does not unilaterally land a one-direction fix; the profile is the
A/B harness for confirming the rollback resolves the symptom (on
Windows + macOS + Linux) before deciding whether to roll back or wait
for an upstream izpack-maven-plugin fix.
Bumps `jetty.version` from 12.1.9 to 12.1.10.

Updates `org.eclipse.jetty:jetty-server` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-xml` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-util` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-jmx` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-security` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-http` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10:jetty-ee10-annotations` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-deploy` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10:jetty-ee10-jndi` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10:jetty-ee10-plus` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10:jetty-ee10-servlet` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10:jetty-ee10-webapp` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client` from 12.1.9 to 12.1.10

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-server
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-xml
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-util
  dependency-version: 12.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-jmx
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-security
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-http
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-annotations
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty:jetty-deploy
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-jndi
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-plus
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-servlet
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-webapp
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client
  dependency-version: 12.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
A/B confirmed via the profile in the previous commit: IzPack 5.2.5's
new jsoup runtime dep is missing from the assembled installer JAR, so
`java -jar exist-installer-*.jar -console` crashes on the first
HTMLInfoPanel with NoClassDefFoundError: org.jsoup.nodes.Node. 5.2.4
has no jsoup bytecode in that path and runs cleanly.

Per Patrick (Slack thread): a proper upstream fix would need a new
IzPack release (5.2.6+) that updates the izpack-maven-plugin's
assembly to bundle jsoup. Until that ships, this PR pins
`izpack.version` directly to 5.2.4 as the unblocking change for the
7.0.0 release (which Duncan endorsed in the same thread).

Drops the diagnostic profile added in the previous commit — once
develop is on 5.2.4 there's nothing to A/B against. Net change
versus develop is now a one-line property bump in
exist-parent/pom.xml.

Verified locally on macOS (Zulu 21): build clean, `java -jar … -console`
renders the "Information / Welcome to the eXist-db Installer!" panel
and waits for input.
Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.18.8 to 1.18.10.
- [Release notes](https://github.com/raphw/byte-buddy/releases)
- [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md)
- [Commits](raphw/byte-buddy@byte-buddy-1.18.8...byte-buddy-1.18.10)

---
updated-dependencies:
- dependency-name: net.bytebuddy:byte-buddy
  dependency-version: 1.18.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the actions group with 2 updates: [actions/download-artifact](https://github.com/actions/download-artifact) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).


Updates `actions/download-artifact` from 7 to 8
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v7...v8)

Updates `softprops/action-gh-release` from 2.6.2 to 3.0.0
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](softprops/action-gh-release@3bb1273...b430933)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Patrick Reinhart <patrick@reini.net>
…-byte-buddy-1.18.10

Bump net.bytebuddy:byte-buddy from 1.18.8 to 1.18.10
[bugfix] repo:remove: throw with diagnostic info instead of swallowing exceptions
Signed-off-by: Patrick Reinhart <patrick@reini.net>
Bumps the jetty group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| org.eclipse.jetty:jetty-server | `12.1.9` | `12.1.10` |
| org.eclipse.jetty:jetty-xml | `12.1.9` | `12.1.10` |
| org.eclipse.jetty:jetty-util | `12.1.9` | `12.1.10` |
| org.eclipse.jetty:jetty-jmx | `12.1.9` | `12.1.10` |
| org.eclipse.jetty:jetty-security | `12.1.9` | `12.1.10` |
| org.eclipse.jetty:jetty-http | `12.1.9` | `12.1.10` |
| org.eclipse.jetty:jetty-deploy | `12.1.9` | `12.1.10` |



Updates `org.eclipse.jetty:jetty-server` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-xml` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-util` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-jmx` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-security` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-http` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-deploy` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-xml` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-util` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-jmx` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-security` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-http` from 12.1.9 to 12.1.10

Updates `org.eclipse.jetty:jetty-deploy` from 12.1.9 to 12.1.10

---
updated-dependencies:
- dependency-name: org.eclipse.jetty:jetty-deploy
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-deploy
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-http
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-http
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-jmx
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-jmx
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-security
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-security
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-server
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-util
  dependency-version: 12.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-util
  dependency-version: 12.1.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-xml
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
- dependency-name: org.eclipse.jetty:jetty-xml
  dependency-version: 12.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jetty
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the maven-plugins-tools group with 1 update: [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco).


Updates `org.jacoco:jacoco-maven-plugin` from 0.8.14 to 0.8.15
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](jacoco/jacoco@v0.8.14...v0.8.15)

---
updated-dependencies:
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-version: 0.8.15
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-plugins-tools
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [com.fifesoft:rsyntaxtextarea](https://github.com/bobbylight/rsyntaxtextarea) from 3.6.2 to 3.6.3.
- [Release notes](https://github.com/bobbylight/rsyntaxtextarea/releases)
- [Commits](bobbylight/RSyntaxTextArea@3.6.2...3.6.3)

---
updated-dependencies:
- dependency-name: com.fifesoft:rsyntaxtextarea
  dependency-version: 3.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…rsyntaxtextarea-3.6.3

Bump com.fifesoft:rsyntaxtextarea from 3.6.2 to 3.6.3
…-tools-a950eb37a6

Bump org.jacoco:jacoco-maven-plugin from 0.8.14 to 0.8.15 in the maven-plugins-tools group
Bump the jetty group across 1 directory with 7 updates
The autodeploy directory system property was set with Unix-style variable
syntax in the Windows batch template:

    -Dexist.autodeploy.dir="$BASEDIR\autodeploy"

In a .bat script $BASEDIR is not expanded, so exist.autodeploy.dir pointed at
a literal "$BASEDIR\autodeploy" path that does not exist. eXist therefore found
no autodeploy directory and installed none of the bundled packages on Windows
(empty apps collection, dashboard and eXide returning 404). Every other system
property in the template already uses Windows-style %BASEDIR%; this line was the
only Unix-style reference, introduced when the autodeploy.dir property was added
in PR #6267. Use %BASEDIR% to match.

Closes #6456
Bumps the jackson group with 2 updates in the / directory: [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) and [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson).


Updates `com.fasterxml.jackson.core:jackson-core` from 2.21.3 to 2.22.0
- [Commits](FasterXML/jackson-core@jackson-core-2.21.3...jackson-core-2.22.0)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.21.3 to 2.22.0
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.21.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: jackson
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: jackson
...

Signed-off-by: dependabot[bot] <support@github.com>
…192c4

Bump the jackson group across 1 directory with 2 updates
`ExistWebServer` probed for a free port by opening and immediately
closing a ServerSocket, then passed that port number to Jetty.
Between the probe and Jetty's `bind()` another fork JVM (forkCount=2C)
could claim the same port, producing sporadic "Failed to bind" failures
in the WebDAV test suite and anywhere else ExistWebServer is used.

Fix seems almost too simply just set port to `0` and let the OS handle
it.
[bugfix] eliminate port-binding TOCTOU race in test servers
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants