X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=jcr%2Forg.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Facr%2FJcrContentProvider.java;h=eaa27b7fc631d806fde1f1590c0eca142f786cd7;hb=a2cb5d55f5d0e44d18fd1a2f5256111ad9fa0015;hp=08f0ee12fa48a36ed061bd33314d29cd565d8336;hpb=00fec502abb8eeccb813fe33d5e9ba53436b44d6;p=lgpl%2Fargeo-commons.git diff --git a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContentProvider.java b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContentProvider.java index 08f0ee12f..eaa27b7fc 100644 --- a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContentProvider.java +++ b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContentProvider.java @@ -30,6 +30,9 @@ public class JcrContentProvider implements ContentProvider, NamespaceContext { private String mountPath; + // cache + private String jcrWorkspace; + private Map sessionAdapters = Collections.synchronizedMap(new HashMap<>()); public void start(Map properties) { @@ -37,7 +40,8 @@ public class JcrContentProvider implements ContentProvider, NamespaceContext { if ("/".equals(mountPath)) throw new IllegalArgumentException("JCR content provider cannot be root /"); Objects.requireNonNull(mountPath); - adminSession = CmsJcrUtils.openDataAdminSession(jcrRepository, null); + jcrWorkspace = ContentUtils.getParentPath(mountPath)[1]; + adminSession = CmsJcrUtils.openDataAdminSession(jcrRepository, jcrWorkspace); } public void stop() { @@ -51,7 +55,6 @@ public class JcrContentProvider implements ContentProvider, NamespaceContext { @Override public ProvidedContent get(ProvidedSession contentSession, String relativePath) { - String jcrWorkspace = ContentUtils.getParentPath(mountPath)[1]; String jcrPath = "/" + relativePath; return new JcrContent(contentSession, this, jcrWorkspace, jcrPath); }