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;
private Subject getSubject() {
return Subject.getSubject(initialContext);
}
-
+
public Set<SecretKey> 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)
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();
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();
}