X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fauth%2FCmsSessionImpl.java;h=f8d5863e69321f530ca818fc89c86b23b5f9ed64;hb=5b3108fe285bca50565b58b63fa4feddc96c0765;hp=863f7c202511bee640d447c129cd3981a35b12a3;hpb=6d206b9052689ffa880cd4593bfefa704dc0dd46;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java index 863f7c202..f8d5863e6 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/auth/CmsSessionImpl.java @@ -26,11 +26,11 @@ import javax.security.auth.login.LoginException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.api.NodeConstants; +import org.argeo.api.security.NodeSecurityUtils; import org.argeo.cms.CmsException; import org.argeo.cms.auth.CmsSession; import org.argeo.jcr.JcrUtils; -import org.argeo.node.NodeConstants; -import org.argeo.node.security.NodeSecurityUtils; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.InvalidSyntaxException; @@ -123,11 +123,15 @@ public class CmsSessionImpl implements CmsSession { private Subject getSubject() { return Subject.getSubject(initialContext); } - + public Set getSecretKeys() { return getSubject().getPrivateCredentials(SecretKey.class); } + public Session newDataSession(String cn, String workspace, Repository repository) { + return login(repository, workspace); + } + public synchronized Session getDataSession(String cn, String workspace, Repository repository) { // FIXME make it more robust if (workspace == null) @@ -178,6 +182,8 @@ public class CmsSessionImpl implements CmsSession { if (additionalDataSessions.contains(session)) { JcrUtils.logoutQuietly(session); additionalDataSessions.remove(session); + if (log.isTraceEnabled()) + log.trace("Remove additional data session " + session); return; } String path = cn + '/' + session.getWorkspace().getName(); @@ -187,6 +193,8 @@ public class CmsSessionImpl implements CmsSession { Session registeredSession = dataSessions.get(path); if (session != registeredSession) log.warn("Data session " + path + " not consistent for " + userDn); + if (log.isTraceEnabled()) + log.trace("Released data session " + session + " for " + path); notifyAll(); }