composite tests
This commit is contained in:
1 parent
6a5994c3e2
commit
1543963c9f
10 files changed
+163
-27
No files matched your search
@@ -143,8 +143,8 @@ public class ApplicationAdapter implements ApplicationModel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RoleModel> getRoles() {
|
||||
ArrayList<RoleModel> list = new ArrayList<RoleModel>();
|
||||
public Set<RoleModel> getRoles() {
|
||||
Set<RoleModel> list = new HashSet<RoleModel>();
|
||||
Collection<ApplicationRoleEntity> roles = application.getRoles();
|
||||
if (roles == null) return list;
|
||||
for (RoleEntity entity : roles) {
|
||||
@@ -264,6 +264,7 @@ public class ApplicationAdapter implements ApplicationModel {
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (o == null) return false;
|
||||
if (o == this) return true;
|
||||
if (!(o instanceof ApplicationAdapter)) return false;
|
||||
ApplicationAdapter app = (ApplicationAdapter)o;
|
||||
return app.getId().equals(getId());
|
||||
|
||||
@@ -880,8 +880,8 @@ public class RealmAdapter implements RealmModel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RoleModel> getRoles() {
|
||||
ArrayList<RoleModel> list = new ArrayList<RoleModel>();
|
||||
public Set<RoleModel> getRoles() {
|
||||
Set<RoleModel> list = new HashSet<RoleModel>();
|
||||
Collection<RealmRoleEntity> roles = realm.getRoles();
|
||||
if (roles == null) return list;
|
||||
for (RoleEntity entity : roles) {
|
||||
@@ -1000,7 +1000,6 @@ public class RealmAdapter implements RealmModel {
|
||||
entity.setUser(((UserAdapter) agent).getUser());
|
||||
entity.setRole(((RoleAdapter)role).getRole());
|
||||
em.persist(entity);
|
||||
em.flush();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.keycloak.models.jpa;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.models.RoleContainerModel;
|
||||
import org.keycloak.models.RoleModel;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.jpa.entities.ApplicationRoleEntity;
|
||||
import org.keycloak.models.jpa.entities.RealmRoleEntity;
|
||||
import org.keycloak.models.jpa.entities.RoleEntity;
|
||||
@@ -23,6 +22,7 @@ public class RoleAdapter implements RoleModel {
|
||||
protected RealmModel realm;
|
||||
|
||||
public RoleAdapter(RealmModel realm, EntityManager em, RoleEntity role) {
|
||||
this.em = em;
|
||||
this.realm = realm;
|
||||
this.role = role;
|
||||
}
|
||||
@@ -77,6 +77,7 @@ public class RoleAdapter implements RoleModel {
|
||||
if (composite.equals(entity)) return;
|
||||
}
|
||||
getRole().getCompositeRoles().add(entity);
|
||||
em.flush();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,25 +99,27 @@ public class RoleAdapter implements RoleModel {
|
||||
return set;
|
||||
}
|
||||
|
||||
public static boolean searchCompositeFor(RoleModel role, RoleModel composite, Set<RoleModel> visited) {
|
||||
public static boolean searchFor(RoleModel role, RoleModel composite, Set<RoleModel> visited) {
|
||||
if (visited.contains(composite)) return false;
|
||||
visited.add(composite);
|
||||
Set<RoleModel> composites = composite.getComposites();
|
||||
if (composites.contains(role)) return true;
|
||||
for (RoleModel contained : composites) {
|
||||
if (!contained.isComposite()) continue;
|
||||
if (searchCompositeFor(role, contained, visited)) return true;
|
||||
if (searchFor(role, contained, visited)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean hasRole(RoleModel role) {
|
||||
if (this.equals(role)) return true;
|
||||
if (!isComposite()) return false;
|
||||
|
||||
Set<RoleModel> visited = new HashSet<RoleModel>();
|
||||
return searchCompositeFor(role, this, visited);
|
||||
return searchFor(role, this, visited);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,7 @@ import javax.persistence.Id;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToMany;
|
||||
import javax.persistence.OneToMany;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -17,16 +18,17 @@ import java.util.Collection;
|
||||
* @version $Revision: 1 $
|
||||
*/
|
||||
@Entity
|
||||
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
|
||||
public abstract class RoleEntity {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private String id;
|
||||
|
||||
private String name;
|
||||
private String description;
|
||||
private boolean composite;
|
||||
@OneToMany(fetch = FetchType.LAZY, cascade = {}, orphanRemoval = false)
|
||||
@JoinTable(name = "COMPOSITE_ROLE")
|
||||
@ManyToMany(fetch = FetchType.LAZY, cascade = {})
|
||||
//@JoinTable(name = "COMPOSITE_ROLE")
|
||||
private Collection<RoleEntity> compositeRoles = new ArrayList<RoleEntity>();
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user