From b6f36412d885db62817f9aff72da5a0de13f2e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20Jusevi=C4=8Dius?= Date: Fri, 15 May 2026 01:17:22 +0200 Subject: [PATCH 1/2] Derive server-side acl:mode() from Link response headers via $ldh:httpHeaders Java pushes outgoing response headers to XSLT as a $ldh:httpHeaders XdmMap (map(xs:string, xs:string*)) and the server-side acl:mode() parses Link entries with rel=acl#mode out of it, replacing the pre-aggregated $acl:mode param push. Drops the now-dead $acl:mode XSLT param default (and its ldh:listSuperClasses supertype-closure helper), the empty layout.xsl declaration, and converts the lone direct $acl:mode reference in admin/layout.xsl to acl:mode(). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../linkeddatahub/vocabulary/LDH.java | 3 ++ .../linkeddatahub/writer/XSLTWriterBase.java | 13 +++++++-- .../xsl/bootstrap/2.3.2/admin/layout.xsl | 2 +- .../xsl/bootstrap/2.3.2/document.xsl | 3 +- .../xsl/bootstrap/2.3.2/imports/default.xsl | 29 ++----------------- .../xsl/bootstrap/2.3.2/layout.xsl | 4 +-- 6 files changed, 19 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/atomgraph/linkeddatahub/vocabulary/LDH.java b/src/main/java/com/atomgraph/linkeddatahub/vocabulary/LDH.java index e8dcaebfe..629fe4d4a 100644 --- a/src/main/java/com/atomgraph/linkeddatahub/vocabulary/LDH.java +++ b/src/main/java/com/atomgraph/linkeddatahub/vocabulary/LDH.java @@ -94,6 +94,9 @@ public static String getURI() /** Request URI property */ public static final ObjectProperty requestUri = m_model.createObjectProperty(NS + "requestUri"); + + /** HTTP headers property */ + public static final ObjectProperty httpHeaders = m_model.createObjectProperty(NS + "httpHeaders"); /** Service property */ public static final ObjectProperty service = m_model.createObjectProperty( NS + "service" ); diff --git a/src/main/java/com/atomgraph/linkeddatahub/writer/XSLTWriterBase.java b/src/main/java/com/atomgraph/linkeddatahub/writer/XSLTWriterBase.java index f8a744e4d..af34a2035 100644 --- a/src/main/java/com/atomgraph/linkeddatahub/writer/XSLTWriterBase.java +++ b/src/main/java/com/atomgraph/linkeddatahub/writer/XSLTWriterBase.java @@ -54,6 +54,7 @@ import net.sf.saxon.s9api.QName; import net.sf.saxon.s9api.SaxonApiException; import net.sf.saxon.s9api.XdmAtomicValue; +import net.sf.saxon.s9api.XdmMap; import net.sf.saxon.s9api.XdmValue; import net.sf.saxon.s9api.XsltExecutable; import org.apache.http.HttpHeaders; @@ -144,9 +145,15 @@ public Map getParameters(MultivaluedMap> entry : headerMap.entrySet()) + { + List values = entry.getValue().stream(). + map(v -> new XdmAtomicValue(v.toString())). + collect(Collectors.toList()); + responseHeaders = responseHeaders.put(new XdmAtomicValue(entry.getKey()), XdmValue.makeSequence(values)); + } + params.put(new QName("ldh", LDH.httpHeaders.getNameSpace(), LDH.httpHeaders.getLocalName()), responseHeaders); if (getHttpHeaders().getRequestHeader(HttpHeaders.REFERER) != null) { diff --git a/src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/admin/layout.xsl b/src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/admin/layout.xsl index 10a74c813..c69e8ea64 100644 --- a/src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/admin/layout.xsl +++ b/src/main/webapp/static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/admin/layout.xsl @@ -71,7 +71,7 @@ exclude-result-prefixes="#all"> - +