projects
/
lgpl
/
argeo-commons.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
00fec50
)
Admin session to the proper content provider workspace
author
Mathieu Baudier <mbaudier@argeo.org>
Fri, 12 Aug 2022 07:36:29 +0000
(09:36 +0200)
committer
Mathieu Baudier <mbaudier@argeo.org>
Fri, 12 Aug 2022 07:36:29 +0000
(09:36 +0200)
jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/CmsJcrUtils.java
patch
|
blob
|
history
jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/acr/JcrContentProvider.java
patch
|
blob
|
history
org.argeo.api.cms/src/org/argeo/api/cms/CmsAuth.java
patch
|
blob
|
history
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 4a28dca772652578b6e031107362835a47c39eb4..3849c5b97fac4c90611a8987f8d93ba7e84f0882 100644
(file)
--- 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
@@
-20,6
+20,7
@@
import javax.security.auth.login.LoginException;
import org.argeo.api.cms.CmsAuth;
import org.argeo.api.cms.CmsConstants;
import org.argeo.api.cms.CmsAuth;
import org.argeo.api.cms.CmsConstants;
+import org.argeo.jcr.JcrUtils;
/** Utilities related to Argeo model in JCR */
public class CmsJcrUtils {
/** Utilities related to Argeo model in JCR */
public class CmsJcrUtils {
@@
-245,7
+246,7
@@
public class CmsJcrUtils {
public static Session openDataAdminSession(Repository repository, String workspaceName) {
LoginContext loginContext;
try {
public static Session openDataAdminSession(Repository repository, String workspaceName) {
LoginContext loginContext;
try {
- loginContext =
new LoginContext(CmsAuth.LOGIN_CONTEXT_DATA_ADMIN
);
+ loginContext =
CmsAuth.DATA_ADMIN.newLoginContext(
);
loginContext.login();
} catch (LoginException e1) {
throw new RuntimeException("Could not login as data admin", e1);
loginContext.login();
} catch (LoginException e1) {
throw new RuntimeException("Could not login as data admin", e1);
@@
-260,8
+261,8
@@
public class CmsJcrUtils {
@Override
public Session run() {
try {
@Override
public Session run() {
try {
- return
repository.login(
workspaceName);
- } catch (NoSuchWorkspaceException e) {
+ 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);
throw new IllegalArgumentException("No workspace " + workspaceName + " available", e);
} catch (RepositoryException e) {
throw new RuntimeException("Cannot open data admin session", e);
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 08f0ee12fa48a36ed061bd33314d29cd565d8336..eaa27b7fc631d806fde1f1590c0eca142f786cd7 100644
(file)
--- 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;
private String mountPath;
+ // cache
+ private String jcrWorkspace;
+
private Map<ProvidedSession, JcrSessionAdapter> sessionAdapters = Collections.synchronizedMap(new HashMap<>());
public void start(Map<String, String> properties) {
private Map<ProvidedSession, JcrSessionAdapter> sessionAdapters = Collections.synchronizedMap(new HashMap<>());
public void start(Map<String, String> 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);
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() {
}
public void stop() {
@@
-51,7
+55,6
@@
public class JcrContentProvider implements ContentProvider, NamespaceContext {
@Override
public ProvidedContent get(ProvidedSession contentSession, String relativePath) {
@Override
public ProvidedContent get(ProvidedSession contentSession, String relativePath) {
- String jcrWorkspace = ContentUtils.getParentPath(mountPath)[1];
String jcrPath = "/" + relativePath;
return new JcrContent(contentSession, this, jcrWorkspace, jcrPath);
}
String jcrPath = "/" + relativePath;
return new JcrContent(contentSession, this, jcrWorkspace, jcrPath);
}
diff --git
a/org.argeo.api.cms/src/org/argeo/api/cms/CmsAuth.java
b/org.argeo.api.cms/src/org/argeo/api/cms/CmsAuth.java
index 6ecfeba11c6689283b04507e9243c9ea6eaa7df8..31ec8be5071f63dce2eaa4b0e89bb13dfd0c10e6 100644
(file)
--- a/
org.argeo.api.cms/src/org/argeo/api/cms/CmsAuth.java
+++ b/
org.argeo.api.cms/src/org/argeo/api/cms/CmsAuth.java
@@
-30,6
+30,10
@@
public enum CmsAuth {
return new LoginContext(getLoginContextName(), subject);
}
return new LoginContext(getLoginContextName(), subject);
}
+ public LoginContext newLoginContext() throws LoginException {
+ return new LoginContext(getLoginContextName());
+ }
+
/*
* LOGIN CONTEXTS
*/
/*
* LOGIN CONTEXTS
*/