]> git.argeo.org Git - lgpl/argeo-commons.git/blob - src/org/argeo/cms/jcr/gcr/JcrContentSession.java
Prepare next development cycle
[lgpl/argeo-commons.git] / src / org / argeo / cms / jcr / gcr / JcrContentSession.java
1 package org.argeo.cms.jcr.gcr;
2
3 import java.security.PrivilegedAction;
4 import java.util.Locale;
5
6 import javax.jcr.Repository;
7 import javax.jcr.RepositoryException;
8 import javax.jcr.Session;
9 import javax.security.auth.Subject;
10
11 import org.argeo.api.gcr.ContentSession;
12 import org.argeo.jcr.JcrException;
13
14 public class JcrContentSession implements ContentSession {
15 private Repository jcrRepository;
16 private Subject subject;
17 private Locale locale;
18 private Session jcrSession;
19
20 protected JcrContentSession(Repository jcrRepository, Subject subject, Locale locale) {
21 this.jcrRepository = jcrRepository;
22 this.subject = subject;
23 this.locale = locale;
24 this.jcrSession = Subject.doAs(this.subject, (PrivilegedAction<Session>) () -> {
25 try {
26 return jcrRepository.login();
27 } catch (RepositoryException e) {
28 throw new JcrException("Cannot log in to repository", e);
29 }
30 });
31 }
32
33 @Override
34 public Subject getSubject() {
35 return subject;
36 }
37
38 @Override
39 public Locale getLocale() {
40 return locale;
41 }
42
43 public Session getJcrSession() {
44 return jcrSession;
45 }
46
47 }