X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=jcr%2Forg.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2FCmsJcrUtils.java;h=7fde17751c82dc7b0450f4c0b95a6d2d755dfbaf;hb=90a958b611798d6f28c3fe223994a3e565dab8c1;hp=3849c5b97fac4c90611a8987f8d93ba7e84f0882;hpb=da78fca0c8b99cabab454d704136e0313342292c;p=lgpl%2Fargeo-commons.git diff --git a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/CmsJcrUtils.java b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/CmsJcrUtils.java index 3849c5b97..7fde17751 100644 --- a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/CmsJcrUtils.java +++ b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/CmsJcrUtils.java @@ -1,6 +1,5 @@ package org.argeo.cms.jcr; -import java.security.PrivilegedAction; import java.util.HashMap; import java.util.Map; @@ -14,13 +13,13 @@ import javax.jcr.Session; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; import javax.security.auth.AuthPermission; -import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; import javax.security.auth.login.LoginException; import org.argeo.api.cms.CmsAuth; import org.argeo.api.cms.CmsConstants; import org.argeo.jcr.JcrUtils; +import org.argeo.util.CurrentSubject; /** Utilities related to Argeo model in JCR */ public class CmsJcrUtils { @@ -256,20 +255,17 @@ public class CmsJcrUtils { ClassLoader currentCl = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(CmsJcrUtils.class.getClassLoader()); - return Subject.doAs(loginContext.getSubject(), new PrivilegedAction() { - - @Override - public Session run() { - try { - return JcrUtils.loginOrCreateWorkspace(repository, workspaceName); - } catch (NoSuchWorkspaceException e) {// should not happen - throw new IllegalArgumentException("No workspace " + workspaceName + " available", e); - } catch (RepositoryException e) { - throw new RuntimeException("Cannot open data admin session", e); - } + return CurrentSubject.callAs(loginContext.getSubject(), () -> { + try { + return JcrUtils.loginOrCreateWorkspace(repository, workspaceName); + } catch (NoSuchWorkspaceException e) {// should not happen + throw new IllegalArgumentException("No workspace " + workspaceName + " available", e); + } catch (RepositoryException e) { + throw new RuntimeException("Cannot open data admin session", e); } + } - }); + ); } finally { Thread.currentThread().setContextClassLoader(currentCl); }