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 2110 commits into
EIDO-Systems:developfrom
eXist-db:develop
Open

[pull] develop from eXist-db:develop#383
pull[bot] wants to merge 2110 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 : )

joewiz and others added 28 commits July 11, 2026 22:50
…zation

The native EXPath HTTP Client ignored the @method attribute on http:body, so an
inline body could only be XML-serialized or sent as text -- a binary/base64/hex
inline body could not be sent at all (only http:body/@src, added in #6510/#6511,
delivered raw bytes). RequestBuilder now honors @method (EXPath HTTP Client 3.1):

- binary / base64: the body's content is base64-decoded and sent as raw bytes.
- hex: the content is hex-decoded and sent as raw bytes.
- text: the content's string value is sent (an element child is serialized as
  its text, not its markup).
- xml / xhtml / html (or no @method): unchanged -- child elements are
  XML-serialized as before.

Malformed base64/hex content raises err:HC005. The string value of body content
is computed by an explicit recursive walk, because the in-memory DOM's
getTextContent does not recurse into element children of a constructed http:body.

Multipart-part @method, JSON/adaptive serialization, and multiple external
$bodies remain follow-ups (#6512).

SendRequestFunctionTest gains bodyMethodBinarySendsDecodedBytes,
bodyMethodHexSendsDecodedBytes, and bodyMethodTextSerializesAsText.

Part of #6512

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per @reinhapa's review of PR #6513:

- Rewrite isRawContentMethod as a switch expression for readability. The
  bare switch would NPE on a null selector, so it uses a `case null, default`
  label -- the prior `||`-of-`equals` chain was implicitly null-safe, and
  bodyMethod is null whenever http:body has no @method attribute (the common
  case). Without the guard, every body lacking @method threw a
  NullPointerException ("Cannot invoke String.hashCode()").
- Convert the three new bodyMethod* test query strings to text blocks with
  formatted(baseUrl()).

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

Address review feedback (dizzzz): the text/xml/xhtml/html (or no @method)
default was a bare fall-through after two guard-clause ifs. Restructure the
three cases into if / else if / else so the default is clearly the
mutually-exclusive final branch, with a comment naming it. No behavior change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThoADnh6VvDt5w8kz7d2d3
A multipart response was split with String.split("--" + boundary) over a UTF-8
decode of the body, which corrupts any binary part (a non-UTF-8 byte sequence
does not survive the String round-trip), and a nested multipart part was not
parsed recursively.

splitMultipart, extractPartContentType, and extractPartBody now operate on the
raw bytes: the body is split at the boundary using a byte-level search, each
part's header region is decoded as ISO-8859-1 (a total byte->char map) only to
read the Content-Type, and the part body is sliced as bytes -- so a binary part
round-trips byte-for-byte. addBody now recurses into a part whose media type is
multipart/*, so nested multipart responses surface their leaf parts.

SendRequestFunctionTest gains multipartBinaryPartIsByteSafe (a 0xFF 0xFE part
round-trips as base64Binary "//4=") and multipartNestedIsParsedRecursively
(outer[ multipart[A,B], C ] -> A,B,C). The two new endpoints are registered in a
helper to keep startHttpServer's complexity unchanged.

Per-part header reproduction in the http:multipart descriptor remains a follow-up.

Part of #6512

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per @reinhapa's review of PR #6515: import java.io.ByteArrayOutputStream and
use the simple name instead of the fully-qualified form. Applied to both
occurrences in the multipart test endpoints.

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

Address review feedback (dizzzz): switch the two java.io.ByteArrayOutputStream
uses in the test's HTTP endpoints to commons-io's UnsynchronizedByteArrayOutputStream,
the house convention (already used elsewhere in this file), for memory efficiency.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThoADnh6VvDt5w8kz7d2d3
The previous commit's switch to commons-io UnsynchronizedByteArrayOutputStream
in SendRequestFunctionTest used commons-io without declaring it, which the
maven-dependency-plugin analyze gate (failOnWarning) rejects as an undeclared,
non-test-scoped dependency. Declare commons-io at test scope, mirroring
extensions/modules/file/pom.xml. Version is managed by the parent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThoADnh6VvDt5w8kz7d2d3
…olution

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

[bugfix] http-client: byte-safe multipart response parsing with nesting
…ldb: base

XmldbURI#getURI strips the xmldb: prefix for xmldb:exist:// URIs but keeps
it for the short xmldb:/db/... form, so unconditionally prepending it yielded
xmldb:xmldb:/db/... A resolved stylesheet is now its own system id, so this
was reached by any relative xsl:import within an imported stylesheet.

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

RFC 3986 discards the last segment of the base, which is correct for a document
but not for a collection: resolving style.xsl against the collection /db/apps/app
yielded /db/apps/style.xsl. A collection and a document are not distinguishable by
path alone, so the absence of an extension in the last segment is taken to mean a
collection. Outside the database RFC 3986 still applies unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bumps the junit-jupiter-bom group with 4 updates: [org.junit:junit-bom](https://github.com/junit-team/junit-framework), [org.junit.platform:junit-platform-engine](https://github.com/junit-team/junit-framework), [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit-framework) and [org.junit.vintage:junit-vintage-engine](https://github.com/junit-team/junit-framework).


Updates `org.junit:junit-bom` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.platform:junit-platform-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.jupiter:junit-jupiter-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.vintage:junit-vintage-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.platform:junit-platform-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.jupiter:junit-jupiter-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

Updates `org.junit.vintage:junit-vintage-engine` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](junit-team/junit-framework@r6.1.1...r6.1.2)

---
updated-dependencies:
- dependency-name: org.junit:junit-bom
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: junit-jupiter-bom
- dependency-name: org.junit.platform:junit-platform-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: junit-jupiter-bom
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: junit-jupiter-bom
- dependency-name: org.junit.vintage:junit-vintage-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: junit-jupiter-bom
- dependency-name: org.junit.platform:junit-platform-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: junit-jupiter-bom
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: junit-jupiter-bom
- dependency-name: org.junit.vintage:junit-vintage-engine
  dependency-version: 6.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: junit-jupiter-bom
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) from 1.84 to 1.85.
- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)
- [Commits](https://github.com/bcgit/bc-java/commits)

---
updated-dependencies:
- dependency-name: org.bouncycastle:bcprov-jdk18on
  dependency-version: '1.85'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…tle-bcprov-jdk18on-1.85

Bump org.bouncycastle:bcprov-jdk18on from 1.84 to 1.85
…-bom-7b9e9837d1

Bump the junit-jupiter-bom group with 4 updates
Set a Jetty stop timeout so shutdown does not block indefinitely on
active connections; move ShutdownListenerImpl.shutdown() to a daemon
thread so it does not deadlock the Jetty shutdown-hook thread that
also holds the BrokerPool write lock.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…generate SchemaVersion constants

Extend the Maven validate phase to check every schema/*.xsd against the
W3C XSD 1.1 meta-schema (upgrading the bundled XMLSchema.xsd/dtd to the
2009 XSD 1.1 revision); caught and removed five xsi:type="dcterms:W3CDTF"
appinfo annotations with no backing schema, bumping the affected schema
@Version values. Wire a generate-sources execution that reads each
governed XSD's xs:schema/@Version and emits SchemaVersion.java constants
so they can never drift from the schemas.

Closes #5541
…line

Wire the XML Catalog API into Saxon's XsltCompiler so xsl:import,
xsl:include, and document() URIs resolve via the eXist-db entity catalog
(Closes #350). Generalize MutableCollection's at-store-time validation to
route through a JAXP 1.1 SchemaFactory when the schema or its catalog-
resolved meta-schema requires XSD 1.1; extract the detection logic into
Xsd11SchemaDetection so validation:jaxp() and org.exist.validation.Validator
share the same probe-compile path. Suppress the spurious xmlresolver WARNING
for the non-existent "default" catalog entry.

Closes #5541
… XML_SCHEMA_NS

XML_SCHEMA_NS was never read — callers already used XMLConstants directly.
XSD_1_1_NS is promoted to Namespaces.XSD_1_1_NS so it is available
codebase-wide without duplication.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [org.apache.mina:mina-core](https://github.com/apache/mina) from 2.1.12 to 2.1.13.
- [Commits](apache/mina@2.1.12...2.1.13)

---
updated-dependencies:
- dependency-name: org.apache.mina:mina-core
  dependency-version: 2.1.13
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Fix Jetty shutdown hang and BrokerPool read-only race
Adds the resolution boundary only; no execution entry point uses it yet, so
behaviour is unchanged.

Part of #6568

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A caller with EXECUTE but not READ must learn only that the execution failed.
The full error is logged at WARN with a correlation id. The disclosure level is
recomputed from the current subject on every execution, as compiled queries are
pooled across users. Nothing routes errors through the filter yet.

Part of #6568

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
XQuery.compile validated READ on a DBSource, which is the barrier that makes
execute-without-read impossible: the resolution boundary can hand an execute-only
caller a handle, but compiling it was still refused. The source is compiled on the
caller's behalf, so EXECUTE is the right gate; reading a query as data still
requires READ.

Dormant on existing paths: every current loader acquires its DBSource through a
READ-gated getter, so nothing reaches compile without READ until Phase 1b.

Part of #6568

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
duncdrum and others added 30 commits August 20, 2026 08:03
…ctools-core-4.0.7

Bump org.jctools:jctools-core from 4.0.6 to 4.0.7
…me-npe

[bugfix] xmldb:store: parse binary content stored under an XML mime type
Bumps [com.mycila:license-maven-plugin](https://github.com/mathieucarbou/license-maven-plugin) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/mathieucarbou/license-maven-plugin/releases)
- [Changelog](https://github.com/mathieucarbou/license-maven-plugin/blob/master/docs/releases.md)
- [Commits](mathieucarbou/license-maven-plugin@v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: com.mycila:license-maven-plugin
  dependency-version: 5.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
[feature] Add @enabled attribute to conf.xml elements to disable entries without removing them
Bumps the actions group with 3 updates: [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action), [actions/download-artifact](https://github.com/actions/download-artifact) and [marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment).


Updates `docker/setup-buildx-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@bb05f3f...37fe631)

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

Updates `marocchino/sticky-pull-request-comment` from 2 to 3
- [Release notes](https://github.com/marocchino/sticky-pull-request-comment/releases)
- [Commits](marocchino/sticky-pull-request-comment@v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: marocchino/sticky-pull-request-comment
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the junit4-test-support group with 1 update: [org.easymock:easymock](https://github.com/easymock/easymock).


Updates `org.easymock:easymock` from 5.6.0 to 5.7.0
- [Release notes](https://github.com/easymock/easymock/releases)
- [Changelog](https://github.com/easymock/easymock/blob/master/ReleaseNotes.md)
- [Commits](easymock/easymock@easymock-5.6.0...easymock-5.7.0)

---
updated-dependencies:
- dependency-name: org.easymock:easymock
  dependency-version: 5.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: junit4-test-support
...

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

Bump the actions group with 3 updates
…upport-21d52e89f5

Bump org.easymock:easymock from 5.6.0 to 5.7.0 in the junit4-test-support group
Bumps `greenmail.version` from 2.1.12 to 2.1.13.

Updates `com.icegreen:greenmail-junit4` from 2.1.12 to 2.1.13
- [Release notes](https://github.com/greenmail-mail-test/greenmail/releases)
- [Commits](greenmail-mail-test/greenmail@release-2.1.12...release-2.1.13)

Updates `com.icegreen:greenmail` from 2.1.12 to 2.1.13
- [Release notes](https://github.com/greenmail-mail-test/greenmail/releases)
- [Commits](greenmail-mail-test/greenmail@release-2.1.12...release-2.1.13)

---
updated-dependencies:
- dependency-name: com.icegreen:greenmail-junit4
  dependency-version: 2.1.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: com.icegreen:greenmail
  dependency-version: 2.1.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Bump greenmail.version from 2.1.12 to 2.1.13
Bumps `tika.version` from 3.3.2 to 4.0.0.

Updates `org.apache.tika:tika-core` from 3.3.2 to 4.0.0
- [Changelog](https://github.com/apache/tika/blob/main/CHANGES.txt)
- [Commits](apache/tika@3.3.2...4.0.0)

Updates `org.apache.tika:tika-parsers-standard-package` from 3.3.2 to 4.0.0

---
updated-dependencies:
- dependency-name: org.apache.tika:tika-core
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: org.apache.tika:tika-parsers-standard-package
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.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.3.1 to 4.4.0
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@4.3.1...4.4.0)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [io.github.hakky54:logcaptor](https://github.com/Hakky54/log-captor) from 2.12.6 to 2.12.7.
- [Changelog](https://github.com/Hakky54/log-captor/blob/master/CHANGELOG.MD)
- [Commits](Hakky54/log-captor@v2.12.6...v2.12.7)

---
updated-dependencies:
- dependency-name: io.github.hakky54:logcaptor
  dependency-version: 2.12.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

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

Bump tika.version from 3.3.2 to 4.0.0
…ky54-logcaptor-2.12.7

Bump io.github.hakky54:logcaptor from 2.12.6 to 2.12.7
Bumps the actions group with 3 updates: [actions/setup-java](https://github.com/actions/setup-java), [azure/login](https://github.com/azure/login) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).


Updates `actions/setup-java` from 5 to 6
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@v5...v6)

Updates `azure/login` from 3.0.1 to 3.0.2
- [Release notes](https://github.com/azure/login/releases)
- [Commits](Azure/login@f5d393a...7ddb5af)

Updates `softprops/action-gh-release` from 3.0.2 to 3.0.3
- [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@3d0d988...efb3536)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: azure/login
  dependency-version: 3.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

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


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

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
  dependency-version: 3.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven-plugins-apache
...

Signed-off-by: dependabot[bot] <support@github.com>
…-apache-9d8ad5c4fc

Bump org.apache.maven.plugins:maven-compiler-plugin from 3.15.0 to 3.16.0 in the maven-plugins-apache group
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.4.0 to 4.4.1
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@4.4.0...4.4.1)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [org.xmlresolver:xmlresolver](https://github.com/xmlresolver/xmlresolver) from 6.0.23 to 6.1.0.
- [Release notes](https://github.com/xmlresolver/xmlresolver/releases)
- [Commits](https://github.com/xmlresolver/xmlresolver/commits)

---
updated-dependencies:
- dependency-name: org.xmlresolver:xmlresolver
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
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.

6 participants