1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.services.jcr.sessions.impl;
18
19 import java.util.List;
20
21 import org.exoplatform.services.jcr.access.AccessControlEntry;
22 import org.exoplatform.services.jcr.ext.common.SessionProvider;
23 import org.exoplatform.services.jcr.sessions.ACLSessionProviderService;
24
25
26
27
28
29
30
31 public class ACLSessionProviderServiceThreadLocalImpl implements ACLSessionProviderService {
32
33 private static ThreadLocal<SessionProvider> aclSessionProviderKeeper = new ThreadLocal<SessionProvider>();
34 private static ThreadLocal<SessionProvider> anonymSessionProviderKeeper = new ThreadLocal<SessionProvider>();
35
36 @Override
37 public SessionProvider getACLSessionProvider(List<AccessControlEntry> accessList) {
38 SessionProvider provider = aclSessionProviderKeeper.get();
39 if (provider == null) {
40 provider = SessionProvider.createProvider(accessList);
41 aclSessionProviderKeeper.set(provider);
42 }
43 return provider;
44 }
45
46 @Override
47 public SessionProvider getAnonymSessionProvider() {
48 SessionProvider provider = anonymSessionProviderKeeper.get();
49 if (provider == null) {
50 provider = SessionProvider.createAnonimProvider();
51 anonymSessionProviderKeeper.set(provider);
52 }
53 return provider;
54 }
55
56
57 @Override
58 public void clearSessionProviders() {
59 SessionProvider provider = aclSessionProviderKeeper.get();
60 if (provider != null) {
61 provider.close();
62 aclSessionProviderKeeper.remove();
63 }
64 provider = anonymSessionProviderKeeper.get();
65 if (provider != null) {
66 provider.close();
67 anonymSessionProviderKeeper.remove();
68 }
69 }
70
71 }