Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-core-lib / openecomp-session-lib / src / main / java / org / openecomp / sdc / common / session / impl / AsdcSessionContextProvider.java
1 package org.openecomp.sdc.common.session.impl;
2
3 import org.openecomp.sdc.common.session.SessionContext;
4 import org.openecomp.sdc.common.session.SessionContextProvider;
5 import org.openecomp.sdc.common.session.User;
6
7 public class AsdcSessionContextProvider implements SessionContextProvider {
8
9   private static final ThreadLocal<String> threadUserId = new ThreadLocal<>();
10
11   @Override
12   public void create(String userId) {
13     threadUserId.set(userId);
14   }
15
16   @Override
17   public SessionContext get() {
18     if (threadUserId.get() == null) {
19       throw new RuntimeException("UserId was not set for this thread");
20     }
21
22     return new AsdcSessionContext(new User(threadUserId.get()), "dox");
23   }
24
25   @Override
26   public void close() {
27     threadUserId.remove();
28   }
29
30   private static class AsdcSessionContext implements SessionContext {
31
32     private final User user;
33     private final String tenant;
34
35     private AsdcSessionContext(User user, String tenant) {
36       this.user = user;
37       this.tenant = tenant;
38     }
39
40     @Override
41     public User getUser() {
42       return user;
43     }
44
45     @Override
46     public String getTenant() {
47       return tenant;
48     }
49   }
50 }