From cae8b15557882d8cf12aade6bb8a627e9a6a680f Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 17 Jun 2023 07:50:49 +0200 Subject: [PATCH] Fix ACR parent chaining through mount point. --- .../src/org/argeo/cms/jcr/acr/JcrContent.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java index 68eaf3e..dea60b9 100644 --- a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java +++ b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContent.java @@ -48,11 +48,15 @@ public class JcrContent extends AbstractContent { private String jcrWorkspace; private String jcrPath; + private final boolean isMountBase; + protected JcrContent(ProvidedSession session, JcrContentProvider provider, String jcrWorkspace, String jcrPath) { super(session); this.provider = provider; this.jcrWorkspace = jcrWorkspace; this.jcrPath = jcrPath; + + this.isMountBase = ContentUtils.SLASH_STRING.equals(jcrPath); } @Override @@ -201,8 +205,15 @@ public class JcrContent extends AbstractContent { @Override public Content getParent() { - if (Jcr.isRoot(getJcrNode())) // root - return null; + if (isMountBase) { + String mountPath = provider.getMountPath(); + if (mountPath == null || mountPath.equals("/")) + return null; + String[] parent = ContentUtils.getParentPath(mountPath); + return getSession().get(parent[0]); + } +// if (Jcr.isRoot(getJcrNode())) // root +// return null; return new JcrContent(getSession(), provider, jcrWorkspace, Jcr.getParentPath(getJcrNode())); } @@ -257,6 +268,8 @@ public class JcrContent extends AbstractContent { @Override public boolean isParentAccessible() { String jcrParentPath = ContentUtils.getParentPath(jcrPath)[0]; + if ("".equals(jcrParentPath)) // JCR root node + jcrParentPath = ContentUtils.SLASH_STRING; try { return provider.getJcrSession(getSession(), jcrWorkspace).hasPermission(jcrParentPath, Session.ACTION_READ); } catch (RepositoryException e) { -- 2.30.2