Remove JCR depdencies
[gpl/argeo-suite.git] / org.argeo.app.core / src / org / argeo / internal / app / core / AppUserStateImpl.java
diff --git a/org.argeo.app.core/src/org/argeo/internal/app/core/AppUserStateImpl.java b/org.argeo.app.core/src/org/argeo/internal/app/core/AppUserStateImpl.java
new file mode 100644 (file)
index 0000000..b7201a1
--- /dev/null
@@ -0,0 +1,33 @@
+package org.argeo.internal.app.core;
+
+import javax.jcr.Node;
+
+import org.argeo.api.acr.Content;
+import org.argeo.api.acr.ContentSession;
+import org.argeo.api.cms.CmsConstants;
+import org.argeo.api.cms.CmsSession;
+import org.argeo.app.api.AppUserState;
+import org.argeo.app.core.SuiteUtils;
+import org.argeo.cms.acr.ContentUtils;
+import org.argeo.cms.jcr.acr.JcrContentProvider;
+import org.argeo.jcr.Jcr;
+
+public class AppUserStateImpl implements AppUserState {
+       private JcrContentProvider jcrContentProvider;
+
+       @Override
+       public Content getOrCreateSessionDir(ContentSession contentSession, CmsSession session) {
+               Node userDirNode = jcrContentProvider.doInAdminSession((adminSession) -> {
+                       Node node = SuiteUtils.getOrCreateCmsSessionNode(adminSession, session);
+                       return node;
+               });
+               Content userDir = contentSession
+                               .get(ContentUtils.SLASH + CmsConstants.SYS_WORKSPACE + Jcr.getPath(userDirNode));
+               return userDir;
+       }
+
+       public void setJcrContentProvider(JcrContentProvider jcrContentProvider) {
+               this.jcrContentProvider = jcrContentProvider;
+       }
+
+}