diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java
index a072c75cc6..1a24530d77 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/JpaKeycloakSession.java
@@ -83,12 +83,12 @@ public class JpaKeycloakSession implements KeycloakSession {
adapter.removeApplication(a.getId());
}
+ em.createQuery("delete from " + OAuthClientEntity.class.getSimpleName() + " where realm = :realm").setParameter("realm", realm).executeUpdate();
+
for (UserEntity u : em.createQuery("from UserEntity", UserEntity.class).getResultList()) {
adapter.removeUser(u.getLoginName());
}
- em.createQuery("delete from " + OAuthClientEntity.class.getSimpleName() + " where realm = :realm").setParameter("realm", realm).executeUpdate();
-
em.remove(realm);
return true;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/AbstractRoleMappingEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/AbstractRoleMappingEntity.java
index c8404531bf..101d558fc9 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/AbstractRoleMappingEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/AbstractRoleMappingEntity.java
@@ -1,11 +1,12 @@
package org.keycloak.models.jpa.entities;
import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
+import org.hibernate.annotations.GenericGenerator;
+
/**
* @author Bill Burke
* @version $Revision: 1 $
@@ -13,18 +14,19 @@ import javax.persistence.MappedSuperclass;
@MappedSuperclass
public class AbstractRoleMappingEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- protected long id;
+ @GenericGenerator(name="keycloak_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "keycloak_generator")
+ protected String id;
@ManyToOne
protected UserEntity user;
@ManyToOne
protected RoleEntity role;
- public long getId() {
+ public String getId() {
return id;
}
- public void setId(long id) {
+ public void setId(String id) {
this.id = id;
}
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/ApplicationEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/ApplicationEntity.java
index 667fd483d1..5da99fceff 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/ApplicationEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/ApplicationEntity.java
@@ -4,7 +4,6 @@ import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
@@ -12,6 +11,8 @@ import javax.persistence.OneToOne;
import java.util.ArrayList;
import java.util.Collection;
+import org.hibernate.annotations.GenericGenerator;
+
/**
* @author Bill Burke
* @version $Revision: 1 $
@@ -19,7 +20,8 @@ import java.util.Collection;
@Entity
public class ApplicationEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GenericGenerator(name="keycloak_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "keycloak_generator")
private String id;
private String name;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/CredentialEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/CredentialEntity.java
index ec110b8d7c..e42eefe7f7 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/CredentialEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/CredentialEntity.java
@@ -2,12 +2,13 @@ package org.keycloak.models.jpa.entities;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
+import org.hibernate.annotations.GenericGenerator;
+
/**
* @author Bill Burke
* @version $Revision: 1 $
@@ -18,7 +19,8 @@ import javax.persistence.NamedQuery;
@Entity
public class CredentialEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GenericGenerator(name="keycloak_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "keycloak_generator")
protected String id;
protected String type;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/OAuthClientEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/OAuthClientEntity.java
index 9d440c309e..d266ed7502 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/OAuthClientEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/OAuthClientEntity.java
@@ -3,13 +3,14 @@ package org.keycloak.models.jpa.entities;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
+import org.hibernate.annotations.GenericGenerator;
+
/**
* @author Bill Burke
* @version $Revision: 1 $
@@ -22,7 +23,8 @@ import javax.persistence.OneToOne;
@Entity
public class OAuthClientEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GenericGenerator(name="keycloak_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "keycloak_generator")
private String id;
private String name;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RequiredCredentialEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RequiredCredentialEntity.java
index 8a35808169..94870224a5 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RequiredCredentialEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RequiredCredentialEntity.java
@@ -2,9 +2,10 @@ package org.keycloak.models.jpa.entities;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
import javax.persistence.Id;
+import org.hibernate.annotations.GenericGenerator;
+
/**
* @author Bill Burke
* @version $Revision: 1 $
@@ -12,7 +13,8 @@ import javax.persistence.Id;
@Entity
public class RequiredCredentialEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GenericGenerator(name="keycloak_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "keycloak_generator")
protected String id;
protected String type;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RoleEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RoleEntity.java
index 1c21d125cc..acb40c9d23 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RoleEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/RoleEntity.java
@@ -3,7 +3,6 @@ package org.keycloak.models.jpa.entities;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@@ -13,6 +12,8 @@ import javax.persistence.OneToMany;
import java.util.ArrayList;
import java.util.Collection;
+import org.hibernate.annotations.GenericGenerator;
+
/**
* @author Bill Burke
* @version $Revision: 1 $
@@ -21,7 +22,8 @@ import java.util.Collection;
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class RoleEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GenericGenerator(name="keycloak_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "keycloak_generator")
private String id;
private String name;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/SocialLinkEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/SocialLinkEntity.java
index ccc0a592bc..9063948673 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/SocialLinkEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/SocialLinkEntity.java
@@ -8,6 +8,9 @@ import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
+import org.hibernate.annotations.GenericGenerator;
+import org.keycloak.models.jpa.utils.JpaIdGenerator;
+
/**
* @author Bill Burke
* @version $Revision: 1 $
@@ -20,8 +23,11 @@ import javax.persistence.NamedQuery;
@Entity
public class SocialLinkEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private long id;
+ @GenericGenerator(name="keycloak_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "keycloak_generator")
+ private String id;
+
+ private String str = JpaIdGenerator.class.getName();
@ManyToOne
private UserEntity user;
@@ -32,11 +38,11 @@ public class SocialLinkEntity {
protected String socialProvider;
protected String socialUsername;
- public long getId() {
+ public String getId() {
return id;
}
- public void setId(long id) {
+ public void setId(String id) {
this.id = id;
}
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java
index bcddabd47c..04af485bf8 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java
@@ -1,5 +1,6 @@
package org.keycloak.models.jpa.entities;
+import org.hibernate.annotations.GenericGenerator;
import org.keycloak.models.UserModel;
import javax.persistence.CascadeType;
@@ -35,7 +36,8 @@ import java.util.Set;
@Entity
public class UserEntity {
@Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @GenericGenerator(name="uuid_generator", strategy="org.keycloak.models.jpa.utils.JpaIdGenerator")
+ @GeneratedValue(generator = "uuid_generator")
protected String id;
protected String loginName;
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/utils/JpaIdGenerator.java b/model/jpa/src/main/java/org/keycloak/models/jpa/utils/JpaIdGenerator.java
new file mode 100644
index 0000000000..6fc10e854b
--- /dev/null
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/utils/JpaIdGenerator.java
@@ -0,0 +1,19 @@
+package org.keycloak.models.jpa.utils;
+
+import java.io.Serializable;
+
+import org.hibernate.HibernateException;
+import org.hibernate.engine.spi.SessionImplementor;
+import org.hibernate.id.IdentifierGenerator;
+import org.keycloak.models.utils.KeycloakModelUtils;
+
+/**
+ * @author Marek Posolda
+ */
+public class JpaIdGenerator implements IdentifierGenerator {
+
+ @Override
+ public Serializable generate(SessionImplementor session, Object object) throws HibernateException {
+ return KeycloakModelUtils.generateId();
+ }
+}
diff --git a/model/tests/src/test/java/org/keycloak/model/test/CompositeRolesModelTest.java b/model/tests/src/test/java/org/keycloak/model/test/CompositeRolesModelTest.java
index 1baf83e0a9..ec14411199 100644
--- a/model/tests/src/test/java/org/keycloak/model/test/CompositeRolesModelTest.java
+++ b/model/tests/src/test/java/org/keycloak/model/test/CompositeRolesModelTest.java
@@ -28,48 +28,29 @@ public class CompositeRolesModelTest extends AbstractModelTest {
}
@Test
- public void testAppComposites() {
+ public void testComposites() {
Set requestedRoles = getRequestedRoles("APP_COMPOSITE_APPLICATION", "APP_COMPOSITE_USER");
-
Assert.assertEquals(2, requestedRoles.size());
assertContains("APP_ROLE_APPLICATION", "APP_ROLE_1", requestedRoles);
assertContains("realm", "REALM_ROLE_1", requestedRoles);
- }
-
- @Test
- public void testRealmAppComposites() {
- Set requestedRoles = getRequestedRoles("APP_COMPOSITE_APPLICATION", "REALM_APP_COMPOSITE_USER");
+ requestedRoles = getRequestedRoles("APP_COMPOSITE_APPLICATION", "REALM_APP_COMPOSITE_USER");
Assert.assertEquals(1, requestedRoles.size());
assertContains("APP_ROLE_APPLICATION", "APP_ROLE_1", requestedRoles);
- }
-
- @Test
- public void testRealmOnlyWithUserCompositeAppComposite() throws Exception {
- Set requestedRoles = getRequestedRoles("REALM_COMPOSITE_1_APPLICATION", "REALM_COMPOSITE_1_USER");
+ requestedRoles = getRequestedRoles("REALM_COMPOSITE_1_APPLICATION", "REALM_COMPOSITE_1_USER");
Assert.assertEquals(1, requestedRoles.size());
assertContains("realm", "REALM_COMPOSITE_1", requestedRoles);
- }
- @Test
- public void testRealmOnlyWithUserCompositeAppRole() throws Exception {
- Set requestedRoles = getRequestedRoles("REALM_ROLE_1_APPLICATION", "REALM_COMPOSITE_1_USER");
+ requestedRoles = getRequestedRoles("REALM_ROLE_1_APPLICATION", "REALM_COMPOSITE_1_USER");
+ Assert.assertEquals(1, requestedRoles.size());
+ assertContains("realm", "REALM_ROLE_1", requestedRoles);
+ requestedRoles = getRequestedRoles("REALM_COMPOSITE_1_APPLICATION", "REALM_ROLE_1_USER");
Assert.assertEquals(1, requestedRoles.size());
assertContains("realm", "REALM_ROLE_1", requestedRoles);
}
- @Test
- public void testRealmOnlyWithUserRoleAppComposite() throws Exception {
- Set requestedRoles = getRequestedRoles("REALM_COMPOSITE_1_APPLICATION", "REALM_ROLE_1_USER");
-
- Assert.assertEquals(1, requestedRoles.size());
- assertContains("realm", "REALM_ROLE_1", requestedRoles);
- }
-
- // TODO: more tests...
-
// Same algorithm as in TokenManager.createAccessCode
private Set getRequestedRoles(String applicationName, String username) {
Set requestedRoles = new HashSet();
diff --git a/pom.xml b/pom.xml
index 21f7d6cb1d..8e5632ef9e 100755
--- a/pom.xml
+++ b/pom.xml
@@ -25,6 +25,7 @@
5.1.29
9.3-1100-jdbc41
1.6.1
+ 1.4.01
5.1.25
1.6.1
7.1.1.Final
@@ -325,6 +326,11 @@
dom4j
${dom4j.version}
+
+ xml-apis
+ xml-apis
+ ${xml-apis.version}
+
org.slf4j
slf4j-api
@@ -561,7 +567,6 @@
mysql
mysql-connector-java
${mysql.version}
- test
@@ -579,8 +584,7 @@
org.postgresql
postgresql
- postgresql.version
- test
+ ${postgresql.version}
diff --git a/testsuite/integration/pom.xml b/testsuite/integration/pom.xml
index d668ee8389..d1d1d5ad20 100755
--- a/testsuite/integration/pom.xml
+++ b/testsuite/integration/pom.xml
@@ -232,12 +232,10 @@
com.h2database
h2
- 1.3.161
org.hibernate
hibernate-entitymanager
- 3.6.6.Final
com.icegreen
@@ -247,6 +245,10 @@
org.seleniumhq.selenium
selenium-java
+
+ xml-apis
+ xml-apis
+
org.seleniumhq.selenium
selenium-chrome-driver