View Javadoc

1   package com.atlassian.user.impl.memory;
2   
3   import com.atlassian.user.*;
4   import com.atlassian.user.impl.DefaultGroup;
5   import com.atlassian.user.impl.DuplicateEntityException;
6   import com.atlassian.user.impl.memory.provider.MemoryProvider;
7   import com.atlassian.user.repository.RepositoryIdentifier;
8   import com.atlassian.user.search.page.Pager;
9   import com.atlassian.user.search.page.PagerUtils;
10  import com.atlassian.user.util.Assert;
11  
12  import java.util.List;
13  
14  public class MemoryGroupManager implements GroupManager
15  {
16      private final MemoryProvider provider;
17      private final RepositoryIdentifier repository;
18  
19      public MemoryGroupManager(RepositoryIdentifier repository, MemoryProvider provider)
20      {
21          this.provider = provider;
22          this.repository = repository;
23      }
24  
25      public Group createGroup(String groupName) throws EntityException
26      {
27          if (getGroup(groupName) != null)
28              throw new DuplicateEntityException("The group [" + groupName + "] already exists.");
29  
30          Group group = new DefaultGroup(groupName);
31          provider.addGroup(group);
32  
33          return group;
34      }
35  
36      public void removeGroup(Group group) throws EntityException
37      {
38          provider.removeGroup(group);
39      }
40  
41      public void addMembership(Group group, User user)
42      {
43          if (group == null)
44              throw new IllegalArgumentException("Can't add membership for null group");
45          if (getGroup(group.getName()) == null)
46              throw new IllegalArgumentException("Can't add membership for unknown group: [" + group.getName() + "]");
47          provider.addMembership(group, user);
48      }
49  
50      public boolean hasMembership(Group group, User user)
51      {
52          return provider.hasMembership(group, user);
53      }
54  
55      public Pager<Group> getGroups()
56      {
57          return provider.getGroups();
58  
59      }
60  
61      public Group getGroup(String groupName)
62      {
63          return provider.getGroup(groupName);
64      }
65  
66      public Pager<Group> getGroups(User user) throws EntityException
67      {
68          Assert.notNull(user, "User must not be null");
69          return provider.getGroups(user);
70      }
71  
72      public List<Group> getWritableGroups()
73      {
74          return PagerUtils.toList(getGroups());
75      }
76  
77      public RepositoryIdentifier getConfiguration()
78      {
79          return repository;
80      }
81  
82      /**
83       * @return the {@link com.atlassian.user.repository.RepositoryIdentifier} which is managed by this instance.
84       */
85      public RepositoryIdentifier getIdentifier()
86      {
87          return repository;
88      }
89  
90      public RepositoryIdentifier getRepository(Entity entity) throws EntityException
91      {
92          if (getGroup(entity.getName()) != null)
93              return repository;
94  
95          return null;
96      }
97  
98      public String getApplicationKey()
99      {
100         return null;
101     }
102 
103     public boolean isCreative()
104     {
105         return true;
106     }
107 
108     public void removeMembership(Group group, User user)
109     {
110         if (group==null || getGroup(group.getName()) == null)
111             throw new IllegalArgumentException("Can't remove membership for unknown group: [" +
112                 (group==null ? "null" : group.getName()) + "]");
113         provider.removeMembership(group, user);
114     }
115 
116     public Pager<String> getMemberNames(Group group)
117     {
118         return provider.getMemberNames(group);
119     }
120 
121     public Pager<String> getLocalMemberNames(Group group) throws EntityException
122     {
123         return provider.getLocalMemberNames(group);
124     }
125 
126     public Pager<String> getExternalMemberNames(Group group) throws EntityException
127     {
128         return provider.getExternalMemberNames(group);
129     }
130 
131     public boolean isReadOnly(Group group) throws EntityException
132     {
133         return false;
134     }
135 
136     public boolean supportsExternalMembership() throws EntityException
137     {
138         return true;
139     }
140 }