View Javadoc

1   package com.atlassian.user.impl.hibernate;
2   
3   import com.atlassian.user.impl.DefaultGroup;
4   import com.atlassian.user.User;
5   import com.atlassian.user.ExternalEntity;
6   
7   import java.util.Set;
8   import java.util.HashSet;
9   
10  /**
11   * A hibernate implementation of a group.
12   *
13   * This implementation is intended to provide collections of local and external members.
14   * These collections are to be used with care as they may cause lazy loading exceptions
15   * when used without consideration to the hibernate session that loaded this group.
16   *
17   * If unsure, use the {@link com.atlassian.user.GroupManager#getGroups(com.atlassian.user.User)} method.
18   *
19   * See: http://jira.atlassian.com/browse/USER-191
20   */
21  public class DefaultHibernateGroup extends DefaultGroup
22  {
23      private transient Set<ExternalEntity> externalMembers;
24      private transient Set<User> localMembers;
25      // we depend on the fact that id is NOT-transient
26      private long id;
27  
28      public DefaultHibernateGroup(){}
29  
30      public DefaultHibernateGroup(String name)
31      {
32          super(name);
33          externalMembers = new HashSet<ExternalEntity>();
34          localMembers = new HashSet<User>();
35      }
36  
37      /**
38       * For Hibernate's use only.
39       *
40       * @see com.atlassian.user.GroupManager#hasMembership(com.atlassian.user.Group, com.atlassian.user.User)
41       */
42      public Set<ExternalEntity> getExternalMembers()
43      {
44          return externalMembers;
45      }
46  
47      /**
48       * For Hibernate's use only.
49       *
50       * @see com.atlassian.user.GroupManager#addMembership(com.atlassian.user.Group, com.atlassian.user.User)
51       */
52      public void setExternalMembers(Set<ExternalEntity> externalMembers)
53      {
54          this.externalMembers = externalMembers;
55      }
56  
57      /**
58       * For Hibernate's use only.
59       *
60       * @see com.atlassian.user.GroupManager#hasMembership(com.atlassian.user.Group, com.atlassian.user.User)
61       */
62      public Set<User> getLocalMembers()
63      {
64          return localMembers;
65      }
66  
67      /**
68       * For Hibernate's use only.
69       *
70       * @see com.atlassian.user.GroupManager#addMembership(com.atlassian.user.Group, com.atlassian.user.User)
71       */
72      public void setLocalMembers(Set<User> localMembers)
73      {
74          this.localMembers = localMembers;
75      }
76  
77      public long getId()
78      {
79          return id;
80      }
81  
82      public void setId(long id)
83      {
84          this.id = id;
85      }
86  
87      public boolean equals(Object o)
88      {
89          if (this == o) return true;
90          if (!(o instanceof DefaultHibernateGroup)) return false;
91          if (!super.equals(o)) return false;
92  
93          final DefaultHibernateGroup defaultHibernateGroup = (DefaultHibernateGroup) o;
94          return id == defaultHibernateGroup.id;
95      }
96  
97      public int hashCode()
98      {
99          int result = super.hashCode();
100         result = 29 * result + (int) (id ^ (id >>> 32));
101         return result;
102     }
103 }