modules/core/domain/src/main/java/org/rhq/core/domain/auth/Subject.java | 24 ++++------ modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java | 19 ++----- 2 files changed, 18 insertions(+), 25 deletions(-)
New commits: commit 04fad7aae80087e6c5a0e9981d1115159873af8f Author: Partha Aji paji@redhat.com Date: Wed Feb 24 16:06:01 2010 -0500
Added back the Many To Many roles magic to preserve roles variable
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/auth/Subject.java b/modules/core/domain/src/main/java/org/rhq/core/domain/auth/Subject.java index 73d074a..c7d895b 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/auth/Subject.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/auth/Subject.java @@ -36,6 +36,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; @@ -229,6 +231,10 @@ public class Subject implements Externalizable { @OneToMany(mappedBy = "subject") private Set<SubjectRoleEntity> subjectRoles;
+ @ManyToMany + @JoinTable(name = "RHQ_SUBJECT_ROLE_MAP", joinColumns = { @JoinColumn(name = "SUBJECT_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") }) + private Set<Role> roles = new HashSet<Role>(); + @Transient private Integer sessionId = null;
@@ -370,22 +376,14 @@ public class Subject implements Externalizable { }
public Set<Role> getRoles() { - Set<Role> r = new HashSet<Role>(); - for (SubjectRoleEntity s : getSubjectRoles()) { - r.add(s.getRole()); + if (roles == null) { + roles = new HashSet<Role>(); } - return r; + return roles; }
public void setRoles(Set<Role> roles) { - Set<SubjectRoleEntity> sroles = getSubjectRoles(); - sroles.clear(); - for (Role r : roles) { - SubjectRoleEntity s = new SubjectRoleEntity(); - s.setSubject(this); - s.setRole(r); - sroles.add(s); - } + this.roles = roles; }
public void addRole(Role role, boolean ldap) { @@ -501,7 +499,7 @@ public class Subject implements Externalizable { out.writeBoolean(factive); out.writeBoolean(fsystem); out.writeObject(configuration); - out.writeObject(getRoles()); + out.writeObject(roles); // not supplied by remote: subjectNotifications out.writeInt(this.sessionId == null ? 0 : this.sessionId); } diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java index d549027..5267fca 100644 --- a/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java +++ b/modules/core/domain/src/main/java/org/rhq/core/domain/authz/Role.java @@ -110,6 +110,9 @@ public class Role implements Serializable { private java.util.Set<SubjectRoleEntity> roleSubjects;
@ManyToMany(mappedBy = "roles") + private Set<Subject> subjects = new HashSet<Subject>(); + + @ManyToMany(mappedBy = "roles") private java.util.Set<org.rhq.core.domain.resource.group.ResourceGroup> resourceGroups = new HashSet<org.rhq.core.domain.resource.group.ResourceGroup>();
@Cascade( { CascadeType.ALL }) @@ -192,22 +195,14 @@ public class Role implements Serializable { }
public java.util.Set<Subject> getSubjects() { - Set<Subject> s = new HashSet<Subject>(); - for (SubjectRoleEntity sre : getRoleSubjects()) { - s.add(sre.getSubject()); + if (subjects == null) { + subjects = new HashSet<Subject>(); } - return s; + return subjects; }
public void setSubjects(Set<Subject> subjects) { - Set<SubjectRoleEntity> sroles = getRoleSubjects(); - sroles.clear(); - for (Subject subject : subjects) { - SubjectRoleEntity s = new SubjectRoleEntity(); - s.setRole(this); - s.setSubject(subject); - sroles.add(s); - } + this.subjects = subjects; }
public void addSubject(Subject subject, boolean ldap) {