1 package org
.argeo
.cms
.acr
;
3 import java
.util
.Locale
;
4 import java
.util
.Objects
;
6 import javax
.security
.auth
.Subject
;
8 import org
.argeo
.api
.acr
.ContentSession
;
9 import org
.argeo
.api
.acr
.spi
.ProvidedRepository
;
12 * A standalone {@link ProvidedRepository} with a single {@link Subject} (which
13 * also provides the system session).
15 public class SingleUserContentRepository
extends AbstractContentRepository
{
16 private final Subject subject
;
17 private final Locale locale
;
20 private CmsContentSession contentSession
;
22 public SingleUserContentRepository(Subject subject
) {
23 this(subject
, Locale
.getDefault());
25 initRootContentProvider(null);
28 public SingleUserContentRepository(Subject subject
, Locale locale
) {
29 Objects
.requireNonNull(subject
);
30 Objects
.requireNonNull(locale
);
32 this.subject
= subject
;
38 Objects
.requireNonNull(subject
);
39 Objects
.requireNonNull(locale
);
42 if (contentSession
!= null)
43 throw new IllegalStateException("Repository is already started, stop it first.");
44 contentSession
= new CmsContentSession(this, subject
, locale
);
49 if (contentSession
!= null)
50 contentSession
.close();
51 contentSession
= null;
56 public ContentSession
get(Locale locale
) {
57 if (!this.locale
.equals(locale
))
58 throw new UnsupportedOperationException("This repository does not support multi-locale sessions");
59 return contentSession
;
63 public ContentSession
get() {
64 return contentSession
;
68 protected CmsContentSession
newSystemSession() {
69 return new CmsContentSession(this, subject
, Locale
.getDefault());