keycloak-uncached
Changes
audit/jboss-logging/pom.xml 6(+6 -0)
audit/jboss-logging/src/main/java/org/keycloak/audit/log/JBossLoggingAuditListenerFactory.java 4(+2 -2)
audit/jpa/pom.xml 6(+6 -0)
audit/mongo/pom.xml 6(+6 -0)
audit/tests/pom.xml 6(+6 -0)
authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java 17(+8 -9)
authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProvider.java 15(+7 -8)
authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProviderFactory.java 6(+3 -3)
authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ModelAuthenticationProviderFactory.java 4(+2 -2)
authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProviderFactory.java 6(+3 -3)
examples/providers/audit-listener-sysout/src/main/java/org/keycloak/examples/providers/audit/SysoutAuditListenerFactory.java 4(+2 -2)
examples/providers/audit-provider-mem/src/main/java/org/keycloak/examples/providers/audit/MemAuditProviderFactory.java 4(+2 -2)
examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProviderFactory.java 4(+2 -2)
export-import/export-import-api/src/main/java/org/keycloak/exportimport/ExportImportProvider.java 4(+2 -2)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ExportImportProviderImpl.java 10(+4 -6)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelExporter.java 48(+24 -24)
export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelImporter.java 62(+31 -31)
export-import/export-import-impl/src/test/java/org/keycloak/exportimport/ExportImportTestBase.java 35(+16 -19)
export-import/export-import-impl/src/test/java/org/keycloak/exportimport/JPAToMongoExportImportTest.java 6(+3 -3)
export-import/export-import-impl/src/test/java/org/keycloak/exportimport/MongoToJPAExportImportTest.java 6(+3 -3)
forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProvider.java 7(+3 -4)
forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProviderFactory.java 8(+3 -5)
forms/common-themes/src/main/java/org/keycloak/theme/DefaultKeycloakThemeProviderFactory.java 4(+2 -2)
forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProvider.java 7(+3 -4)
forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProviderFactory.java 6(+3 -3)
forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProvider.java 9(+4 -5)
forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProviderFactory.java 6(+3 -3)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ApplicationAdapter.java 5(+2 -3)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/CacheModelProvider.java 6(+3 -3)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/CacheModelProviderFactory.java 6(+2 -4)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/CacheModelProviderSpi.java 6(+3 -3)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ClientAdapter.java 6(+2 -4)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/DefaultCacheModelProvider.java 36(+18 -18)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedApplication.java 3(+2 -1)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedClient.java 3(+2 -1)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedOAuthClient.java 3(+2 -1)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java 3(+2 -1)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/NoCacheModelProvider.java 46(+19 -27)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/NoCacheModelProviderFactory.java 8(+4 -4)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/OAuthClientAdapter.java 11(+1 -10)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java 9(+2 -7)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RoleAdapter.java 4(+2 -2)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/SimpleCacheModelProviderFactory.java 8(+4 -4)
model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/UserAdapter.java 4(+2 -2)
model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.models.cache.CacheKeycloakSessionFactory 2(+0 -2)
model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.models.cache.CacheModelProviderFactory 2(+2 -0)
model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.provider.Spi 2(+1 -1)
model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/MongoModelProvider.java 33(+19 -14)
model/mongo/src/main/java/org/keycloak/models/mongo/keycloak/adapters/MongoModelProviderFactory.java 12(+6 -6)
model/mongo/src/main/resources/META-INF/services/org.keycloak.models.KeycloakSessionFactory 1(+0 -1)
picketlink/keycloak-picketlink-realm/src/main/java/org/keycloak/picketlink/realm/RealmIdentityManagerProviderFactory.java 4(+2 -2)
project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProviderFactory.java 4(+2 -2)
project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/UpsSecurityApplication.java 7(+3 -4)
project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/classes/META-INF/keycloak-server.json 2(+1 -1)
services/src/main/java/org/keycloak/services/listeners/KeycloakSessionDestroyListener.java 12(+3 -9)
testsuite/integration/src/test/java/org/keycloak/testsuite/forms/AuthProvidersIntegrationTest.java 2(+1 -1)
testsuite/integration/src/test/java/org/keycloak/testsuite/rule/AbstractKeycloakRule.java 35(+12 -23)
testsuite/performance/src/test/java/org/keycloak/testsuite/performance/BaseJMeterPerformanceTest.java 32(+14 -18)
testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java 6(+3 -3)
testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateUsersWorker.java 6(+3 -3)
testsuite/performance/src/test/java/org/keycloak/testsuite/performance/ReadUsersWorker.java 6(+3 -3)
testsuite/performance/src/test/java/org/keycloak/testsuite/performance/RemoveUsersWorker.java 6(+3 -3)
timer/api/pom.xml 6(+6 -0)
timer/basic/pom.xml 6(+6 -0)
Details
diff --git a/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListener.java b/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListener.java
index 0ef510a..53a8fcd 100644
--- a/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListener.java
+++ b/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListener.java
@@ -10,10 +10,6 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
import java.util.Set;
/**
@@ -23,12 +19,12 @@ public class EmailAuditListener implements AuditListener {
private static final Logger log = Logger.getLogger(EmailAuditListener.class);
- private KeycloakSession keycloakSession;
+ private KeycloakSession session;
private EmailProvider emailProvider;
private Set<EventType> includedEvents;
- public EmailAuditListener(KeycloakSession keycloakSession, EmailProvider emailProvider, Set<EventType> includedEvents) {
- this.keycloakSession = keycloakSession;
+ public EmailAuditListener(KeycloakSession session, EmailProvider emailProvider, Set<EventType> includedEvents) {
+ this.session = session;
this.emailProvider = emailProvider;
this.includedEvents = includedEvents;
}
@@ -37,7 +33,7 @@ public class EmailAuditListener implements AuditListener {
public void onEvent(Event event) {
if (includedEvents.contains(event.getEvent())) {
if (event.getRealmId() != null && event.getUserId() != null) {
- RealmModel realm = keycloakSession.getRealm(event.getRealmId());
+ RealmModel realm = session.getRealm(event.getRealmId());
UserModel user = realm.getUserById(event.getUserId());
if (user != null && user.getEmail() != null && user.isEmailVerified()) {
try {
diff --git a/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListenerFactory.java b/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListenerFactory.java
index 7459a06..baa62eb 100644
--- a/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListenerFactory.java
+++ b/audit/email/src/main/java/org/keycloak/audit/email/EmailAuditListenerFactory.java
@@ -6,7 +6,6 @@ import org.keycloak.audit.AuditListenerFactory;
import org.keycloak.audit.EventType;
import org.keycloak.email.EmailProvider;
import org.keycloak.models.KeycloakSession;
-import org.keycloak.provider.ProviderSession;
import java.util.Collections;
import java.util.HashSet;
@@ -25,10 +24,9 @@ public class EmailAuditListenerFactory implements AuditListenerFactory {
private Set<EventType> includedEvents = new HashSet<EventType>();
@Override
- public AuditListener create(ProviderSession providerSession) {
- KeycloakSession keycloakSession = providerSession.getProvider(KeycloakSession.class);
- EmailProvider emailProvider = providerSession.getProvider(EmailProvider.class);
- return new EmailAuditListener(keycloakSession, emailProvider, includedEvents);
+ public AuditListener create(KeycloakSession session) {
+ EmailProvider emailProvider = session.getProvider(EmailProvider.class);
+ return new EmailAuditListener(session, emailProvider, includedEvents);
}
@Override
audit/jboss-logging/pom.xml 6(+6 -0)
diff --git a/audit/jboss-logging/pom.xml b/audit/jboss-logging/pom.xml
index b4c6487..12a0bd6 100755
--- a/audit/jboss-logging/pom.xml
+++ b/audit/jboss-logging/pom.xml
@@ -26,6 +26,12 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
<artifactId>keycloak-audit-api</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
diff --git a/audit/jboss-logging/src/main/java/org/keycloak/audit/log/JBossLoggingAuditListenerFactory.java b/audit/jboss-logging/src/main/java/org/keycloak/audit/log/JBossLoggingAuditListenerFactory.java
index 1bafa9f..7acef56 100644
--- a/audit/jboss-logging/src/main/java/org/keycloak/audit/log/JBossLoggingAuditListenerFactory.java
+++ b/audit/jboss-logging/src/main/java/org/keycloak/audit/log/JBossLoggingAuditListenerFactory.java
@@ -4,7 +4,7 @@ import org.jboss.logging.Logger;
import org.keycloak.Config;
import org.keycloak.audit.AuditListener;
import org.keycloak.audit.AuditListenerFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -16,7 +16,7 @@ public class JBossLoggingAuditListenerFactory implements AuditListenerFactory {
private static final Logger logger = Logger.getLogger("org.keycloak.audit");
@Override
- public AuditListener create(ProviderSession providerSession) {
+ public AuditListener create(KeycloakSession session) {
return new JBossLoggingAuditListener(logger);
}
audit/jpa/pom.xml 6(+6 -0)
diff --git a/audit/jpa/pom.xml b/audit/jpa/pom.xml
index d124c39..db0a350 100755
--- a/audit/jpa/pom.xml
+++ b/audit/jpa/pom.xml
@@ -21,6 +21,12 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
<artifactId>keycloak-audit-api</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
diff --git a/audit/jpa/src/main/java/org/keycloak/audit/jpa/JpaAuditProviderFactory.java b/audit/jpa/src/main/java/org/keycloak/audit/jpa/JpaAuditProviderFactory.java
index 546b5e9..2e01171 100644
--- a/audit/jpa/src/main/java/org/keycloak/audit/jpa/JpaAuditProviderFactory.java
+++ b/audit/jpa/src/main/java/org/keycloak/audit/jpa/JpaAuditProviderFactory.java
@@ -4,7 +4,7 @@ import org.keycloak.Config;
import org.keycloak.audit.AuditProvider;
import org.keycloak.audit.AuditProviderFactory;
import org.keycloak.audit.EventType;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.util.JpaUtils;
import javax.persistence.EntityManagerFactory;
@@ -23,7 +23,7 @@ public class JpaAuditProviderFactory implements AuditProviderFactory {
private Set<EventType> includedEvents = new HashSet<EventType>();
@Override
- public AuditProvider create(ProviderSession providerSession) {
+ public AuditProvider create(KeycloakSession session) {
return new JpaAuditProvider(emf.createEntityManager(), includedEvents);
}
audit/mongo/pom.xml 6(+6 -0)
diff --git a/audit/mongo/pom.xml b/audit/mongo/pom.xml
index 481ba0a..db80dda 100755
--- a/audit/mongo/pom.xml
+++ b/audit/mongo/pom.xml
@@ -21,6 +21,12 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
<artifactId>keycloak-audit-api</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
diff --git a/audit/mongo/src/main/java/org/keycloak/audit/mongo/MongoAuditProviderFactory.java b/audit/mongo/src/main/java/org/keycloak/audit/mongo/MongoAuditProviderFactory.java
index 5a3d95a..d27c40e 100644
--- a/audit/mongo/src/main/java/org/keycloak/audit/mongo/MongoAuditProviderFactory.java
+++ b/audit/mongo/src/main/java/org/keycloak/audit/mongo/MongoAuditProviderFactory.java
@@ -10,7 +10,7 @@ import org.keycloak.Config;
import org.keycloak.audit.AuditProvider;
import org.keycloak.audit.AuditProviderFactory;
import org.keycloak.audit.EventType;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import java.net.UnknownHostException;
import java.util.Collections;
@@ -31,7 +31,7 @@ public class MongoAuditProviderFactory implements AuditProviderFactory {
private Set<EventType> includedEvents = new HashSet<EventType>();
@Override
- public AuditProvider create(ProviderSession providerSession) {
+ public AuditProvider create(KeycloakSession session) {
return new MongoAuditProvider(db.getCollection("audit"), includedEvents);
}
audit/tests/pom.xml 6(+6 -0)
diff --git a/audit/tests/pom.xml b/audit/tests/pom.xml
index c3efa5a..7b288c5 100755
--- a/audit/tests/pom.xml
+++ b/audit/tests/pom.xml
@@ -39,6 +39,12 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>provided</scope>
diff --git a/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java b/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java
index d36cb24..20d08bb 100755
--- a/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java
+++ b/authentication/authentication-api/src/main/java/org/keycloak/authentication/AuthenticationProviderManager.java
@@ -1,17 +1,16 @@
package org.keycloak.authentication;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
import org.jboss.logging.Logger;
import org.keycloak.models.AuthenticationLinkModel;
import org.keycloak.models.AuthenticationProviderModel;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.util.ProviderLoader;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* Access point to authentication SPI. It finds configured and available {@link AuthenticationProvider} instances for current realm
@@ -28,8 +27,8 @@ public class AuthenticationProviderManager {
private final RealmModel realm;
private final Map<String, AuthenticationProvider> delegates;
- public static AuthenticationProviderManager getManager(RealmModel realm, ProviderSession providerSession) {
- Iterable<AuthenticationProvider> providers = providerSession.getAllProviders(AuthenticationProvider.class);
+ public static AuthenticationProviderManager getManager(RealmModel realm, KeycloakSession session) {
+ Iterable<AuthenticationProvider> providers = session.getAllProviders(AuthenticationProvider.class);
Map<String, AuthenticationProvider> providersMap = new HashMap<String, AuthenticationProvider>();
for (AuthenticationProvider provider : providers) {
diff --git a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProvider.java b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProvider.java
index 2ff83b0..9381bb9 100644
--- a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProvider.java
+++ b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProvider.java
@@ -1,15 +1,14 @@
package org.keycloak.authentication.model;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
import org.jboss.resteasy.spi.ResteasyProviderFactory;
-import org.keycloak.models.KeycloakSession;
-import org.keycloak.models.RealmModel;
import org.keycloak.authentication.AuthProviderConstants;
import org.keycloak.authentication.AuthenticationProviderException;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.RealmModel;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
/**
* AbstractModelAuthenticationProvider, which delegates authentication operations to different (external) realm
@@ -18,7 +17,7 @@ import org.keycloak.provider.ProviderSession;
*/
public class ExternalModelAuthenticationProvider extends AbstractModelAuthenticationProvider {
- public ExternalModelAuthenticationProvider(ProviderSession providerSession) {
+ public ExternalModelAuthenticationProvider() {
}
@Override
diff --git a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProviderFactory.java b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProviderFactory.java
index 4a208c0..7f19623 100644
--- a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProviderFactory.java
+++ b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ExternalModelAuthenticationProviderFactory.java
@@ -4,7 +4,7 @@ import org.keycloak.Config;
import org.keycloak.authentication.AuthProviderConstants;
import org.keycloak.authentication.AuthenticationProvider;
import org.keycloak.authentication.AuthenticationProviderFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -12,8 +12,8 @@ import org.keycloak.provider.ProviderSession;
public class ExternalModelAuthenticationProviderFactory implements AuthenticationProviderFactory {
@Override
- public AuthenticationProvider create(ProviderSession providerSession) {
- return new ExternalModelAuthenticationProvider(providerSession);
+ public AuthenticationProvider create(KeycloakSession session) {
+ return new ExternalModelAuthenticationProvider();
}
@Override
diff --git a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ModelAuthenticationProviderFactory.java b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ModelAuthenticationProviderFactory.java
index 47ef637..ac8c393 100644
--- a/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ModelAuthenticationProviderFactory.java
+++ b/authentication/authentication-model/src/main/java/org/keycloak/authentication/model/ModelAuthenticationProviderFactory.java
@@ -4,7 +4,7 @@ import org.keycloak.Config;
import org.keycloak.authentication.AuthProviderConstants;
import org.keycloak.authentication.AuthenticationProvider;
import org.keycloak.authentication.AuthenticationProviderFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -12,7 +12,7 @@ import org.keycloak.provider.ProviderSession;
public class ModelAuthenticationProviderFactory implements AuthenticationProviderFactory {
@Override
- public AuthenticationProvider create(ProviderSession providerSession) {
+ public AuthenticationProvider create(KeycloakSession session) {
return new ModelAuthenticationProvider();
}
diff --git a/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProviderFactory.java b/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProviderFactory.java
index 29cdb6f..f7a18e7 100644
--- a/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProviderFactory.java
+++ b/authentication/authentication-picketlink/src/main/java/org/keycloak/authentication/picketlink/PicketlinkAuthenticationProviderFactory.java
@@ -4,8 +4,8 @@ import org.keycloak.Config;
import org.keycloak.authentication.AuthProviderConstants;
import org.keycloak.authentication.AuthenticationProvider;
import org.keycloak.authentication.AuthenticationProviderFactory;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.picketlink.IdentityManagerProvider;
-import org.keycloak.provider.ProviderSession;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -13,8 +13,8 @@ import org.keycloak.provider.ProviderSession;
public class PicketlinkAuthenticationProviderFactory implements AuthenticationProviderFactory {
@Override
- public AuthenticationProvider create(ProviderSession providerSession) {
- return new PicketlinkAuthenticationProvider(providerSession.getProvider(IdentityManagerProvider.class));
+ public AuthenticationProvider create(KeycloakSession session) {
+ return new PicketlinkAuthenticationProvider(session.getProvider(IdentityManagerProvider.class));
}
@Override
diff --git a/core/src/main/java/org/keycloak/Config.java b/core/src/main/java/org/keycloak/Config.java
index 16a320c..f26c851 100755
--- a/core/src/main/java/org/keycloak/Config.java
+++ b/core/src/main/java/org/keycloak/Config.java
@@ -16,7 +16,12 @@ public class Config {
}
public static String getProvider(String spi) {
- return configProvider.getProvider(spi);
+ String provider = configProvider.getProvider(spi);
+ if (provider == null || provider.trim().equals("")) {
+ return null;
+ } else {
+ return provider;
+ }
}
public static Scope scope(String... scope) {
diff --git a/examples/providers/audit-listener-sysout/pom.xml b/examples/providers/audit-listener-sysout/pom.xml
index d24711c..e02f858 100755
--- a/examples/providers/audit-listener-sysout/pom.xml
+++ b/examples/providers/audit-listener-sysout/pom.xml
@@ -21,6 +21,11 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
<artifactId>keycloak-audit-api</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/examples/providers/audit-listener-sysout/src/main/java/org/keycloak/examples/providers/audit/SysoutAuditListenerFactory.java b/examples/providers/audit-listener-sysout/src/main/java/org/keycloak/examples/providers/audit/SysoutAuditListenerFactory.java
index 2871f50..368446c 100644
--- a/examples/providers/audit-listener-sysout/src/main/java/org/keycloak/examples/providers/audit/SysoutAuditListenerFactory.java
+++ b/examples/providers/audit-listener-sysout/src/main/java/org/keycloak/examples/providers/audit/SysoutAuditListenerFactory.java
@@ -4,7 +4,7 @@ import org.keycloak.Config;
import org.keycloak.audit.AuditListener;
import org.keycloak.audit.AuditListenerFactory;
import org.keycloak.audit.EventType;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import java.util.HashSet;
import java.util.Set;
@@ -17,7 +17,7 @@ public class SysoutAuditListenerFactory implements AuditListenerFactory {
private Set<EventType> excludedEvents;
@Override
- public AuditListener create(ProviderSession providerSession) {
+ public AuditListener create(KeycloakSession session) {
return new SysoutAuditListener(excludedEvents);
}
diff --git a/examples/providers/audit-provider-mem/pom.xml b/examples/providers/audit-provider-mem/pom.xml
index 5cbc31a..a53776b 100755
--- a/examples/providers/audit-provider-mem/pom.xml
+++ b/examples/providers/audit-provider-mem/pom.xml
@@ -21,6 +21,11 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
<artifactId>keycloak-audit-api</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/examples/providers/audit-provider-mem/src/main/java/org/keycloak/examples/providers/audit/MemAuditProviderFactory.java b/examples/providers/audit-provider-mem/src/main/java/org/keycloak/examples/providers/audit/MemAuditProviderFactory.java
index 3ca05fc..948bfbc 100644
--- a/examples/providers/audit-provider-mem/src/main/java/org/keycloak/examples/providers/audit/MemAuditProviderFactory.java
+++ b/examples/providers/audit-provider-mem/src/main/java/org/keycloak/examples/providers/audit/MemAuditProviderFactory.java
@@ -5,7 +5,7 @@ import org.keycloak.audit.AuditProvider;
import org.keycloak.audit.AuditProviderFactory;
import org.keycloak.audit.Event;
import org.keycloak.audit.EventType;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import java.util.Collections;
import java.util.HashSet;
@@ -23,7 +23,7 @@ public class MemAuditProviderFactory implements AuditProviderFactory {
private Set<EventType> excludedEvents;
@Override
- public AuditProvider create(ProviderSession providerSession) {
+ public AuditProvider create(KeycloakSession session) {
return new MemAuditProvider(events, excludedEvents);
}
diff --git a/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProviderFactory.java b/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProviderFactory.java
index a62cf51..5712a32 100644
--- a/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProviderFactory.java
+++ b/examples/providers/authentication-properties/src/main/java/org/keycloak/examples/providers/authentication/PropertiesAuthenticationProviderFactory.java
@@ -11,7 +11,7 @@ import org.jboss.logging.Logger;
import org.keycloak.Config;
import org.keycloak.authentication.AuthenticationProvider;
import org.keycloak.authentication.AuthenticationProviderFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -24,7 +24,7 @@ public class PropertiesAuthenticationProviderFactory implements AuthenticationPr
private String propsFileLocation;
@Override
- public AuthenticationProvider create(ProviderSession providerSession) {
+ public AuthenticationProvider create(KeycloakSession session) {
return new PropertiesAuthenticationProvider(properties);
}
diff --git a/export-import/export-import-api/src/main/java/org/keycloak/exportimport/ExportImportProvider.java b/export-import/export-import-api/src/main/java/org/keycloak/exportimport/ExportImportProvider.java
index 9798370..d53f1fa 100644
--- a/export-import/export-import-api/src/main/java/org/keycloak/exportimport/ExportImportProvider.java
+++ b/export-import/export-import-api/src/main/java/org/keycloak/exportimport/ExportImportProvider.java
@@ -1,12 +1,12 @@
package org.keycloak.exportimport;
-import org.keycloak.provider.ProviderSessionFactory;
+import org.keycloak.models.KeycloakSessionFactory;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public interface ExportImportProvider {
- void checkExportImport(ProviderSessionFactory identitySessionFactory);
+ void checkExportImport(KeycloakSessionFactory sessionFactory);
}
diff --git a/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ExportImportProviderImpl.java b/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ExportImportProviderImpl.java
index de84633..1064201 100644
--- a/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ExportImportProviderImpl.java
+++ b/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ExportImportProviderImpl.java
@@ -5,9 +5,8 @@ import org.keycloak.exportimport.io.ExportImportIOProvider;
import org.keycloak.exportimport.io.ExportWriter;
import org.keycloak.exportimport.io.ImportReader;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.KeycloakTransaction;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.util.ProviderLoader;
/**
@@ -21,7 +20,7 @@ public class ExportImportProviderImpl implements ExportImportProvider {
public static final String ACTION_IMPORT = "import";
@Override
- public void checkExportImport(ProviderSessionFactory providerSessionFactory) {
+ public void checkExportImport(KeycloakSessionFactory sessionFactory) {
String exportImportAction = ExportImportConfig.getAction();
boolean export = false;
@@ -35,8 +34,7 @@ public class ExportImportProviderImpl implements ExportImportProvider {
}
if (export || importt) {
- ProviderSession providerSession = providerSessionFactory.createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = sessionFactory.create();
KeycloakTransaction transaction = session.getTransaction();
try {
transaction.begin();
@@ -64,7 +62,7 @@ public class ExportImportProviderImpl implements ExportImportProvider {
}
throw new RuntimeException(e);
} finally {
- providerSession.close();
+ session.close();
}
}
}
diff --git a/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelExporter.java b/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelExporter.java
index c82d9d2..eb6b363 100755
--- a/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelExporter.java
+++ b/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelExporter.java
@@ -43,24 +43,24 @@ public class ModelExporter {
private ExportWriter exportWriter;
private ExportImportPropertiesManager propertiesManager;
- public void exportModel(KeycloakSession keycloakSession, ExportWriter exportWriter) {
+ public void exportModel(KeycloakSession session, ExportWriter exportWriter) {
// Initialize needed objects
this.exportWriter = exportWriter;
this.propertiesManager = new ExportImportPropertiesManager();
// Create separate files for "realms", "applications", "oauthClients", "roles" and finally "users". Users may be done in more files (pagination)
- exportRealms(keycloakSession, "realms.json");
- exportApplications(keycloakSession, "applications.json");
- exportOAuthClients(keycloakSession, "oauthClients.json");
- exportRoles(keycloakSession, "roles.json");
- exportUsers(keycloakSession, "users.json");
- exportUserFailures(keycloakSession, "userFailures.json");
+ exportRealms(session, "realms.json");
+ exportApplications(session, "applications.json");
+ exportOAuthClients(session, "oauthClients.json");
+ exportRoles(session, "roles.json");
+ exportUsers(session, "users.json");
+ exportUserFailures(session, "userFailures.json");
this.exportWriter.closeExportWriter();
}
- protected void exportRealms(KeycloakSession keycloakSession, String fileName) {
- List<RealmModel> realms = keycloakSession.getRealms();
+ protected void exportRealms(KeycloakSession session, String fileName) {
+ List<RealmModel> realms = session.getRealms();
// Convert models to entities, which will be written into JSON file
List<RealmEntity> result = new LinkedList<RealmEntity>();
@@ -106,8 +106,8 @@ public class ModelExporter {
logger.infof("Realms exported: " + result);
}
- protected void exportApplications(KeycloakSession keycloakSession, String fileName) {
- List<ApplicationModel> allApplications = getAllApplications(keycloakSession);
+ protected void exportApplications(KeycloakSession session, String fileName) {
+ List<ApplicationModel> allApplications = getAllApplications(session);
List<ApplicationEntity> result = new LinkedList<ApplicationEntity>();
for (ApplicationModel appModel : allApplications) {
@@ -129,8 +129,8 @@ public class ModelExporter {
logger.infof("Applications exported: " + result);
}
- protected void exportOAuthClients(KeycloakSession keycloakSession, String fileName) {
- List<RealmModel> realms = keycloakSession.getRealms();
+ protected void exportOAuthClients(KeycloakSession session, String fileName) {
+ List<RealmModel> realms = session.getRealms();
List<OAuthClientModel> allClients = new ArrayList<OAuthClientModel>();
for (RealmModel realmModel : realms) {
allClients.addAll(realmModel.getOAuthClients());
@@ -156,8 +156,8 @@ public class ModelExporter {
logger.infof("OAuth clients exported: " + result);
}
- protected void exportRoles(KeycloakSession keycloakSession, String fileName) {
- List<RoleModel> allRoles = getAllRoles(keycloakSession);
+ protected void exportRoles(KeycloakSession session, String fileName) {
+ List<RoleModel> allRoles = getAllRoles(session);
List<RoleEntity> result = new LinkedList<RoleEntity>();
for (RoleModel roleModel : allRoles) {
@@ -198,8 +198,8 @@ public class ModelExporter {
}
}
- protected void exportUsers(KeycloakSession keycloakSession, String fileName) {
- List<RealmModel> realms = keycloakSession.getRealms();
+ protected void exportUsers(KeycloakSession session, String fileName) {
+ List<RealmModel> realms = session.getRealms();
List<UserEntity> result = new LinkedList<UserEntity>();
for (RealmModel realm : realms) {
@@ -277,8 +277,8 @@ public class ModelExporter {
// Does it makes sense to export user failures ?
- protected void exportUserFailures(KeycloakSession keycloakSession, String fileName) {
- List<RealmModel> realms = keycloakSession.getRealms();
+ protected void exportUserFailures(KeycloakSession session, String fileName) {
+ List<RealmModel> realms = session.getRealms();
List<UsernameLoginFailureModel> allFailures = new ArrayList<UsernameLoginFailureModel>();
for (RealmModel realmModel : realms) {
allFailures.addAll(realmModel.getAllUserLoginFailures());
@@ -306,8 +306,8 @@ public class ModelExporter {
return scopeIds;
}
- private List<ApplicationModel> getAllApplications(KeycloakSession keycloakSession) {
- List<RealmModel> realms = keycloakSession.getRealms();
+ private List<ApplicationModel> getAllApplications(KeycloakSession session) {
+ List<RealmModel> realms = session.getRealms();
List<ApplicationModel> allApplications = new ArrayList<ApplicationModel>();
for (RealmModel realmModel : realms) {
allApplications.addAll(realmModel.getApplications());
@@ -315,15 +315,15 @@ public class ModelExporter {
return allApplications;
}
- private List<RoleModel> getAllRoles(KeycloakSession keycloakSession) {
+ private List<RoleModel> getAllRoles(KeycloakSession session) {
List<RoleModel> allRoles = new ArrayList<RoleModel>();
- List<RealmModel> realms = keycloakSession.getRealms();
+ List<RealmModel> realms = session.getRealms();
for (RealmModel realmModel : realms) {
allRoles.addAll(realmModel.getRoles());
}
- List<ApplicationModel> allApplications = getAllApplications(keycloakSession);
+ List<ApplicationModel> allApplications = getAllApplications(session);
for (ApplicationModel appModel : allApplications) {
allRoles.addAll(appModel.getRoles());
}
diff --git a/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelImporter.java b/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelImporter.java
index 7e67c91..6ff1fa9 100755
--- a/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelImporter.java
+++ b/export-import/export-import-impl/src/main/java/org/keycloak/exportimport/ModelImporter.java
@@ -47,34 +47,34 @@ public class ModelImporter {
private ImportReader importReader;
private ExportImportPropertiesManager propertiesManager;
- public void importModel(KeycloakSession keycloakSession, ImportReader importReader) {
+ public void importModel(KeycloakSession session, ImportReader importReader) {
// Initialize needed objects
this.importReader = importReader;
this.propertiesManager = new ExportImportPropertiesManager();
// Delete all the data from current model
- keycloakSession.removeAllData();
+ session.removeAllData();
- importRealms(keycloakSession, "realms.json");
- importApplications(keycloakSession, "applications.json");
- importRoles(keycloakSession, "roles.json");
+ importRealms(session, "realms.json");
+ importApplications(session, "applications.json");
+ importRoles(session, "roles.json");
// Now we have all realms,applications and roles filled. So fill other objects (default roles, scopes etc)
- importRealmsStep2(keycloakSession, "realms.json");
- importApplicationsStep2(keycloakSession, "applications.json");
+ importRealmsStep2(session, "realms.json");
+ importApplicationsStep2(session, "applications.json");
- importOAuthClients(keycloakSession, "oauthClients.json");
- importUsers(keycloakSession, "users.json");
- importUserFailures(keycloakSession, "userFailures.json");
+ importOAuthClients(session, "oauthClients.json");
+ importUsers(session, "users.json");
+ importUserFailures(session, "userFailures.json");
this.importReader.closeImportReader();
}
- protected void importRealms(KeycloakSession keycloakSession, String fileName) {
+ protected void importRealms(KeycloakSession session, String fileName) {
List<RealmEntity> realms = this.importReader.readEntities(fileName, RealmEntity.class);
for (RealmEntity realmEntity : realms) {
- RealmModel realm = keycloakSession.createRealm(realmEntity.getId(), realmEntity.getName());
+ RealmModel realm = session.createRealm(realmEntity.getId(), realmEntity.getName());
this.propertiesManager.setBasicPropertiesToModel(realm, realmEntity);
@@ -103,10 +103,10 @@ public class ModelImporter {
logger.infof("Realms imported: " + realms);
}
- protected void importApplications(KeycloakSession keycloakSession, String fileName) {
+ protected void importApplications(KeycloakSession session, String fileName) {
List<ApplicationEntity> apps = this.importReader.readEntities(fileName, ApplicationEntity.class);
for (ApplicationEntity appEntity : apps) {
- RealmModel realm = keycloakSession.getRealm(appEntity.getRealmId());
+ RealmModel realm = session.getRealm(appEntity.getRealmId());
ApplicationModel app = realm.addApplication(appEntity.getId(), appEntity.getName());
this.propertiesManager.setBasicPropertiesToModel(app , appEntity);
@@ -117,7 +117,7 @@ public class ModelImporter {
logger.infof("Applications imported: " + apps);
}
- protected void importRoles(KeycloakSession keycloakSession, String fileName) {
+ protected void importRoles(KeycloakSession session, String fileName) {
// helper map for composite roles
Map<String, RoleEntity> rolesMap = new HashMap<String, RoleEntity>();
@@ -125,10 +125,10 @@ public class ModelImporter {
for (RoleEntity roleEntity : roles) {
RoleModel role = null;
if (roleEntity.getRealmId() != null) {
- RealmModel realm = keycloakSession.getRealm(roleEntity.getRealmId());
+ RealmModel realm = session.getRealm(roleEntity.getRealmId());
role = realm.addRole(roleEntity.getId(), roleEntity.getName());
} else if (roleEntity.getApplicationId() != null) {
- ApplicationModel app = findApplicationById(keycloakSession, roleEntity.getApplicationId());
+ ApplicationModel app = findApplicationById(session, roleEntity.getApplicationId());
role = app.addRole(roleEntity.getId(), roleEntity.getName());
} else {
throw new IllegalStateException("Role " + roleEntity.getId() + " doesn't have realmId nor applicationId");
@@ -140,7 +140,7 @@ public class ModelImporter {
}
// All roles were added. Fill composite roles now
- for (RealmModel realm : keycloakSession.getRealms()) {
+ for (RealmModel realm : session.getRealms()) {
// realm roles
fillCompositeRoles(rolesMap, realm, realm);
@@ -172,12 +172,12 @@ public class ModelImporter {
}
}
- protected void importRealmsStep2(KeycloakSession keycloakSession, String fileName) {
+ protected void importRealmsStep2(KeycloakSession session, String fileName) {
List<RealmEntity> realms = this.importReader.readEntities(fileName, RealmEntity.class);
- RealmModel adminRealm = keycloakSession.getRealm(Config.getAdminRealm());
+ RealmModel adminRealm = session.getRealm(Config.getAdminRealm());
for (RealmEntity realmEntity : realms) {
- RealmModel realm = keycloakSession.getRealm(realmEntity.getId());
+ RealmModel realm = session.getRealm(realmEntity.getId());
// admin app
String adminAppId = realmEntity.getAdminAppId();
@@ -190,10 +190,10 @@ public class ModelImporter {
}
}
- protected void importApplicationsStep2(KeycloakSession keycloakSession, String fileName) {
+ protected void importApplicationsStep2(KeycloakSession session, String fileName) {
List<ApplicationEntity> apps = this.importReader.readEntities(fileName, ApplicationEntity.class);
for (ApplicationEntity appEntity : apps) {
- RealmModel realm = keycloakSession.getRealm(appEntity.getRealmId());
+ RealmModel realm = session.getRealm(appEntity.getRealmId());
ApplicationModel application = realm.getApplicationById(appEntity.getId());
// Default roles
@@ -211,10 +211,10 @@ public class ModelImporter {
}
}
- protected void importOAuthClients(KeycloakSession keycloakSession, String fileName) {
+ protected void importOAuthClients(KeycloakSession session, String fileName) {
List<OAuthClientEntity> clients = this.importReader.readEntities(fileName, OAuthClientEntity.class);
for (OAuthClientEntity clientEntity : clients) {
- RealmModel realm = keycloakSession.getRealm(clientEntity.getRealmId());
+ RealmModel realm = session.getRealm(clientEntity.getRealmId());
OAuthClientModel client = realm.addOAuthClient(clientEntity.getId(), clientEntity.getName());
this.propertiesManager.setBasicPropertiesToModel(client, clientEntity);
@@ -228,8 +228,8 @@ public class ModelImporter {
logger.info("OAuth clients imported: " + clients);
}
- protected ApplicationModel findApplicationById(KeycloakSession keycloakSession, String applicationId) {
- for (RealmModel realm : keycloakSession.getRealms()) {
+ protected ApplicationModel findApplicationById(KeycloakSession session, String applicationId) {
+ for (RealmModel realm : session.getRealms()) {
ApplicationModel appModel = realm.getApplicationById(applicationId);
if (appModel != null) {
return appModel;
@@ -239,10 +239,10 @@ public class ModelImporter {
return null;
}
- public void importUsers(KeycloakSession keycloakSession, String fileName) {
+ public void importUsers(KeycloakSession session, String fileName) {
List<UserEntity> users = this.importReader.readEntities(fileName, UserEntity.class);
for (UserEntity userEntity : users) {
- RealmModel realm = keycloakSession.getRealm(userEntity.getRealmId());
+ RealmModel realm = session.getRealm(userEntity.getRealmId());
UserModel user = realm.addUser(userEntity.getId(), userEntity.getLoginName());
// We need to remove defaultRoles here as realm.addUser is automatically adding them. We may add them later during roles mapping processing
@@ -313,10 +313,10 @@ public class ModelImporter {
}
}
- public void importUserFailures(KeycloakSession keycloakSession, String fileName) {
+ public void importUserFailures(KeycloakSession session, String fileName) {
List<UsernameLoginFailureEntity> userFailures = this.importReader.readEntities(fileName, UsernameLoginFailureEntity.class);
for (UsernameLoginFailureEntity entity : userFailures) {
- RealmModel realm = keycloakSession.getRealm(entity.getRealmId());
+ RealmModel realm = session.getRealm(entity.getRealmId());
UsernameLoginFailureModel model = realm.addUserLoginFailure(entity.getUsername());
this.propertiesManager.setBasicPropertiesToModel(model , entity);
diff --git a/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/ExportImportTestBase.java b/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/ExportImportTestBase.java
index 49817c7..9dc4cd8 100644
--- a/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/ExportImportTestBase.java
+++ b/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/ExportImportTestBase.java
@@ -6,9 +6,8 @@ import org.junit.Test;
import org.keycloak.model.test.AbstractModelTest;
import org.keycloak.model.test.ImportTest;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.services.managers.ApplianceBootstrap;
import org.keycloak.services.managers.RealmManager;
@@ -22,10 +21,9 @@ import java.util.Iterator;
*/
public abstract class ExportImportTestBase {
- protected ProviderSessionFactory factory;
+ protected KeycloakSessionFactory factory;
- protected ProviderSession providerSession;
- protected KeycloakSession identitySession;
+ protected KeycloakSession session;
protected RealmManager realmManager;
@After
@@ -37,17 +35,17 @@ public abstract class ExportImportTestBase {
public void testExportImport() throws Exception {
// Init JPA model
System.setProperty("keycloak.model.provider", getExportModelProvider());
- factory = KeycloakApplication.createProviderSessionFactory();
+ factory = KeycloakApplication.createSessionFactory();
// Bootstrap admin realm
beginTransaction();
- new ApplianceBootstrap().bootstrap(identitySession, "/auth");
+ new ApplianceBootstrap().bootstrap(session, "/auth");
commitTransaction();
// Classic import of realm to JPA model
beginTransaction();
RealmRepresentation rep = AbstractModelTest.loadJson("testrealm.json");
- realmManager = new RealmManager(identitySession);
+ realmManager = new RealmManager(session);
RealmModel realm = realmManager.createRealm("demo", rep.getRealm());
realmManager.importRealm(rep, realm);
@@ -57,7 +55,7 @@ public abstract class ExportImportTestBase {
exportModel(factory);
beginTransaction();
- realm = identitySession.getRealm("demo");
+ realm = session.getRealm("demo");
String wburkeId = realm.getUser("wburke").getId();
String appId = realm.getApplicationByName("Application").getId();
@@ -67,14 +65,14 @@ public abstract class ExportImportTestBase {
// Bootstrap mongo session and factory
System.setProperty("keycloak.model.provider", getImportModelProvider());
- factory = KeycloakApplication.createProviderSessionFactory();
+ factory = KeycloakApplication.createSessionFactory();
// Full import of previous export into mongo
importModel(factory);
// Verify it's imported in mongo (reusing ImportTest)
beginTransaction();
- RealmModel importedRealm = identitySession.getRealm("demo");
+ RealmModel importedRealm = session.getRealm("demo");
System.out.println("Exported realm: " + realm + ", Imported realm: " + importedRealm);
Assert.assertEquals(wburkeId, importedRealm.getUser("wburke").getId());
@@ -90,20 +88,19 @@ public abstract class ExportImportTestBase {
protected abstract String getImportModelProvider();
- protected abstract void exportModel(ProviderSessionFactory factory);
+ protected abstract void exportModel(KeycloakSessionFactory factory);
- protected abstract void importModel(ProviderSessionFactory factory);
+ protected abstract void importModel(KeycloakSessionFactory factory);
protected void beginTransaction() {
- providerSession = factory.createSession();
- identitySession = providerSession.getProvider(KeycloakSession.class);
- identitySession.getTransaction().begin();
- realmManager = new RealmManager(identitySession);
+ session = factory.create();
+ session.getTransaction().begin();
+ realmManager = new RealmManager(session);
}
protected void commitTransaction() {
- identitySession.getTransaction().commit();
- providerSession.close();
+ session.getTransaction().commit();
+ session.close();
}
protected ExportImportProvider getExportImportProvider() {
diff --git a/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/JPAToMongoExportImportTest.java b/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/JPAToMongoExportImportTest.java
index 52ee054..8cc6a17 100644
--- a/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/JPAToMongoExportImportTest.java
+++ b/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/JPAToMongoExportImportTest.java
@@ -1,7 +1,7 @@
package org.keycloak.exportimport;
import org.keycloak.exportimport.io.directory.TmpDirExportImportIOProvider;
-import org.keycloak.provider.ProviderSessionFactory;
+import org.keycloak.models.KeycloakSessionFactory;
/**
* Test for full export of data from JPA and import them to Mongo. Using "directory" provider
@@ -21,14 +21,14 @@ public class JPAToMongoExportImportTest extends ExportImportTestBase {
}
@Override
- protected void exportModel(ProviderSessionFactory factory) {
+ protected void exportModel(KeycloakSessionFactory factory) {
ExportImportConfig.setAction(ExportImportProviderImpl.ACTION_EXPORT);
ExportImportConfig.setProvider(TmpDirExportImportIOProvider.PROVIDER_ID);
getExportImportProvider().checkExportImport(factory);
}
@Override
- protected void importModel(ProviderSessionFactory factory) {
+ protected void importModel(KeycloakSessionFactory factory) {
ExportImportConfig.setAction(ExportImportProviderImpl.ACTION_IMPORT);
ExportImportConfig.setProvider(TmpDirExportImportIOProvider.PROVIDER_ID);
getExportImportProvider().checkExportImport(factory);
diff --git a/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/MongoToJPAExportImportTest.java b/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/MongoToJPAExportImportTest.java
index 849c388..5fe08f7 100644
--- a/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/MongoToJPAExportImportTest.java
+++ b/export-import/export-import-impl/src/test/java/org/keycloak/exportimport/MongoToJPAExportImportTest.java
@@ -2,7 +2,7 @@ package org.keycloak.exportimport;
import org.junit.Assert;
import org.keycloak.exportimport.io.zip.EncryptedZIPIOProvider;
-import org.keycloak.provider.ProviderSessionFactory;
+import org.keycloak.models.KeycloakSessionFactory;
import java.io.File;
@@ -26,7 +26,7 @@ public class MongoToJPAExportImportTest extends ExportImportTestBase {
}
@Override
- protected void exportModel(ProviderSessionFactory factory) {
+ protected void exportModel(KeycloakSessionFactory factory) {
ExportImportConfig.setAction(ExportImportProviderImpl.ACTION_EXPORT);
ExportImportConfig.setProvider(EncryptedZIPIOProvider.PROVIDER_ID);
File zipFile = getZipFile();
@@ -41,7 +41,7 @@ public class MongoToJPAExportImportTest extends ExportImportTestBase {
}
@Override
- protected void importModel(ProviderSessionFactory factory) {
+ protected void importModel(KeycloakSessionFactory factory) {
ExportImportConfig.setAction(ExportImportProviderImpl.ACTION_IMPORT);
ExportImportConfig.setProvider(EncryptedZIPIOProvider.PROVIDER_ID);
File zipFile = getZipFile();
diff --git a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProvider.java b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProvider.java
index ca77182..e7d9636 100755
--- a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProvider.java
+++ b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProvider.java
@@ -17,11 +17,10 @@ import org.keycloak.freemarker.ExtendingThemeManager;
import org.keycloak.freemarker.FreeMarkerException;
import org.keycloak.freemarker.FreeMarkerUtil;
import org.keycloak.freemarker.Theme;
-import org.keycloak.freemarker.ThemeProvider;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.provider.ProviderSession;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@@ -50,7 +49,7 @@ public class FreeMarkerAccountProvider implements AccountProvider {
private boolean social;
private boolean audit;
private boolean passwordUpdateSupported;
- private ProviderSession session;
+ private KeycloakSession session;
private FreeMarkerUtil freeMarker;
public static enum MessageType {SUCCESS, WARNING, ERROR}
@@ -60,7 +59,7 @@ public class FreeMarkerAccountProvider implements AccountProvider {
private String message;
private MessageType messageType;
- public FreeMarkerAccountProvider(ProviderSession session, FreeMarkerUtil freeMarker) {
+ public FreeMarkerAccountProvider(KeycloakSession session, FreeMarkerUtil freeMarker) {
this.session = session;
this.freeMarker = freeMarker;
}
diff --git a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProviderFactory.java b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProviderFactory.java
index 0e70002..2bd8ee6 100644
--- a/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProviderFactory.java
+++ b/forms/account-freemarker/src/main/java/org/keycloak/account/freemarker/FreeMarkerAccountProviderFactory.java
@@ -4,9 +4,7 @@ import org.keycloak.Config;
import org.keycloak.account.AccountProvider;
import org.keycloak.account.AccountProviderFactory;
import org.keycloak.freemarker.FreeMarkerUtil;
-import org.keycloak.provider.ProviderSession;
-
-import javax.ws.rs.core.UriInfo;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -16,8 +14,8 @@ public class FreeMarkerAccountProviderFactory implements AccountProviderFactory
private FreeMarkerUtil freeMarker;
@Override
- public AccountProvider create(ProviderSession providerSession) {
- return new FreeMarkerAccountProvider(providerSession, freeMarker);
+ public AccountProvider create(KeycloakSession session) {
+ return new FreeMarkerAccountProvider(session, freeMarker);
}
@Override
diff --git a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java
index aad8fcb..c407b5f 100644
--- a/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java
+++ b/forms/common-freemarker/src/main/java/org/keycloak/freemarker/ExtendingThemeManager.java
@@ -1,7 +1,7 @@
package org.keycloak.freemarker;
import org.keycloak.Config;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import java.io.IOException;
import java.io.InputStream;
@@ -24,10 +24,10 @@ public class ExtendingThemeManager implements ThemeProvider {
private String defaultTheme;
private int staticMaxAge;
- public ExtendingThemeManager(ProviderSession providerSession) {
+ public ExtendingThemeManager(KeycloakSession session) {
providers = new LinkedList();
- for (ThemeProvider p : providerSession.getAllProviders(ThemeProvider.class)) {
+ for (ThemeProvider p : session.getAllProviders(ThemeProvider.class)) {
if (!p.getClass().equals(ExtendingThemeManager.class)) {
providers.add(p);
}
diff --git a/forms/common-themes/src/main/java/org/keycloak/theme/DefaultKeycloakThemeProviderFactory.java b/forms/common-themes/src/main/java/org/keycloak/theme/DefaultKeycloakThemeProviderFactory.java
index 4c3515d..4158679 100644
--- a/forms/common-themes/src/main/java/org/keycloak/theme/DefaultKeycloakThemeProviderFactory.java
+++ b/forms/common-themes/src/main/java/org/keycloak/theme/DefaultKeycloakThemeProviderFactory.java
@@ -3,7 +3,7 @@ package org.keycloak.theme;
import org.keycloak.Config;
import org.keycloak.freemarker.ThemeProvider;
import org.keycloak.freemarker.ThemeProviderFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -13,7 +13,7 @@ public class DefaultKeycloakThemeProviderFactory implements ThemeProviderFactory
private DefaultKeycloakThemeProvider themeProvider;
@Override
- public ThemeProvider create(ProviderSession providerSession) {
+ public ThemeProvider create(KeycloakSession session) {
return themeProvider;
}
diff --git a/forms/common-themes/src/main/java/org/keycloak/theme/FolderThemeProviderFactory.java b/forms/common-themes/src/main/java/org/keycloak/theme/FolderThemeProviderFactory.java
index ff9dd2e..d85f289 100644
--- a/forms/common-themes/src/main/java/org/keycloak/theme/FolderThemeProviderFactory.java
+++ b/forms/common-themes/src/main/java/org/keycloak/theme/FolderThemeProviderFactory.java
@@ -3,7 +3,7 @@ package org.keycloak.theme;
import org.keycloak.Config;
import org.keycloak.freemarker.ThemeProvider;
import org.keycloak.freemarker.ThemeProviderFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import java.io.File;
@@ -15,7 +15,7 @@ public class FolderThemeProviderFactory implements ThemeProviderFactory {
private FolderThemeProvider themeProvider;
@Override
- public ThemeProvider create(ProviderSession providerSession) {
+ public ThemeProvider create(KeycloakSession sessions) {
return themeProvider;
}
diff --git a/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProvider.java b/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProvider.java
index 9a7d37c..f0ad4d8 100644
--- a/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProvider.java
+++ b/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProvider.java
@@ -8,16 +8,15 @@ import org.keycloak.email.freemarker.beans.EventBean;
import org.keycloak.freemarker.ExtendingThemeManager;
import org.keycloak.freemarker.FreeMarkerUtil;
import org.keycloak.freemarker.Theme;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -29,12 +28,12 @@ public class FreeMarkerEmailProvider implements EmailProvider {
private static final Logger log = Logger.getLogger(FreeMarkerEmailProvider.class);
- private ProviderSession session;
+ private KeycloakSession session;
private FreeMarkerUtil freeMarker;
private RealmModel realm;
private UserModel user;
- public FreeMarkerEmailProvider(ProviderSession session, FreeMarkerUtil freeMarker) {
+ public FreeMarkerEmailProvider(KeycloakSession session, FreeMarkerUtil freeMarker) {
this.session = session;
this.freeMarker = freeMarker;
}
diff --git a/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProviderFactory.java b/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProviderFactory.java
index 1caf677..7e1fcaf 100644
--- a/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProviderFactory.java
+++ b/forms/email-freemarker/src/main/java/org/keycloak/email/freemarker/FreeMarkerEmailProviderFactory.java
@@ -4,7 +4,7 @@ import org.keycloak.Config;
import org.keycloak.email.EmailProvider;
import org.keycloak.email.EmailProviderFactory;
import org.keycloak.freemarker.FreeMarkerUtil;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -14,8 +14,8 @@ public class FreeMarkerEmailProviderFactory implements EmailProviderFactory {
private FreeMarkerUtil freeMarker;
@Override
- public EmailProvider create(ProviderSession providerSession) {
- return new FreeMarkerEmailProvider(providerSession, freeMarker);
+ public EmailProvider create(KeycloakSession session) {
+ return new FreeMarkerEmailProvider(session, freeMarker);
}
@Override
diff --git a/forms/login-api/src/main/java/org/keycloak/login/LoginFormsProviderFactory.java b/forms/login-api/src/main/java/org/keycloak/login/LoginFormsProviderFactory.java
index 0d9db65..f4e58df 100755
--- a/forms/login-api/src/main/java/org/keycloak/login/LoginFormsProviderFactory.java
+++ b/forms/login-api/src/main/java/org/keycloak/login/LoginFormsProviderFactory.java
@@ -1,7 +1,6 @@
package org.keycloak.login;
import org.keycloak.provider.ProviderFactory;
-import org.keycloak.provider.ProviderSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
diff --git a/forms/login-api/src/main/java/org/keycloak/login/LoginFormsSpi.java b/forms/login-api/src/main/java/org/keycloak/login/LoginFormsSpi.java
index e3fffea..74f5b4a 100644
--- a/forms/login-api/src/main/java/org/keycloak/login/LoginFormsSpi.java
+++ b/forms/login-api/src/main/java/org/keycloak/login/LoginFormsSpi.java
@@ -10,7 +10,7 @@ import org.keycloak.provider.Spi;
public class LoginFormsSpi implements Spi {
@Override
public String getName() {
- return "login-forms";
+ return "login";
}
@Override
diff --git a/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProvider.java b/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProvider.java
index 78b1a74..dfbfb9b 100755
--- a/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProvider.java
+++ b/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProvider.java
@@ -8,9 +8,8 @@ import org.keycloak.freemarker.ExtendingThemeManager;
import org.keycloak.freemarker.FreeMarkerException;
import org.keycloak.freemarker.FreeMarkerUtil;
import org.keycloak.freemarker.Theme;
-import org.keycloak.freemarker.ThemeProvider;
-import org.keycloak.login.LoginFormsProvider;
import org.keycloak.login.LoginFormsPages;
+import org.keycloak.login.LoginFormsProvider;
import org.keycloak.login.freemarker.model.CodeBean;
import org.keycloak.login.freemarker.model.LoginBean;
import org.keycloak.login.freemarker.model.MessageBean;
@@ -22,10 +21,10 @@ import org.keycloak.login.freemarker.model.SocialBean;
import org.keycloak.login.freemarker.model.TotpBean;
import org.keycloak.login.freemarker.model.UrlBean;
import org.keycloak.models.ClientModel;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.services.messages.Messages;
import org.keycloak.services.resources.flows.Urls;
@@ -62,7 +61,7 @@ public class FreeMarkerLoginFormsProvider implements LoginFormsProvider {
private MultivaluedMap<String, String> formData;
- private ProviderSession session;
+ private KeycloakSession session;
private FreeMarkerUtil freeMarker;
private RealmModel realm;
@@ -72,7 +71,7 @@ public class FreeMarkerLoginFormsProvider implements LoginFormsProvider {
private UriInfo uriInfo;
- public FreeMarkerLoginFormsProvider(ProviderSession session, FreeMarkerUtil freeMarker) {
+ public FreeMarkerLoginFormsProvider(KeycloakSession session, FreeMarkerUtil freeMarker) {
this.session = session;
this.freeMarker = freeMarker;
}
diff --git a/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProviderFactory.java b/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProviderFactory.java
index 0e5905b..8257f10 100755
--- a/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProviderFactory.java
+++ b/forms/login-freemarker/src/main/java/org/keycloak/login/freemarker/FreeMarkerLoginFormsProviderFactory.java
@@ -4,7 +4,7 @@ import org.keycloak.Config;
import org.keycloak.freemarker.FreeMarkerUtil;
import org.keycloak.login.LoginFormsProvider;
import org.keycloak.login.LoginFormsProviderFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -14,8 +14,8 @@ public class FreeMarkerLoginFormsProviderFactory implements LoginFormsProviderFa
private FreeMarkerUtil freeMarker;
@Override
- public LoginFormsProvider create(ProviderSession providerSession) {
- return new FreeMarkerLoginFormsProvider(providerSession, freeMarker);
+ public LoginFormsProvider create(KeycloakSession session) {
+ return new FreeMarkerLoginFormsProvider(session, freeMarker);
}
@Override
diff --git a/model/api/src/main/java/org/keycloak/models/KeycloakSession.java b/model/api/src/main/java/org/keycloak/models/KeycloakSession.java
index d0e4a34..ba2c776 100755
--- a/model/api/src/main/java/org/keycloak/models/KeycloakSession.java
+++ b/model/api/src/main/java/org/keycloak/models/KeycloakSession.java
@@ -10,11 +10,19 @@ import java.util.Set;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
-public interface KeycloakSession extends Provider {
+public interface KeycloakSession {
// Note: The reason there are so many query methods here is for layering a cache on top of an persistent KeycloakSession
KeycloakTransaction getTransaction();
+ <T extends Provider> T getProvider(Class<T> clazz);
+
+ <T extends Provider> T getProvider(Class<T> clazz, String id);
+
+ <T extends Provider> Set<String> listProviderIds(Class<T> clazz);
+
+ <T extends Provider> Set<T> getAllProviders(Class<T> clazz);
+
RealmModel createRealm(String name);
RealmModel createRealm(String id, String name);
RealmModel getRealm(String id);
diff --git a/model/api/src/main/java/org/keycloak/models/KeycloakSessionFactory.java b/model/api/src/main/java/org/keycloak/models/KeycloakSessionFactory.java
index dba6d84..582b7ea 100755
--- a/model/api/src/main/java/org/keycloak/models/KeycloakSessionFactory.java
+++ b/model/api/src/main/java/org/keycloak/models/KeycloakSessionFactory.java
@@ -1,13 +1,10 @@
package org.keycloak.models;
-import org.keycloak.provider.ProviderFactory;
-import org.keycloak.provider.ProviderSession;
-
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
-public interface KeycloakSessionFactory extends ProviderFactory<KeycloakSession> {
- KeycloakSession create(ProviderSession providerSession);
+public interface KeycloakSessionFactory {
+ KeycloakSession create();
void close();
}
diff --git a/model/api/src/main/java/org/keycloak/models/ModelProvider.java b/model/api/src/main/java/org/keycloak/models/ModelProvider.java
index 1e166ac..8ec2580 100755
--- a/model/api/src/main/java/org/keycloak/models/ModelProvider.java
+++ b/model/api/src/main/java/org/keycloak/models/ModelProvider.java
@@ -1,11 +1,59 @@
package org.keycloak.models;
+import org.keycloak.provider.Provider;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
-public interface ModelProvider {
- String getId();
+public interface ModelProvider extends Provider {
+ // Note: The reason there are so many query methods here is for layering a cache on top of an persistent KeycloakSession
+
+ KeycloakTransaction getTransaction();
+
+ RealmModel createRealm(String name);
+ RealmModel createRealm(String id, String name);
+ RealmModel getRealm(String id);
+ RealmModel getRealmByName(String name);
+
+ UserModel getUserById(String id, RealmModel realm);
+ UserModel getUserByUsername(String username, RealmModel realm);
+ UserModel getUserByEmail(String email, RealmModel realm);
+ UserModel getUserBySocialLink(SocialLinkModel socialLink, RealmModel realm);
+ List<UserModel> getUsers(RealmModel realm);
+ List<UserModel> searchForUser(String search, RealmModel realm);
+ List<UserModel> searchForUserByAttributes(Map<String, String> attributes, RealmModel realm);
+
+ Set<SocialLinkModel> getSocialLinks(UserModel user, RealmModel realm);
+ SocialLinkModel getSocialLink(UserModel user, String socialProvider, RealmModel realm);
+
+
+ RoleModel getRoleById(String id, RealmModel realm);
+ ApplicationModel getApplicationById(String id, RealmModel realm);
+ OAuthClientModel getOAuthClientById(String id, RealmModel realm);
+ List<RealmModel> getRealms();
+ boolean removeRealm(String id);
+
+ UsernameLoginFailureModel getUserLoginFailure(String username, RealmModel realm);
+ UsernameLoginFailureModel addUserLoginFailure(String username, RealmModel realm);
+ List<UsernameLoginFailureModel> getAllUserLoginFailures(RealmModel realm);
+
+ UserSessionModel createUserSession(RealmModel realm, UserModel user, String ipAddress);
+ UserSessionModel getUserSession(String id, RealmModel realm);
+ List<UserSessionModel> getUserSessions(UserModel user, RealmModel realm);
+ Set<UserSessionModel> getUserSessions(RealmModel realm, ClientModel client);
+ int getActiveUserSessions(RealmModel realm, ClientModel client);
+ void removeUserSession(UserSessionModel session);
+ void removeUserSessions(RealmModel realm, UserModel user);
+ void removeExpiredUserSessions(RealmModel realm);
+ void removeUserSessions(RealmModel realm);
+
+
+ void removeAllData();
- KeycloakSessionFactory createFactory();
+ void close();
}
diff --git a/model/api/src/main/java/org/keycloak/models/ModelProviderFactory.java b/model/api/src/main/java/org/keycloak/models/ModelProviderFactory.java
new file mode 100755
index 0000000..4842118
--- /dev/null
+++ b/model/api/src/main/java/org/keycloak/models/ModelProviderFactory.java
@@ -0,0 +1,10 @@
+package org.keycloak.models;
+
+import org.keycloak.provider.ProviderFactory;
+
+/**
+ * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
+ * @version $Revision: 1 $
+ */
+public interface ModelProviderFactory extends ProviderFactory<ModelProvider> {
+}
diff --git a/model/api/src/main/java/org/keycloak/models/ModelSpi.java b/model/api/src/main/java/org/keycloak/models/ModelSpi.java
index 42586e9..7e944ba 100644
--- a/model/api/src/main/java/org/keycloak/models/ModelSpi.java
+++ b/model/api/src/main/java/org/keycloak/models/ModelSpi.java
@@ -16,12 +16,12 @@ public class ModelSpi implements Spi {
@Override
public Class<? extends Provider> getProviderClass() {
- return KeycloakSession.class;
+ return ModelProvider.class;
}
@Override
public Class<? extends ProviderFactory> getProviderFactoryClass() {
- return KeycloakSessionFactory.class;
+ return ModelProviderFactory.class;
}
}
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ApplicationAdapter.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ApplicationAdapter.java
index 81f608e..31e938e 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ApplicationAdapter.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ApplicationAdapter.java
@@ -5,9 +5,8 @@ import org.keycloak.models.ClientModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleContainerModel;
import org.keycloak.models.RoleModel;
-import org.keycloak.models.UserSessionModel;
import org.keycloak.models.cache.entities.CachedApplication;
-import org.keycloak.models.cache.entities.CachedClient;
+
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -20,7 +19,7 @@ public class ApplicationAdapter extends ClientAdapter implements ApplicationMode
protected ApplicationModel updated;
protected CachedApplication cached;
- public ApplicationAdapter(RealmModel cachedRealm, CachedApplication cached, CacheKeycloakSession cacheSession, KeycloakCache cache) {
+ public ApplicationAdapter(RealmModel cachedRealm, CachedApplication cached, CacheModelProvider cacheSession, KeycloakCache cache) {
super(cachedRealm, cached, cache, cacheSession);
this.cached = cached;
}
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ClientAdapter.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ClientAdapter.java
index 660c738..8be3d82 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ClientAdapter.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/ClientAdapter.java
@@ -1,12 +1,10 @@
package org.keycloak.models.cache;
-import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleContainerModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.models.cache.entities.CachedApplication;
import org.keycloak.models.cache.entities.CachedClient;
import java.util.HashSet;
@@ -18,12 +16,12 @@ import java.util.Set;
*/
public abstract class ClientAdapter implements ClientModel {
protected CachedClient cachedClient;
- protected CacheKeycloakSession cacheSession;
+ protected CacheModelProvider cacheSession;
protected ClientModel updatedClient;
protected RealmModel cachedRealm;
protected KeycloakCache cache;
- public ClientAdapter(RealmModel cachedRealm, CachedClient cached, KeycloakCache cache, CacheKeycloakSession cacheSession) {
+ public ClientAdapter(RealmModel cachedRealm, CachedClient cached, KeycloakCache cache, CacheModelProvider cacheSession) {
this.cachedRealm = cachedRealm;
this.cache = cache;
this.cacheSession = cacheSession;
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedApplication.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedApplication.java
index 6aab1ac..06cc7fe 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedApplication.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedApplication.java
@@ -3,6 +3,7 @@ package org.keycloak.models.cache.entities;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.ModelProvider;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
@@ -28,7 +29,7 @@ public class CachedApplication extends CachedClient {
private boolean bearerOnly;
private Map<String, String> roles = new HashMap<String, String>();
- public CachedApplication(KeycloakCache cache, KeycloakSession delegate, RealmModel realm, ApplicationModel model) {
+ public CachedApplication(KeycloakCache cache, ModelProvider delegate, RealmModel realm, ApplicationModel model) {
super(cache, delegate, realm, model);
surrogateAuthRequired = model.isSurrogateAuthRequired();
managementUrl = model.getManagementUrl();
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedClient.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedClient.java
index db22668..7e62422 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedClient.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedClient.java
@@ -3,6 +3,7 @@ package org.keycloak.models.cache.entities;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.ModelProvider;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.cache.KeycloakCache;
@@ -27,7 +28,7 @@ public class CachedClient {
protected Set<String> scope = new HashSet<String>();
protected Set<String> webOrigins = new HashSet<String>();
- public CachedClient(KeycloakCache cache, KeycloakSession delegate, RealmModel realm, ClientModel model) {
+ public CachedClient(KeycloakCache cache, ModelProvider delegate, RealmModel realm, ClientModel model) {
id = model.getId();
secret = model.getSecret();
name = model.getClientId();
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedOAuthClient.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedOAuthClient.java
index c708bd4..397010f 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedOAuthClient.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedOAuthClient.java
@@ -1,6 +1,7 @@
package org.keycloak.models.cache.entities;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.ModelProvider;
import org.keycloak.models.OAuthClientModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.cache.KeycloakCache;
@@ -10,7 +11,7 @@ import org.keycloak.models.cache.KeycloakCache;
* @version $Revision: 1 $
*/
public class CachedOAuthClient extends CachedClient {
- public CachedOAuthClient(KeycloakCache cache, KeycloakSession delegate, RealmModel realm, OAuthClientModel model) {
+ public CachedOAuthClient(KeycloakCache cache, ModelProvider delegate, RealmModel realm, OAuthClientModel model) {
super(cache, delegate, realm, model);
}
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
index 08f9b97..ffaa6c5 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/entities/CachedRealm.java
@@ -3,6 +3,7 @@ package org.keycloak.models.cache.entities;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.AuthenticationProviderModel;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.ModelProvider;
import org.keycloak.models.OAuthClientModel;
import org.keycloak.models.PasswordPolicy;
import org.keycloak.models.RealmModel;
@@ -80,7 +81,7 @@ public class CachedRealm {
public CachedRealm() {
}
- public CachedRealm(KeycloakCache cache, KeycloakSession delegate, RealmModel model) {
+ public CachedRealm(KeycloakCache cache, ModelProvider delegate, RealmModel model) {
id = model.getId();
name = model.getName();
enabled = model.isEnabled();
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/OAuthClientAdapter.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/OAuthClientAdapter.java
index cc6d3d6..2831ea0 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/OAuthClientAdapter.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/OAuthClientAdapter.java
@@ -1,18 +1,9 @@
package org.keycloak.models.cache;
-import org.keycloak.models.ApplicationModel;
-import org.keycloak.models.ClientModel;
import org.keycloak.models.OAuthClientModel;
import org.keycloak.models.RealmModel;
-import org.keycloak.models.RoleContainerModel;
-import org.keycloak.models.RoleModel;
-import org.keycloak.models.cache.entities.CachedApplication;
import org.keycloak.models.cache.entities.CachedOAuthClient;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
@@ -21,7 +12,7 @@ public class OAuthClientAdapter extends ClientAdapter implements OAuthClientMode
protected OAuthClientModel updated;
protected CachedOAuthClient cached;
- public OAuthClientAdapter(RealmModel cachedRealm, CachedOAuthClient cached, CacheKeycloakSession cacheSession, KeycloakCache cache) {
+ public OAuthClientAdapter(RealmModel cachedRealm, CachedOAuthClient cached, CacheModelProvider cacheSession, KeycloakCache cache) {
super(cachedRealm, cached, cache, cacheSession);
this.cached = cached;
}
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java
index 5dc2539..3b5158c 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RealmAdapter.java
@@ -1,7 +1,6 @@
package org.keycloak.models.cache;
import org.keycloak.models.ApplicationModel;
-import org.keycloak.models.AuthenticationLinkModel;
import org.keycloak.models.AuthenticationProviderModel;
import org.keycloak.models.ClientModel;
import org.keycloak.models.OAuthClientModel;
@@ -15,17 +14,13 @@ import org.keycloak.models.UserCredentialValueModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.UsernameLoginFailureModel;
-import org.keycloak.models.cache.entities.CachedApplicationRole;
import org.keycloak.models.cache.entities.CachedRealm;
-import org.keycloak.models.cache.entities.CachedRealmRole;
-import org.keycloak.models.cache.entities.CachedRole;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.models.utils.Pbkdf2PasswordEncoder;
import org.keycloak.models.utils.TimeBasedOTP;
import java.security.PrivateKey;
import java.security.PublicKey;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
@@ -39,13 +34,13 @@ import java.util.Set;
*/
public class RealmAdapter implements RealmModel {
protected CachedRealm cached;
- protected CacheKeycloakSession cacheSession;
+ protected CacheModelProvider cacheSession;
protected RealmModel updated;
protected KeycloakCache cache;
protected volatile transient PublicKey publicKey;
protected volatile transient PrivateKey privateKey;
- public RealmAdapter(CachedRealm cached, CacheKeycloakSession cacheSession) {
+ public RealmAdapter(CachedRealm cached, CacheModelProvider cacheSession) {
this.cached = cached;
this.cacheSession = cacheSession;
}
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RoleAdapter.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RoleAdapter.java
index 06bb610..bbf2766 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RoleAdapter.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/RoleAdapter.java
@@ -20,10 +20,10 @@ public class RoleAdapter implements RoleModel {
protected RoleModel updated;
protected CachedRole cached;
protected KeycloakCache cache;
- protected CacheKeycloakSession cacheSession;
+ protected CacheModelProvider cacheSession;
protected RealmModel realm;
- public RoleAdapter(CachedRole cached, KeycloakCache cache, CacheKeycloakSession session, RealmModel realm) {
+ public RoleAdapter(CachedRole cached, KeycloakCache cache, CacheModelProvider session, RealmModel realm) {
this.cached = cached;
this.cache = cache;
this.cacheSession = session;
diff --git a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/UserAdapter.java b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/UserAdapter.java
index a31f3e0..727244c 100755
--- a/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/UserAdapter.java
+++ b/model/invalidation-cache/model-adapters/src/main/java/org/keycloak/models/cache/UserAdapter.java
@@ -23,10 +23,10 @@ public class UserAdapter implements UserModel {
protected UserModel updated;
protected CachedUser cached;
protected KeycloakCache cache;
- protected CacheKeycloakSession cacheSession;
+ protected CacheModelProvider cacheSession;
protected RealmModel realm;
- public UserAdapter(CachedUser cached, KeycloakCache cache, CacheKeycloakSession session, RealmModel realm) {
+ public UserAdapter(CachedUser cached, KeycloakCache cache, CacheModelProvider session, RealmModel realm) {
this.cached = cached;
this.cache = cache;
this.cacheSession = session;
diff --git a/model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.models.cache.CacheModelProviderFactory b/model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.models.cache.CacheModelProviderFactory
new file mode 100755
index 0000000..343a85b
--- /dev/null
+++ b/model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.models.cache.CacheModelProviderFactory
@@ -0,0 +1,2 @@
+org.keycloak.models.cache.SimpleCacheModelProviderFactory
+org.keycloak.models.cache.NoCacheModelProviderFactory
\ No newline at end of file
diff --git a/model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.provider.Spi b/model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.provider.Spi
index 6460d62..eb9e116 100755
--- a/model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.provider.Spi
+++ b/model/invalidation-cache/model-adapters/src/main/resources/META-INF/services/org.keycloak.provider.Spi
@@ -1 +1 @@
-org.keycloak.models.cache.CacheKeycloakSessionSpi
\ No newline at end of file
+org.keycloak.models.cache.CacheModelProviderSpi
\ No newline at end of file
diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java b/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java
index ba4d136..2b12a1b 100755
--- a/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java
+++ b/model/jpa/src/main/java/org/keycloak/models/jpa/RoleAdapter.java
@@ -1,6 +1,5 @@
package org.keycloak.models.jpa;
-import org.keycloak.models.OAuthClientModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleContainerModel;
import org.keycloak.models.RoleModel;
diff --git a/model/jpa/src/main/resources/META-INF/services/org.keycloak.models.ModelProviderFactory b/model/jpa/src/main/resources/META-INF/services/org.keycloak.models.ModelProviderFactory
new file mode 100644
index 0000000..d981d8c
--- /dev/null
+++ b/model/jpa/src/main/resources/META-INF/services/org.keycloak.models.ModelProviderFactory
@@ -0,0 +1 @@
+org.keycloak.models.jpa.JpaModelProviderFactory
\ No newline at end of file
diff --git a/model/mongo/src/main/resources/META-INF/services/org.keycloak.models.ModelProviderFactory b/model/mongo/src/main/resources/META-INF/services/org.keycloak.models.ModelProviderFactory
new file mode 100644
index 0000000..429cc08
--- /dev/null
+++ b/model/mongo/src/main/resources/META-INF/services/org.keycloak.models.ModelProviderFactory
@@ -0,0 +1 @@
+org.keycloak.models.mongo.keycloak.adapters.MongoModelProviderFactory
\ No newline at end of file
diff --git a/model/tests/src/main/java/org/keycloak/model/test/LDAPTestUtils.java b/model/tests/src/main/java/org/keycloak/model/test/LDAPTestUtils.java
index 3025fd6..55f3d88 100644
--- a/model/tests/src/main/java/org/keycloak/model/test/LDAPTestUtils.java
+++ b/model/tests/src/main/java/org/keycloak/model/test/LDAPTestUtils.java
@@ -1,9 +1,9 @@
package org.keycloak.model.test;
-import org.keycloak.models.RealmModel;
import org.keycloak.authentication.picketlink.PicketlinkAuthenticationProvider;
+import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.RealmModel;
import org.keycloak.picketlink.IdentityManagerProvider;
-import org.keycloak.provider.ProviderSession;
import org.picketlink.idm.IdentityManager;
import org.picketlink.idm.credential.Password;
import org.picketlink.idm.model.basic.BasicModel;
@@ -14,10 +14,10 @@ import org.picketlink.idm.model.basic.User;
*/
public class LDAPTestUtils {
- public static void setLdapPassword(ProviderSession providerSession, RealmModel realm, String username, String password) {
+ public static void setLdapPassword(KeycloakSession session, RealmModel realm, String username, String password) {
// Update password directly in ldap. It's workaround, but LDIF import doesn't seem to work on windows for ApacheDS
try {
- IdentityManager identityManager = new PicketlinkAuthenticationProvider(providerSession.getProvider(IdentityManagerProvider.class)).getIdentityManager(realm);
+ IdentityManager identityManager = new PicketlinkAuthenticationProvider(session.getProvider(IdentityManagerProvider.class)).getIdentityManager(realm);
User user = BasicModel.getUser(identityManager, username);
identityManager.updateCredential(user, new Password(password.toCharArray()));
} catch (Exception e) {
diff --git a/model/tests/src/test/java/org/keycloak/model/test/AbstractModelTest.java b/model/tests/src/test/java/org/keycloak/model/test/AbstractModelTest.java
index 3d61794..b59b1ca 100755
--- a/model/tests/src/test/java/org/keycloak/model/test/AbstractModelTest.java
+++ b/model/tests/src/test/java/org/keycloak/model/test/AbstractModelTest.java
@@ -1,89 +1,81 @@
package org.keycloak.model.test;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Set;
-
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
+import org.keycloak.Config;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
-import org.keycloak.Config;
-import org.keycloak.models.cache.CacheKeycloakSession;
-import org.keycloak.models.cache.SimpleCache;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.services.managers.ApplianceBootstrap;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.resources.KeycloakApplication;
import org.keycloak.util.JsonSerialization;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Set;
+
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class AbstractModelTest {
- protected static ProviderSessionFactory providerSessionFactory;
+ protected static KeycloakSessionFactory sessionFactory;
- protected KeycloakSession identitySession;
+ protected KeycloakSession session;
protected RealmManager realmManager;
- protected ProviderSession providerSession;
@BeforeClass
public static void beforeClass() {
- providerSessionFactory = KeycloakApplication.createProviderSessionFactory();
+ sessionFactory = KeycloakApplication.createSessionFactory();
- ProviderSession providerSession = providerSessionFactory.createSession();
- KeycloakSession identitySession = providerSession.getProvider(CacheKeycloakSession.class, "simple");
+ KeycloakSession session = sessionFactory.create();
try {
- identitySession.getTransaction().begin();
- new ApplianceBootstrap().bootstrap(identitySession, "/auth");
- identitySession.getTransaction().commit();
+ session.getTransaction().begin();
+ new ApplianceBootstrap().bootstrap(session, "/auth");
+ session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
@AfterClass
public static void afterClass() {
- providerSessionFactory.close();
+ sessionFactory.close();
}
@Before
public void before() throws Exception {
- providerSession = providerSessionFactory.createSession();
-
- identitySession = providerSession.getProvider(CacheKeycloakSession.class, "simple");
- identitySession.getTransaction().begin();
- realmManager = new RealmManager(identitySession);
+ session = sessionFactory.create();
+ session.getTransaction().begin();
+ realmManager = new RealmManager(session);
}
@After
public void after() throws Exception {
- identitySession.getTransaction().commit();
- providerSession.close();
+ session.getTransaction().commit();
+ session.close();
- providerSession = providerSessionFactory.createSession();
- identitySession = providerSession.getProvider(CacheKeycloakSession.class, "simple");
+ session = sessionFactory.create();
try {
- identitySession.getTransaction().begin();
+ session.getTransaction().begin();
- RealmManager rm = new RealmManager(identitySession);
- for (RealmModel realm : identitySession.getRealms()) {
+ RealmManager rm = new RealmManager(session);
+ for (RealmModel realm : session.getRealms()) {
if (!realm.getName().equals(Config.getAdminRealm())) {
rm.removeRealm(realm);
}
}
- identitySession.getTransaction().commit();
+ session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
@@ -94,20 +86,19 @@ public class AbstractModelTest {
protected void commit(boolean rollback) {
if (rollback) {
- identitySession.getTransaction().rollback();
+ session.getTransaction().rollback();
} else {
- identitySession.getTransaction().commit();
+ session.getTransaction().commit();
}
resetSession();
}
protected void resetSession() {
- providerSession.close();
+ session.close();
- providerSession = providerSessionFactory.createSession();
- identitySession = providerSession.getProvider(CacheKeycloakSession.class, "simple");
- identitySession.getTransaction().begin();
- realmManager = new RealmManager(identitySession);
+ session = sessionFactory.create();
+ session.getTransaction().begin();
+ realmManager = new RealmManager(session);
}
public static RealmRepresentation loadJson(String path) throws IOException {
diff --git a/model/tests/src/test/java/org/keycloak/model/test/AdapterTest.java b/model/tests/src/test/java/org/keycloak/model/test/AdapterTest.java
index f3ce4eb..e3f29ff 100755
--- a/model/tests/src/test/java/org/keycloak/model/test/AdapterTest.java
+++ b/model/tests/src/test/java/org/keycloak/model/test/AdapterTest.java
@@ -92,7 +92,7 @@ public class AdapterTest extends AbstractModelTest {
realmModel.getId();
commit();
- List<RealmModel> realms = identitySession.getRealms();
+ List<RealmModel> realms = session.getRealms();
Assert.assertEquals(realms.size(), 2);
}
@@ -170,7 +170,7 @@ public class AdapterTest extends AbstractModelTest {
commit();
- realmModel = identitySession.getRealm("JUGGLER");
+ realmModel = session.getRealm("JUGGLER");
Assert.assertTrue(realmModel.removeUser("bburke"));
Assert.assertFalse(realmModel.removeUser("bburke"));
assertNull(realmModel.getUser("bburke"));
@@ -226,7 +226,7 @@ public class AdapterTest extends AbstractModelTest {
app.addScopeMapping(realmRole);
commit();
- realmModel = identitySession.getRealm("JUGGLER");
+ realmModel = session.getRealm("JUGGLER");
Assert.assertTrue(realmManager.removeRealm(realmModel));
Assert.assertFalse(realmManager.removeRealm(realmModel));
@@ -252,7 +252,7 @@ public class AdapterTest extends AbstractModelTest {
app.addScopeMapping(realmRole);
commit();
- realmModel = identitySession.getRealm("JUGGLER");
+ realmModel = session.getRealm("JUGGLER");
app = realmModel.getApplicationByName("test-app");
Assert.assertTrue(realmModel.removeRoleById(realmRole.getId()));
@@ -504,7 +504,7 @@ public class AdapterTest extends AbstractModelTest {
commit();
- realmModel = identitySession.getRealmByName("JUGGLER");
+ realmModel = session.getRealmByName("JUGGLER");
app1 = realmModel.getApplicationByName("app1");
app2 = realmModel.getApplicationByName("app2");
client = realmModel.getOAuthClient("client");
diff --git a/model/tests/src/test/java/org/keycloak/model/test/AuthenticationManagerTest.java b/model/tests/src/test/java/org/keycloak/model/test/AuthenticationManagerTest.java
index 24e894f..0e7511e 100755
--- a/model/tests/src/test/java/org/keycloak/model/test/AuthenticationManagerTest.java
+++ b/model/tests/src/test/java/org/keycloak/model/test/AuthenticationManagerTest.java
@@ -164,9 +164,9 @@ public class AuthenticationManagerTest extends AbstractModelTest {
realm.setAccessTokenLifespan(1000);
realm.addRequiredCredential(CredentialRepresentation.PASSWORD);
realm.setAuthenticationProviders(Arrays.asList(AuthenticationProviderModel.DEFAULT_PROVIDER));
- protector = new BruteForceProtector(providerSessionFactory);
+ protector = new BruteForceProtector(sessionFactory);
protector.start();
- am = new AuthenticationManager(providerSession, protector);
+ am = new AuthenticationManager(session, protector);
user = realm.addUser("test");
user.setEnabled(true);
diff --git a/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersExternalModelTest.java b/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersExternalModelTest.java
index 17674c4..5b04316 100755
--- a/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersExternalModelTest.java
+++ b/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersExternalModelTest.java
@@ -65,7 +65,7 @@ public class AuthProvidersExternalModelTest extends AbstractModelTest {
credential.setValue("password");
john.updateCredential(credential);
- am = new AuthenticationManager(providerSession);
+ am = new AuthenticationManager(session);
}
@@ -85,7 +85,7 @@ public class AuthProvidersExternalModelTest extends AbstractModelTest {
try {
// this is needed for externalModel provider
- ResteasyProviderFactory.pushContext(KeycloakSession.class, identitySession);
+ ResteasyProviderFactory.pushContext(KeycloakSession.class, session);
// Authenticate john in realm2 and verify that now he exists here.
Assert.assertEquals(AuthenticationManager.AuthenticationStatus.SUCCESS, am.authenticateForm(null, realm2, formData));
@@ -119,10 +119,10 @@ public class AuthProvidersExternalModelTest extends AbstractModelTest {
try {
// this is needed for externalModel provider
- ResteasyProviderFactory.pushContext(KeycloakSession.class, identitySession);
+ ResteasyProviderFactory.pushContext(KeycloakSession.class, session);
// Change credential via realm2 and validate that they are changed also in realm1
- AuthenticationProviderManager authProviderManager = AuthenticationProviderManager.getManager(realm2, providerSession);
+ AuthenticationProviderManager authProviderManager = AuthenticationProviderManager.getManager(realm2, session);
try {
Assert.assertTrue(authProviderManager.updatePassword(john, "password-updated"));
} catch (AuthenticationProviderException ape) {
diff --git a/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersLDAPTest.java b/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersLDAPTest.java
index a59a12a..a39c033 100755
--- a/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersLDAPTest.java
+++ b/model/tests/src/test/java/org/keycloak/model/test/AuthProvidersLDAPTest.java
@@ -68,7 +68,7 @@ public class AuthProvidersLDAPTest extends AbstractModelTest {
realm.addRequiredCredential(CredentialRepresentation.PASSWORD);
this.embeddedServer.setupLdapInRealm(realm);
- am = new AuthenticationManager(providerSession);
+ am = new AuthenticationManager(session);
}
@Test
@@ -76,7 +76,7 @@ public class AuthProvidersLDAPTest extends AbstractModelTest {
MultivaluedMap<String, String> formData = AuthProvidersExternalModelTest.createFormData("johnkeycloak", "password");
// Set password of user in LDAP
- LDAPTestUtils.setLdapPassword(providerSession, realm, "johnkeycloak", "password");
+ LDAPTestUtils.setLdapPassword(session, realm, "johnkeycloak", "password");
// Verify that user doesn't exists in realm2 and can't authenticate here
Assert.assertEquals(AuthenticationManager.AuthenticationStatus.INVALID_USER, am.authenticateForm(null, realm, formData));
@@ -140,14 +140,14 @@ public class AuthProvidersLDAPTest extends AbstractModelTest {
// Add ldap
setupAuthenticationProviders();
- LDAPTestUtils.setLdapPassword(providerSession, realm, "johnkeycloak", "password");
+ LDAPTestUtils.setLdapPassword(session, realm, "johnkeycloak", "password");
// First authenticate successfully to sync john into realm
MultivaluedMap<String, String> formData = AuthProvidersExternalModelTest.createFormData("johnkeycloak", "password");
Assert.assertEquals(AuthenticationManager.AuthenticationStatus.SUCCESS, am.authenticateForm(null, realm, formData));
// Change credential and validate that user can authenticate
- AuthenticationProviderManager authProviderManager = AuthenticationProviderManager.getManager(realm, providerSession);
+ AuthenticationProviderManager authProviderManager = AuthenticationProviderManager.getManager(realm, session);
UserModel john = realm.getUser("johnkeycloak");
try {
diff --git a/model/tests/src/test/java/org/keycloak/model/test/MultipleRealmsTest.java b/model/tests/src/test/java/org/keycloak/model/test/MultipleRealmsTest.java
index 7f9f6b3..4ea8ab2 100755
--- a/model/tests/src/test/java/org/keycloak/model/test/MultipleRealmsTest.java
+++ b/model/tests/src/test/java/org/keycloak/model/test/MultipleRealmsTest.java
@@ -49,8 +49,8 @@ public class MultipleRealmsTest extends AbstractModelTest {
Assert.assertEquals(2, realm1.searchForUser("user").size());
commit();
- realm1 = identitySession.getRealm("id1");
- realm2 = identitySession.getRealm("id2");
+ realm1 = session.getRealm("id1");
+ realm2 = session.getRealm("id2");
realm1.removeUser("user1");
realm1.removeUser("user2");
@@ -60,10 +60,10 @@ public class MultipleRealmsTest extends AbstractModelTest {
@Test
public void testGetById() {
- Assert.assertEquals(realm1, identitySession.getRealm("id1"));
- Assert.assertEquals(realm1, identitySession.getRealmByName("realm1"));
- Assert.assertEquals(realm2, identitySession.getRealm("id2"));
- Assert.assertEquals(realm2, identitySession.getRealmByName("realm2"));
+ Assert.assertEquals(realm1, session.getRealm("id1"));
+ Assert.assertEquals(realm1, session.getRealmByName("realm1"));
+ Assert.assertEquals(realm2, session.getRealm("id2"));
+ Assert.assertEquals(realm2, session.getRealmByName("realm2"));
ApplicationModel r1app1 = realm1.getApplicationByName("app1");
ApplicationModel r1app2 = realm1.getApplicationByName("app2");
diff --git a/picketlink/keycloak-picketlink-realm/src/main/java/org/keycloak/picketlink/realm/RealmIdentityManagerProviderFactory.java b/picketlink/keycloak-picketlink-realm/src/main/java/org/keycloak/picketlink/realm/RealmIdentityManagerProviderFactory.java
index 236cff6..616e96d 100644
--- a/picketlink/keycloak-picketlink-realm/src/main/java/org/keycloak/picketlink/realm/RealmIdentityManagerProviderFactory.java
+++ b/picketlink/keycloak-picketlink-realm/src/main/java/org/keycloak/picketlink/realm/RealmIdentityManagerProviderFactory.java
@@ -1,9 +1,9 @@
package org.keycloak.picketlink.realm;
import org.keycloak.Config;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.picketlink.IdentityManagerProvider;
import org.keycloak.picketlink.IdentityManagerProviderFactory;
-import org.keycloak.provider.ProviderSession;
import org.picketlink.idm.PartitionManager;
/**
@@ -16,7 +16,7 @@ public class RealmIdentityManagerProviderFactory implements IdentityManagerProvi
private PartitionManagerRegistry partitionManagerRegistry;
@Override
- public IdentityManagerProvider create(ProviderSession providerSession) {
+ public IdentityManagerProvider create(KeycloakSession session) {
return new RealmIdentityManagerProvider(partitionManagerRegistry);
}
diff --git a/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProviderFactory.java b/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProviderFactory.java
index 3804315..eb153e1 100755
--- a/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProviderFactory.java
+++ b/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProviderFactory.java
@@ -3,7 +3,7 @@ package org.aerogear.ups.security;
import org.keycloak.Config;
import org.keycloak.freemarker.ThemeProvider;
import org.keycloak.freemarker.ThemeProviderFactory;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
@@ -13,7 +13,7 @@ public class AerogearThemeProviderFactory implements ThemeProviderFactory {
protected AerogearThemeProvider theme;
@Override
- public ThemeProvider create(ProviderSession providerSession) {
+ public ThemeProvider create(KeycloakSession session) {
return theme;
}
diff --git a/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/UpsSecurityApplication.java b/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/UpsSecurityApplication.java
index b7b0d56..9f322e1 100755
--- a/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/UpsSecurityApplication.java
+++ b/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/UpsSecurityApplication.java
@@ -4,7 +4,6 @@ import org.jboss.resteasy.core.Dispatcher;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.resources.KeycloakApplication;
@@ -23,8 +22,8 @@ public class UpsSecurityApplication extends KeycloakApplication {
@Override
protected void setupDefaultRealm(String contextPath) {
super.setupDefaultRealm(contextPath);
- ProviderSession providerSession = providerSessionFactory.createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+
+ KeycloakSession session = sessionFactory.create();
session.getTransaction().begin();
// disable master realm by deleting the admin user.
@@ -35,7 +34,7 @@ public class UpsSecurityApplication extends KeycloakApplication {
if (admin != null) master.removeUser(admin.getLoginName());
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
diff --git a/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/classes/META-INF/keycloak-server.json b/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/classes/META-INF/keycloak-server.json
index e0dd897..752704c 100755
--- a/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/classes/META-INF/keycloak-server.json
+++ b/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/classes/META-INF/keycloak-server.json
@@ -8,7 +8,7 @@
},
"modelCache": {
- "provider": "${keycloak.model.cache.provider:none}"
+ "provider": "${keycloak.model.cache.provider:}"
},
"timer": {
diff --git a/server/src/main/resources/META-INF/keycloak-server.json b/server/src/main/resources/META-INF/keycloak-server.json
index fb726ca..7e3f246 100755
--- a/server/src/main/resources/META-INF/keycloak-server.json
+++ b/server/src/main/resources/META-INF/keycloak-server.json
@@ -15,7 +15,7 @@
},
"modelCache": {
- "provider": "${keycloak.model.cache.provider:none}"
+ "provider": "${keycloak.model.cache.provider:}"
},
"timer": {
@@ -31,7 +31,7 @@
}
},
- "login-forms": {
+ "login": {
"provider": "freemarker"
},
diff --git a/services/src/main/java/org/keycloak/services/DefaultKeycloakSession.java b/services/src/main/java/org/keycloak/services/DefaultKeycloakSession.java
new file mode 100755
index 0000000..dce4019
--- /dev/null
+++ b/services/src/main/java/org/keycloak/services/DefaultKeycloakSession.java
@@ -0,0 +1,249 @@
+package org.keycloak.services;
+
+import org.keycloak.models.ApplicationModel;
+import org.keycloak.models.ClientModel;
+import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakTransaction;
+import org.keycloak.models.ModelProvider;
+import org.keycloak.models.OAuthClientModel;
+import org.keycloak.models.RealmModel;
+import org.keycloak.models.RoleModel;
+import org.keycloak.models.SocialLinkModel;
+import org.keycloak.models.UserModel;
+import org.keycloak.models.UserSessionModel;
+import org.keycloak.models.UsernameLoginFailureModel;
+import org.keycloak.models.cache.CacheModelProvider;
+import org.keycloak.provider.Provider;
+import org.keycloak.provider.ProviderFactory;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+public class DefaultKeycloakSession implements KeycloakSession {
+
+ private DefaultKeycloakSessionFactory factory;
+ private Map<Integer, Provider> providers = new HashMap<Integer, Provider>();
+ private final ModelProvider model;
+
+ public DefaultKeycloakSession(DefaultKeycloakSessionFactory factory) {
+ this.factory = factory;
+
+ if (factory.getDefaultProvider(CacheModelProvider.class) != null) {
+ model = getProvider(CacheModelProvider.class);
+ } else {
+ model = getProvider(ModelProvider.class);
+ }
+ }
+
+ @Override
+ public KeycloakTransaction getTransaction() {
+ return model.getTransaction();
+ }
+
+ public <T extends Provider> T getProvider(Class<T> clazz) {
+ Integer hash = clazz.hashCode();
+ T provider = (T) providers.get(hash);
+ if (provider == null) {
+ ProviderFactory<T> providerFactory = factory.getProviderFactory(clazz);
+ if (providerFactory != null) {
+ provider = providerFactory.create(this);
+ providers.put(hash, provider);
+ }
+ }
+ return provider;
+ }
+
+ public <T extends Provider> T getProvider(Class<T> clazz, String id) {
+ Integer hash = clazz.hashCode() + id.hashCode();
+ T provider = (T) providers.get(hash);
+ if (provider == null) {
+ ProviderFactory<T> providerFactory = factory.getProviderFactory(clazz, id);
+ if (providerFactory != null) {
+ provider = providerFactory.create(this);
+ providers.put(hash, provider);
+ }
+ }
+ return provider;
+ }
+
+ public <T extends Provider> Set<String> listProviderIds(Class<T> clazz) {
+ return factory.getAllProviderIds(clazz);
+ }
+
+ @Override
+ public <T extends Provider> Set<T> getAllProviders(Class<T> clazz) {
+ Set<T> providers = new HashSet<T>();
+ for (String id : listProviderIds(clazz)) {
+ providers.add(getProvider(clazz, id));
+ }
+ return providers;
+ }
+
+ @Override
+ public RealmModel createRealm(String name) {
+ return model.createRealm(name);
+ }
+
+ @Override
+ public RealmModel createRealm(String id, String name) {
+ return model.createRealm(id, name);
+ }
+
+ @Override
+ public RealmModel getRealm(String id) {
+ return model.getRealm(id);
+ }
+
+ @Override
+ public RealmModel getRealmByName(String name) {
+ return model.getRealmByName(name);
+ }
+
+ @Override
+ public UserModel getUserById(String id, RealmModel realm) {
+ return model.getUserById(id, realm);
+ }
+
+ @Override
+ public UserModel getUserByUsername(String username, RealmModel realm) {
+ return model.getUserByUsername(username, realm);
+ }
+
+ @Override
+ public UserModel getUserByEmail(String email, RealmModel realm) {
+ return model.getUserByEmail(email, realm);
+ }
+
+ @Override
+ public UserModel getUserBySocialLink(SocialLinkModel socialLink, RealmModel realm) {
+ return model.getUserBySocialLink(socialLink, realm);
+ }
+
+ @Override
+ public List<UserModel> getUsers(RealmModel realm) {
+ return model.getUsers(realm);
+ }
+
+ @Override
+ public List<UserModel> searchForUser(String search, RealmModel realm) {
+ return model.searchForUser(search, realm);
+ }
+
+ @Override
+ public List<UserModel> searchForUserByAttributes(Map<String, String> attributes, RealmModel realm) {
+ return model.searchForUserByAttributes(attributes, realm);
+ }
+
+ @Override
+ public Set<SocialLinkModel> getSocialLinks(UserModel user, RealmModel realm) {
+ return model.getSocialLinks(user, realm);
+ }
+
+ @Override
+ public SocialLinkModel getSocialLink(UserModel user, String socialProvider, RealmModel realm) {
+ return model.getSocialLink(user, socialProvider, realm);
+ }
+
+ @Override
+ public RoleModel getRoleById(String id, RealmModel realm) {
+ return model.getRoleById(id, realm);
+ }
+
+ @Override
+ public ApplicationModel getApplicationById(String id, RealmModel realm) {
+ return model.getApplicationById(id, realm);
+ }
+
+ @Override
+ public OAuthClientModel getOAuthClientById(String id, RealmModel realm) {
+ return model.getOAuthClientById(id, realm);
+ }
+
+ @Override
+ public List<RealmModel> getRealms() {
+ return model.getRealms();
+ }
+
+ @Override
+ public boolean removeRealm(String id) {
+ return model.removeRealm(id);
+ }
+
+ @Override
+ public UsernameLoginFailureModel getUserLoginFailure(String username, RealmModel realm) {
+ return model.getUserLoginFailure(username, realm);
+ }
+
+ @Override
+ public UsernameLoginFailureModel addUserLoginFailure(String username, RealmModel realm) {
+ return model.addUserLoginFailure(username, realm);
+ }
+
+ @Override
+ public List<UsernameLoginFailureModel> getAllUserLoginFailures(RealmModel realm) {
+ return model.getAllUserLoginFailures(realm);
+ }
+
+ @Override
+ public UserSessionModel createUserSession(RealmModel realm, UserModel user, String ipAddress) {
+ return model.createUserSession(realm, user, ipAddress);
+ }
+
+ @Override
+ public UserSessionModel getUserSession(String id, RealmModel realm) {
+ return model.getUserSession(id, realm);
+ }
+
+ @Override
+ public List<UserSessionModel> getUserSessions(UserModel user, RealmModel realm) {
+ return model.getUserSessions(user, realm);
+ }
+
+ @Override
+ public Set<UserSessionModel> getUserSessions(RealmModel realm, ClientModel client) {
+ return model.getUserSessions(realm, client);
+ }
+
+ @Override
+ public int getActiveUserSessions(RealmModel realm, ClientModel client) {
+ return model.getActiveUserSessions(realm, client);
+ }
+
+ @Override
+ public void removeUserSession(UserSessionModel session) {
+ model.removeUserSession(session);
+ }
+
+ @Override
+ public void removeUserSessions(RealmModel realm, UserModel user) {
+ model.removeUserSessions(realm, user);
+ }
+
+ @Override
+ public void removeExpiredUserSessions(RealmModel realm) {
+ model.removeExpiredUserSessions(realm);
+ }
+
+ @Override
+ public void removeUserSessions(RealmModel realm) {
+ model.removeUserSessions(realm);
+ }
+
+ @Override
+ public void removeAllData() {
+ model.removeAllData();
+ }
+
+ public void close() {
+ for (Provider p : providers.values()) {
+ p.close();
+ }
+ }
+
+}
diff --git a/services/src/main/java/org/keycloak/services/filters/KeycloakSessionServletFilter.java b/services/src/main/java/org/keycloak/services/filters/KeycloakSessionServletFilter.java
index eba6113..4115567 100755
--- a/services/src/main/java/org/keycloak/services/filters/KeycloakSessionServletFilter.java
+++ b/services/src/main/java/org/keycloak/services/filters/KeycloakSessionServletFilter.java
@@ -2,10 +2,8 @@ package org.keycloak.services.filters;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.KeycloakTransaction;
-import org.keycloak.models.cache.CacheKeycloakSession;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -28,16 +26,16 @@ public class KeycloakSessionServletFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- ProviderSessionFactory providerSessionFactory = (ProviderSessionFactory) servletRequest.getServletContext().getAttribute(ProviderSessionFactory.class.getName());
- ProviderSession providerSession = providerSessionFactory.createSession();
HttpServletRequest request = (HttpServletRequest)servletRequest;
- ResteasyProviderFactory.pushContext(ProviderSession.class, providerSession);
- KeycloakSession session = providerSession.getProvider(CacheKeycloakSession.class);
+ KeycloakSessionFactory sessionFactory = (KeycloakSessionFactory) servletRequest.getServletContext().getAttribute(KeycloakSessionFactory.class.getName());
+ KeycloakSession session = sessionFactory.create();
ResteasyProviderFactory.pushContext(KeycloakSession.class, session);
+
KeycloakTransaction tx = session.getTransaction();
ResteasyProviderFactory.pushContext(KeycloakTransaction.class, tx);
tx.begin();
+
try {
filterChain.doFilter(servletRequest, servletResponse);
if (tx.isActive()) {
@@ -55,7 +53,7 @@ public class KeycloakSessionServletFilter implements Filter {
if (tx.isActive()) tx.rollback();
throw new RuntimeException("request path: " + request.getRequestURI(), ex);
} finally {
- providerSession.close();
+ session.close();
ResteasyProviderFactory.clearContextData();
}
diff --git a/services/src/main/java/org/keycloak/services/listeners/KeycloakSessionDestroyListener.java b/services/src/main/java/org/keycloak/services/listeners/KeycloakSessionDestroyListener.java
index 0c74c9d..e87a0a8 100755
--- a/services/src/main/java/org/keycloak/services/listeners/KeycloakSessionDestroyListener.java
+++ b/services/src/main/java/org/keycloak/services/listeners/KeycloakSessionDestroyListener.java
@@ -1,7 +1,6 @@
package org.keycloak.services.listeners;
import org.keycloak.models.KeycloakSessionFactory;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.services.managers.BruteForceProtector;
import javax.servlet.ServletContextEvent;
@@ -22,15 +21,10 @@ public class KeycloakSessionDestroyListener implements ServletContextListener {
if (protector != null) {
protector.shutdown();
}
- ProviderSessionFactory providerSessionFactory = (ProviderSessionFactory) sce.getServletContext().getAttribute(ProviderSessionFactory.class.getName());
- KeycloakSessionFactory kcSessionFactory = (KeycloakSessionFactory) sce.getServletContext().getAttribute(KeycloakSessionFactory.class.getName());
- if (providerSessionFactory != null) {
- providerSessionFactory.close();
+ KeycloakSessionFactory sessionFactory = (KeycloakSessionFactory) sce.getServletContext().getAttribute(KeycloakSessionFactory.class.getName());
+ if (sessionFactory != null) {
+ sessionFactory.close();
}
- if (kcSessionFactory != null) {
- kcSessionFactory.close();
- }
-
}
}
diff --git a/services/src/main/java/org/keycloak/services/managers/AppAuthManager.java b/services/src/main/java/org/keycloak/services/managers/AppAuthManager.java
index 64adc30..f73d30d 100755
--- a/services/src/main/java/org/keycloak/services/managers/AppAuthManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/AppAuthManager.java
@@ -2,8 +2,8 @@ package org.keycloak.services.managers;
import org.jboss.logging.Logger;
import org.jboss.resteasy.spi.UnauthorizedException;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
-import org.keycloak.provider.ProviderSession;
import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.HttpHeaders;
@@ -16,8 +16,8 @@ import javax.ws.rs.core.UriInfo;
public class AppAuthManager extends AuthenticationManager {
protected static Logger logger = Logger.getLogger(AppAuthManager.class);
- public AppAuthManager(ProviderSession providerSession) {
- super(providerSession);
+ public AppAuthManager(KeycloakSession session) {
+ super(session);
}
@Override
diff --git a/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java b/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java
index 43b271f..8e4440c 100755
--- a/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java
+++ b/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java
@@ -1,22 +1,20 @@
package org.keycloak.services.managers;
-import java.util.Arrays;
-
import org.jboss.logging.Logger;
+import org.keycloak.Config;
import org.keycloak.models.AdminRoles;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.AuthenticationProviderModel;
-import org.keycloak.Config;
import org.keycloak.models.Constants;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.representations.idm.CredentialRepresentation;
+import java.util.Arrays;
import java.util.Collections;
/**
@@ -27,16 +25,15 @@ public class ApplianceBootstrap {
private static final Logger logger = Logger.getLogger(ApplianceBootstrap.class);
- public void bootstrap(ProviderSessionFactory factory, String contextPath) {
- ProviderSession providerSession = factory.createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ public void bootstrap(KeycloakSessionFactory sessionFactory, String contextPath) {
+ KeycloakSession session = sessionFactory.create();
session.getTransaction().begin();
try {
bootstrap(session, contextPath);
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
diff --git a/services/src/main/java/org/keycloak/services/managers/AuditManager.java b/services/src/main/java/org/keycloak/services/managers/AuditManager.java
index 25ae718..bc63c67 100644
--- a/services/src/main/java/org/keycloak/services/managers/AuditManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/AuditManager.java
@@ -4,9 +4,9 @@ import org.jboss.logging.Logger;
import org.keycloak.audit.Audit;
import org.keycloak.audit.AuditListener;
import org.keycloak.audit.AuditProvider;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.services.ClientConnection;
-import org.keycloak.provider.ProviderSession;
import java.util.LinkedList;
import java.util.List;
@@ -19,12 +19,12 @@ public class AuditManager {
private Logger log = Logger.getLogger(AuditManager.class);
private RealmModel realm;
- private ProviderSession providers;
+ private KeycloakSession session;
private ClientConnection clientConnection;
- public AuditManager(RealmModel realm, ProviderSession providers, ClientConnection clientConnection) {
+ public AuditManager(RealmModel realm, KeycloakSession session, ClientConnection clientConnection) {
this.realm = realm;
- this.providers = providers;
+ this.session = session;
this.clientConnection = clientConnection;
}
@@ -32,7 +32,7 @@ public class AuditManager {
List<AuditListener> listeners = new LinkedList<AuditListener>();
if (realm.isAuditEnabled()) {
- AuditProvider auditProvider = providers.getProvider(AuditProvider.class);
+ AuditProvider auditProvider = session.getProvider(AuditProvider.class);
if (auditProvider != null) {
listeners.add(auditProvider);
} else {
@@ -42,7 +42,7 @@ public class AuditManager {
if (realm.getAuditListeners() != null) {
for (String id : realm.getAuditListeners()) {
- AuditListener listener = providers.getProvider(AuditListener.class, id);
+ AuditListener listener = session.getProvider(AuditListener.class, id);
if (listener != null) {
listeners.add(listener);
} else {
diff --git a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
index dd4197e..3f40e51 100755
--- a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
@@ -1,27 +1,23 @@
package org.keycloak.services.managers;
import org.jboss.logging.Logger;
-import org.jboss.resteasy.spi.HttpResponse;
-import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.keycloak.RSATokenVerifier;
import org.keycloak.VerificationException;
-import org.keycloak.audit.Audit;
+import org.keycloak.authentication.AuthProviderStatus;
+import org.keycloak.authentication.AuthUser;
+import org.keycloak.authentication.AuthenticationProviderManager;
import org.keycloak.jose.jws.JWSBuilder;
import org.keycloak.models.AuthenticationLinkModel;
-import org.keycloak.models.ClientModel;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RequiredCredentialModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.utils.KeycloakModelUtils;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.ClientConnection;
import org.keycloak.services.resources.RealmsResource;
-import org.keycloak.authentication.AuthProviderStatus;
-import org.keycloak.authentication.AuthUser;
-import org.keycloak.authentication.AuthenticationProviderManager;
import org.keycloak.services.util.CookieHelper;
import org.keycloak.util.Time;
@@ -29,7 +25,6 @@ import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.NewCookie;
-import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import java.net.URI;
import java.util.HashSet;
@@ -50,15 +45,15 @@ public class AuthenticationManager {
public static final String KEYCLOAK_SESSION_COOKIE = "KEYCLOAK_SESSION";
public static final String KEYCLOAK_REMEMBER_ME = "KEYCLOAK_REMEMBER_ME";
- protected ProviderSession providerSession;
+ protected KeycloakSession session;
protected BruteForceProtector protector;
- public AuthenticationManager(ProviderSession providerSession) {
- this.providerSession = providerSession;
+ public AuthenticationManager(KeycloakSession session) {
+ this.session = session;
}
- public AuthenticationManager(ProviderSession providerSession, BruteForceProtector protector) {
- this.providerSession = providerSession;
+ public AuthenticationManager(KeycloakSession session, BruteForceProtector protector) {
+ this.session = session;
this.protector = protector;
}
@@ -267,7 +262,7 @@ public class AuthenticationManager {
protected AuthenticationStatus authenticateInternal(RealmModel realm, MultivaluedMap<String, String> formData, String username) {
UserModel user = KeycloakModelUtils.findUserByNameOrEmail(realm, username);
if (user == null) {
- AuthUser authUser = AuthenticationProviderManager.getManager(realm, providerSession).getUser(username);
+ AuthUser authUser = AuthenticationProviderManager.getManager(realm, session).getUser(username);
if (authUser != null) {
// Create new user and link him with authentication provider
user = realm.addUser(authUser.getUsername());
@@ -314,7 +309,7 @@ public class AuthenticationManager {
} else {
logger.debug("validating password for user: " + username);
- AuthProviderStatus authStatus = AuthenticationProviderManager.getManager(realm, providerSession).validatePassword(user, password);
+ AuthProviderStatus authStatus = AuthenticationProviderManager.getManager(realm, session).validatePassword(user, password);
if (authStatus == AuthProviderStatus.INVALID_CREDENTIALS) {
logger.debug("invalid password for user: " + username);
return AuthenticationStatus.INVALID_CREDENTIALS;
diff --git a/services/src/main/java/org/keycloak/services/managers/BruteForceProtector.java b/services/src/main/java/org/keycloak/services/managers/BruteForceProtector.java
index 80dc511..f44b752 100755
--- a/services/src/main/java/org/keycloak/services/managers/BruteForceProtector.java
+++ b/services/src/main/java/org/keycloak/services/managers/BruteForceProtector.java
@@ -6,8 +6,6 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UsernameLoginFailureModel;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.services.ClientConnection;
import java.util.ArrayList;
@@ -27,7 +25,7 @@ public class BruteForceProtector implements Runnable {
protected volatile boolean run = true;
protected int maxDeltaTimeSeconds = 60 * 60 * 12; // 12 hours
- protected ProviderSessionFactory factory;
+ protected KeycloakSessionFactory factory;
protected CountDownLatch shutdownLatch = new CountDownLatch(1);
protected volatile long failures;
@@ -75,7 +73,7 @@ public class BruteForceProtector implements Runnable {
}
}
- public BruteForceProtector(ProviderSessionFactory factory) {
+ public BruteForceProtector(KeycloakSessionFactory factory) {
this.factory = factory;
}
@@ -163,8 +161,7 @@ public class BruteForceProtector implements Runnable {
events.add(take);
queue.drainTo(events, TRANSACTION_SIZE);
Collections.sort(events); // we sort to avoid deadlock due to ordered updates. Maybe I'm overthinking this.
- ProviderSession providerSession = factory.createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = factory.create();
session.getTransaction().begin();
try {
for (LoginEvent event : events) {
@@ -185,7 +182,7 @@ public class BruteForceProtector implements Runnable {
}
}
events.clear();
- providerSession.close();
+ session.close();
}
} catch (Exception e) {
logger.error("Failed processing event", e);
diff --git a/services/src/main/java/org/keycloak/services/managers/RealmManager.java b/services/src/main/java/org/keycloak/services/managers/RealmManager.java
index 248e0ae..6fae8e7 100755
--- a/services/src/main/java/org/keycloak/services/managers/RealmManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/RealmManager.java
@@ -53,7 +53,7 @@ import java.util.Map;
public class RealmManager {
protected static final Logger logger = Logger.getLogger(RealmManager.class);
- protected KeycloakSession identitySession;
+ protected KeycloakSession session;
protected String contextPath = "";
public String getContextPath() {
@@ -64,8 +64,8 @@ public class RealmManager {
this.contextPath = contextPath;
}
- public RealmManager(KeycloakSession identitySession) {
- this.identitySession = identitySession;
+ public RealmManager(KeycloakSession session) {
+ this.session = session;
}
public RealmModel getKeycloakAdminstrationRealm() {
@@ -73,11 +73,11 @@ public class RealmManager {
}
public RealmModel getRealm(String id) {
- return identitySession.getRealm(id);
+ return session.getRealm(id);
}
public RealmModel getRealmByName(String name) {
- return identitySession.getRealmByName(name);
+ return session.getRealmByName(name);
}
public RealmModel createRealm(String name) {
@@ -86,7 +86,7 @@ public class RealmManager {
public RealmModel createRealm(String id, String name) {
if (id == null) id = KeycloakModelUtils.generateId();
- RealmModel realm = identitySession.createRealm(id, name);
+ RealmModel realm = session.createRealm(id, name);
realm.setName(name);
// setup defaults
@@ -144,7 +144,7 @@ public class RealmManager {
}
public boolean removeRealm(RealmModel realm) {
- boolean removed = identitySession.removeRealm(realm.getId());
+ boolean removed = session.removeRealm(realm.getId());
if (removed) {
getKeycloakAdminstrationRealm().removeApplication(realm.getMasterAdminApp().getId());
}
@@ -245,11 +245,11 @@ public class RealmManager {
RoleModel createRealmRole = realm.addRole(AdminRoles.CREATE_REALM);
adminRole.addCompositeRole(createRealmRole);
} else {
- adminRealm = identitySession.getRealmByName(Config.getAdminRealm());
+ adminRealm = session.getRealmByName(Config.getAdminRealm());
adminRole = adminRealm.getRole(AdminRoles.ADMIN);
}
- ApplicationManager applicationManager = new ApplicationManager(new RealmManager(identitySession));
+ ApplicationManager applicationManager = new ApplicationManager(new RealmManager(session));
ApplicationModel realmAdminApp = applicationManager.createApplication(adminRealm, getMasterRealmAdminApplicationName(realm));
realmAdminApp.setBearerOnly(true);
@@ -264,7 +264,7 @@ public class RealmManager {
private void setupRealmAdminManagement(RealmModel realm) {
if (realm.getName().equals(Config.getAdminRealm())) { return; } // don't need to do this for master realm
- ApplicationManager applicationManager = new ApplicationManager(new RealmManager(identitySession));
+ ApplicationManager applicationManager = new ApplicationManager(new RealmManager(session));
String realmAdminApplicationName = getRealmAdminApplicationName(realm);
ApplicationModel realmAdminApp = realm.getApplicationByName(realmAdminApplicationName);
diff --git a/services/src/main/java/org/keycloak/services/resources/AccountService.java b/services/src/main/java/org/keycloak/services/resources/AccountService.java
index 16e08c1..aa34c27 100755
--- a/services/src/main/java/org/keycloak/services/resources/AccountService.java
+++ b/services/src/main/java/org/keycloak/services/resources/AccountService.java
@@ -41,19 +41,18 @@ import org.keycloak.models.AuthenticationLinkModel;
import org.keycloak.models.AuthenticationProviderModel;
import org.keycloak.models.ClientModel;
import org.keycloak.models.Constants;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.SocialLinkModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.TimeBasedOTP;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.ForbiddenException;
import org.keycloak.services.managers.AppAuthManager;
import org.keycloak.services.managers.Auth;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.ModelToRepresentation;
-import org.keycloak.services.managers.TokenManager;
import org.keycloak.services.messages.Messages;
import org.keycloak.services.resources.flows.Flows;
import org.keycloak.services.resources.flows.OAuthRedirect;
@@ -79,7 +78,6 @@ import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.Variant;
import java.net.URI;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -120,7 +118,7 @@ public class AccountService {
private UriInfo uriInfo;
@Context
- private ProviderSession providers;
+ private KeycloakSession session;
private final AppAuthManager authManager;
private final ApplicationModel application;
@@ -133,13 +131,13 @@ public class AccountService {
this.realm = realm;
this.application = application;
this.audit = audit;
- this.authManager = new AppAuthManager(providers);
+ this.authManager = new AppAuthManager(session);
}
public void init() {
- auditProvider = providers.getProvider(AuditProvider.class);
+ auditProvider = session.getProvider(AuditProvider.class);
- account = providers.getProvider(AccountProvider.class).setRealm(realm).setUriInfo(uriInfo);
+ account = session.getProvider(AccountProvider.class).setRealm(realm).setUriInfo(uriInfo);
boolean passwordUpdateSupported = false;
AuthenticationManager.AuthResult authResult = authManager.authenticateIdentityCookie(realm, uriInfo, headers);
@@ -183,7 +181,7 @@ public class AccountService {
try {
require(AccountRoles.MANAGE_ACCOUNT);
} catch (ForbiddenException e) {
- return Flows.forms(providers, realm, uriInfo).setError("No access").createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError("No access").createErrorPage();
}
String[] referrer = getReferrer();
@@ -445,7 +443,7 @@ public class AccountService {
return account.setError(Messages.INVALID_PASSWORD_CONFIRM).createResponse(AccountPages.PASSWORD);
}
- AuthenticationProviderManager authProviderManager = AuthenticationProviderManager.getManager(realm, providers);
+ AuthenticationProviderManager authProviderManager = AuthenticationProviderManager.getManager(realm, session);
if (Validation.isEmpty(password)) {
return account.setError(Messages.MISSING_PASSWORD).createResponse(AccountPages.PASSWORD);
} else if (authProviderManager.validatePassword(user, password) != AuthProviderStatus.SUCCESS) {
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java b/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
index 3f2d0ed..8976f2b 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
@@ -8,7 +8,6 @@ import org.jboss.resteasy.spi.HttpResponse;
import org.jboss.resteasy.spi.NotFoundException;
import org.keycloak.freemarker.ExtendingThemeManager;
import org.keycloak.freemarker.Theme;
-import org.keycloak.freemarker.ThemeProvider;
import org.keycloak.models.AdminRoles;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.Constants;
@@ -16,7 +15,6 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.services.managers.AppAuthManager;
import org.keycloak.services.managers.ApplicationManager;
import org.keycloak.services.managers.AuthenticationManager;
@@ -73,9 +71,6 @@ public class AdminConsole {
protected Providers providers;
@Context
- protected ProviderSession providerSession;
-
- @Context
protected KeycloakApplication keycloak;
protected AppAuthManager authManager;
@@ -83,7 +78,7 @@ public class AdminConsole {
public AdminConsole(RealmModel realm) {
this.realm = realm;
- this.authManager = new AppAuthManager(providerSession);
+ this.authManager = new AppAuthManager(session);
}
public static class WhoAmI {
@@ -315,7 +310,7 @@ public class AdminConsole {
}
try {
- ExtendingThemeManager themeManager = new ExtendingThemeManager(providerSession);
+ ExtendingThemeManager themeManager = new ExtendingThemeManager(session);
Theme theme = themeManager.createTheme(realm.getAdminTheme(), Theme.Type.ADMIN);
InputStream resource = theme.getResourceAsStream(path);
if (resource != null) {
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java b/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java
index ae0a2e4..deb3513 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/AdminRoot.java
@@ -1,23 +1,17 @@
package org.keycloak.services.resources.admin;
import org.jboss.logging.Logger;
-import org.jboss.resteasy.spi.DefaultOptionsMethodException;
import org.jboss.resteasy.spi.HttpRequest;
import org.jboss.resteasy.spi.HttpResponse;
import org.jboss.resteasy.spi.NotFoundException;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.jboss.resteasy.spi.UnauthorizedException;
import org.keycloak.jose.jws.JWSInput;
-import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
-import org.keycloak.models.Constants;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
-import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.AccessToken;
import org.keycloak.services.managers.AppAuthManager;
-import org.keycloak.services.managers.Auth;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.services.managers.TokenManager;
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
index 0a6059e..1009812 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
@@ -13,7 +13,6 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.ModelDuplicateException;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.adapters.action.SessionStats;
import org.keycloak.representations.idm.RealmAuditRepresentation;
import org.keycloak.representations.idm.RealmRepresentation;
@@ -53,18 +52,10 @@ public class RealmAdminResource {
protected RealmModel realm;
private TokenManager tokenManager;
- /*
- @Context
- protected ResourceContext resourceContext;
- */
-
@Context
protected KeycloakSession session;
@Context
- protected ProviderSession providers;
-
- @Context
protected UriInfo uriInfo;
public RealmAdminResource(RealmAuth auth, RealmModel realm, TokenManager tokenManager) {
@@ -174,7 +165,7 @@ public class RealmAdminResource {
*/
@Path("users")
public UsersResource users() {
- UsersResource users = new UsersResource(providers, realm, auth, tokenManager);
+ UsersResource users = new UsersResource(realm, auth, tokenManager);
ResteasyProviderFactory.getInstance().injectProperties(users);
//resourceContext.initResource(users);
return users;
@@ -323,7 +314,7 @@ public class RealmAdminResource {
@QueryParam("ipAddress") String ipAddress, @QueryParam("first") Integer firstResult, @QueryParam("max") Integer maxResults) {
auth.init(RealmAuth.Resource.AUDIT).requireView();
- AuditProvider audit = providers.getProvider(AuditProvider.class);
+ AuditProvider audit = session.getProvider(AuditProvider.class);
EventQuery query = audit.createQuery().realm(realm.getId());
if (client != null) {
@@ -357,7 +348,7 @@ public class RealmAdminResource {
public void clearAudit() {
auth.init(RealmAuth.Resource.AUDIT).requireManage();
- AuditProvider audit = providers.getProvider(AuditProvider.class);
+ AuditProvider audit = session.getProvider(AuditProvider.class);
audit.clear(realm.getId());
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
index 9c5549a..c669dbe 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
@@ -1,20 +1,17 @@
package org.keycloak.services.resources.admin;
import org.keycloak.audit.AuditListener;
+import org.keycloak.authentication.AuthenticationProvider;
import org.keycloak.freemarker.ExtendingThemeManager;
import org.keycloak.freemarker.Theme;
-import org.keycloak.freemarker.ThemeProvider;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.social.SocialProvider;
-import org.keycloak.authentication.AuthenticationProvider;
-import org.keycloak.authentication.AuthenticationProviderManager;
import org.keycloak.util.ProviderLoader;
import javax.ws.rs.GET;
import javax.ws.rs.core.Context;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -26,7 +23,7 @@ import java.util.Set;
public class ServerInfoAdminResource {
@Context
- private ProviderSession providers;
+ private KeycloakSession session;
/**
* Returns a list of themes, social providers, auth providers, and audit listeners available on this server
@@ -44,7 +41,7 @@ public class ServerInfoAdminResource {
}
private void setThemes(ServerInfoRepresentation info) {
- ExtendingThemeManager themeManager = new ExtendingThemeManager(providers);
+ ExtendingThemeManager themeManager = new ExtendingThemeManager(session);
info.themes = new HashMap<String, List<String>>();
for (Theme.Type type : Theme.Type.values()) {
@@ -65,7 +62,7 @@ public class ServerInfoAdminResource {
private void setAuthProviders(ServerInfoRepresentation info) {
info.authProviders = new HashMap<String, List<String>>();
- Iterable<AuthenticationProvider> authProviders = providers.getAllProviders(AuthenticationProvider.class);
+ Iterable<AuthenticationProvider> authProviders = session.getAllProviders(AuthenticationProvider.class);
for (AuthenticationProvider authProvider : authProviders) {
info.authProviders.put(authProvider.getName(), authProvider.getAvailableOptions());
}
@@ -74,7 +71,7 @@ public class ServerInfoAdminResource {
private void setAuditListeners(ServerInfoRepresentation info) {
info.auditListeners = new LinkedList<String>();
- Set<String> providers = this.providers.listProviderIds(AuditListener.class);
+ Set<String> providers = session.listProviderIds(AuditListener.class);
if (providers != null) {
info.auditListeners.addAll(providers);
}
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
index 5f0fc27..788cc56 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/UsersResource.java
@@ -17,7 +17,6 @@ import org.keycloak.models.SocialLinkModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.adapters.action.UserStats;
import org.keycloak.representations.idm.ApplicationMappingsRepresentation;
import org.keycloak.representations.idm.CredentialRepresentation;
@@ -68,30 +67,23 @@ public class UsersResource {
protected RealmModel realm;
- private ProviderSession providerSession;
private RealmAuth auth;
- private TokenManager tokenManager;
-
- public UsersResource(ProviderSession providerSession, RealmModel realm, RealmAuth auth, TokenManager tokenManager) {
- this.providerSession = providerSession;
- this.auth = auth;
- this.realm = realm;
- this.tokenManager = tokenManager;
- auth.init(RealmAuth.Resource.USER);
- }
+ private TokenManager tokenManager;
@Context
protected UriInfo uriInfo;
- /*
- @Context
- protected ResourceContext resourceContext;
- */
-
@Context
protected KeycloakSession session;
+ public UsersResource(RealmModel realm, RealmAuth auth, TokenManager tokenManager) {
+ this.auth = auth;
+ this.realm = realm;
+ this.tokenManager = tokenManager;
+
+ auth.init(RealmAuth.Resource.USER);
+ }
/**
* Update the user
@@ -835,7 +827,7 @@ public class UsersResource {
String link = builder.build(realm.getName()).toString();
long expiration = TimeUnit.SECONDS.toMinutes(realm.getAccessCodeLifespanUserAction());
- providerSession.getProvider(EmailProvider.class).setRealm(realm).setUser(user).sendPasswordReset(link, expiration);
+ session.getProvider(EmailProvider.class).setRealm(realm).setUser(user).sendPasswordReset(link, expiration);
return Response.ok().build();
} catch (EmailException e) {
diff --git a/services/src/main/java/org/keycloak/services/resources/flows/Flows.java b/services/src/main/java/org/keycloak/services/resources/flows/Flows.java
index c83d6f9..4f96bdd 100755
--- a/services/src/main/java/org/keycloak/services/resources/flows/Flows.java
+++ b/services/src/main/java/org/keycloak/services/resources/flows/Flows.java
@@ -23,8 +23,8 @@ package org.keycloak.services.resources.flows;
import org.jboss.resteasy.spi.HttpRequest;
import org.keycloak.login.LoginFormsProvider;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.TokenManager;
import org.keycloak.social.SocialProvider;
@@ -39,11 +39,11 @@ public class Flows {
private Flows() {
}
- public static LoginFormsProvider forms(ProviderSession session, RealmModel realm, UriInfo uriInfo) {
+ public static LoginFormsProvider forms(KeycloakSession session, RealmModel realm, UriInfo uriInfo) {
return session.getProvider(LoginFormsProvider.class).setRealm(realm).setUriInfo(uriInfo);
}
- public static OAuthFlows oauth(ProviderSession session, RealmModel realm, HttpRequest request, UriInfo uriInfo, AuthenticationManager authManager,
+ public static OAuthFlows oauth(KeycloakSession session, RealmModel realm, HttpRequest request, UriInfo uriInfo, AuthenticationManager authManager,
TokenManager tokenManager) {
return new OAuthFlows(session, realm, request, uriInfo, authManager, tokenManager);
}
diff --git a/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java b/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java
index 97122dc..6571037 100755
--- a/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java
+++ b/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java
@@ -30,28 +30,24 @@ import org.keycloak.audit.Details;
import org.keycloak.audit.EventType;
import org.keycloak.models.ApplicationModel;
import org.keycloak.models.ClientModel;
-import org.keycloak.models.Constants;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RequiredCredentialModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserModel.RequiredAction;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.managers.AccessCodeEntry;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.managers.TokenManager;
-import org.keycloak.util.MultivaluedHashMap;
-import org.keycloak.util.Time;
import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
@@ -66,7 +62,7 @@ public class OAuthFlows {
private static final Logger log = Logger.getLogger(OAuthFlows.class);
- private final ProviderSession providerSession;
+ private final KeycloakSession session;
private final RealmModel realm;
@@ -78,9 +74,9 @@ public class OAuthFlows {
private final TokenManager tokenManager;
- OAuthFlows(ProviderSession providerSession, RealmModel realm, HttpRequest request, UriInfo uriInfo, AuthenticationManager authManager,
+ OAuthFlows(KeycloakSession session, RealmModel realm, HttpRequest request, UriInfo uriInfo, AuthenticationManager authManager,
TokenManager tokenManager) {
- this.providerSession = providerSession;
+ this.session = session;
this.realm = realm;
this.request = request;
this.uriInfo = uriInfo;
@@ -142,7 +138,7 @@ public class OAuthFlows {
audit.clone().event(EventType.SEND_VERIFY_EMAIL).detail(Details.EMAIL, accessCode.getUser().getEmail()).success();
}
- return Flows.forms(providerSession, realm, uriInfo).setAccessCode(accessCode.getCode()).setUser(user)
+ return Flows.forms(this.session, realm, uriInfo).setAccessCode(accessCode.getCode()).setUser(user)
.createResponse(action);
}
@@ -171,7 +167,7 @@ public class OAuthFlows {
}
}
}
- return Flows.forms(providerSession, realm, uriInfo).setAccessCode(accessCode.getCode()).
+ return Flows.forms(this.session, realm, uriInfo).setAccessCode(accessCode.getCode()).
setAccessRequest(realmRolesRequested, appRolesRequested).
setClient(client).createOAuthGrant();
}
@@ -185,7 +181,7 @@ public class OAuthFlows {
}
public Response forwardToSecurityFailure(String message) {
- return Flows.forms(providerSession, realm, uriInfo).setError(message).createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError(message).createErrorPage();
}
private void isTotpConfigurationRequired(UserModel user) {
diff --git a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
index af42022..c868e3f 100755
--- a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
+++ b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
@@ -9,11 +9,10 @@ import org.keycloak.Config;
import org.keycloak.SkeletonKeyContextResolver;
import org.keycloak.exportimport.ExportImportProvider;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.representations.idm.RealmRepresentation;
-import org.keycloak.services.DefaultProviderSessionFactory;
+import org.keycloak.services.DefaultKeycloakSessionFactory;
import org.keycloak.services.managers.ApplianceBootstrap;
import org.keycloak.services.managers.BruteForceProtector;
import org.keycloak.services.managers.RealmManager;
@@ -54,22 +53,22 @@ public class KeycloakApplication extends Application {
protected Set<Object> singletons = new HashSet<Object>();
protected Set<Class<?>> classes = new HashSet<Class<?>>();
- protected ProviderSessionFactory providerSessionFactory;
+ protected KeycloakSessionFactory sessionFactory;
protected String contextPath;
public KeycloakApplication(@Context ServletContext context, @Context Dispatcher dispatcher) {
loadConfig();
- this.providerSessionFactory = createProviderSessionFactory();
+ this.sessionFactory = createSessionFactory();
dispatcher.getDefaultContextObjects().put(KeycloakApplication.class, this);
this.contextPath = context.getContextPath();
- BruteForceProtector protector = new BruteForceProtector(providerSessionFactory);
+ BruteForceProtector protector = new BruteForceProtector(sessionFactory);
dispatcher.getDefaultContextObjects().put(BruteForceProtector.class, protector);
ResteasyProviderFactory.pushContext(BruteForceProtector.class, protector); // for injection
protector.start();
context.setAttribute(BruteForceProtector.class.getName(), protector);
- context.setAttribute(ProviderSessionFactory.class.getName(), this.providerSessionFactory);
+ context.setAttribute(KeycloakSessionFactory.class.getName(), this.sessionFactory);
TokenManager tokenManager = new TokenManager();
@@ -86,7 +85,7 @@ public class KeycloakApplication extends Application {
setupDefaultRealm(context.getContextPath());
- setupScheduledTasks(providerSessionFactory);
+ setupScheduledTasks(sessionFactory);
importRealms(context);
}
@@ -135,25 +134,25 @@ public class KeycloakApplication extends Application {
}
protected void setupDefaultRealm(String contextPath) {
- new ApplianceBootstrap().bootstrap(providerSessionFactory, contextPath);
+ new ApplianceBootstrap().bootstrap(sessionFactory, contextPath);
}
- public static DefaultProviderSessionFactory createProviderSessionFactory() {
- DefaultProviderSessionFactory factory = new DefaultProviderSessionFactory();
+ public static KeycloakSessionFactory createSessionFactory() {
+ DefaultKeycloakSessionFactory factory = new DefaultKeycloakSessionFactory();
factory.init();
return factory;
}
- public static void setupScheduledTasks(final ProviderSessionFactory providerSessionFactory) {
+ public static void setupScheduledTasks(final KeycloakSessionFactory sessionFactory) {
long interval = Config.scope("scheduled").getLong("interval", 60L) * 1000;
- TimerProvider timer = providerSessionFactory.createSession().getProvider(TimerProvider.class);
- timer.schedule(new ScheduledTaskRunner(providerSessionFactory, new ClearExpiredAuditEvents()), interval);
- timer.schedule(new ScheduledTaskRunner(providerSessionFactory, new ClearExpiredUserSessions()), interval);
+ TimerProvider timer = sessionFactory.create().getProvider(TimerProvider.class);
+ timer.schedule(new ScheduledTaskRunner(sessionFactory, new ClearExpiredAuditEvents()), interval);
+ timer.schedule(new ScheduledTaskRunner(sessionFactory, new ClearExpiredUserSessions()), interval);
}
- public ProviderSessionFactory getProviderSessionFactory() {
- return providerSessionFactory;
+ public KeycloakSessionFactory getSessionFactory() {
+ return sessionFactory;
}
@Override
@@ -201,8 +200,7 @@ public class KeycloakApplication extends Application {
}
public void importRealm(RealmRepresentation rep, String from) {
- ProviderSession providerSession = providerSessionFactory.createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = sessionFactory.create();
try {
session.getTransaction().begin();
RealmManager manager = new RealmManager(session);
@@ -225,7 +223,7 @@ public class KeycloakApplication extends Application {
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
@@ -242,7 +240,7 @@ public class KeycloakApplication extends Application {
if (providers.hasNext()) {
ExportImportProvider exportImport = providers.next();
- exportImport.checkExportImport(providerSessionFactory);
+ exportImport.checkExportImport(sessionFactory);
} else {
log.warn("No ExportImportProvider found!");
}
diff --git a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
index ee87557..1e15cf4 100755
--- a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
@@ -12,7 +12,6 @@ import org.keycloak.models.ClientModel;
import org.keycloak.models.Constants;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.services.ClientConnection;
import org.keycloak.services.managers.AuditManager;
import org.keycloak.services.managers.AuthenticationManager;
@@ -57,9 +56,6 @@ public class RealmsResource {
protected KeycloakSession session;
@Context
- protected ProviderSession providers;
-
- @Context
protected ClientConnection clientConnection;
@Context
@@ -98,7 +94,7 @@ public class RealmsResource {
@QueryParam("client_id") String client_id,
@QueryParam("origin") String origin) {
logger.info("getLoginStatusIframe");
- AuthenticationManager auth = new AuthenticationManager(providers);
+ AuthenticationManager auth = new AuthenticationManager(session);
//logger.info("getting login-status-iframe.html for client_id: " + client_id);
RealmManager realmManager = new RealmManager(session);
@@ -151,8 +147,8 @@ public class RealmsResource {
public TokenService getTokenService(final @PathParam("realm") String name) {
RealmManager realmManager = new RealmManager(session);
RealmModel realm = locateRealm(name, realmManager);
- Audit audit = new AuditManager(realm, providers, clientConnection).createAudit();
- AuthenticationManager authManager = new AuthenticationManager(providers, protector);
+ Audit audit = new AuditManager(realm, session, clientConnection).createAudit();
+ AuthenticationManager authManager = new AuthenticationManager(session, protector);
TokenService tokenService = new TokenService(realm, tokenManager, audit, authManager);
ResteasyProviderFactory.getInstance().injectProperties(tokenService);
//resourceContext.initResource(tokenService);
@@ -178,7 +174,7 @@ public class RealmsResource {
throw new NotFoundException("account management not enabled");
}
- Audit audit = new AuditManager(realm, providers, clientConnection).createAudit();
+ Audit audit = new AuditManager(realm, session, clientConnection).createAudit();
AccountService accountService = new AccountService(realm, application, audit);
ResteasyProviderFactory.getInstance().injectProperties(accountService);
//resourceContext.initResource(accountService);
diff --git a/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java b/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java
index 8f1150f..0247410 100755
--- a/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java
+++ b/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java
@@ -32,13 +32,13 @@ import org.keycloak.email.EmailException;
import org.keycloak.email.EmailProvider;
import org.keycloak.login.LoginFormsProvider;
import org.keycloak.models.ClientModel;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserModel.RequiredAction;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.utils.TimeBasedOTP;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.services.ClientConnection;
import org.keycloak.services.managers.AccessCodeEntry;
@@ -91,7 +91,7 @@ public class RequiredActionsService {
protected Providers providers;
@Context
- protected ProviderSession providerSession;
+ protected KeycloakSession session;
private TokenManager tokenManager;
@@ -118,7 +118,7 @@ public class RequiredActionsService {
String error = Validation.validateUpdateProfileForm(formData);
if (error != null) {
- return Flows.forms(providerSession, realm, uriInfo).setUser(user).setError(error).createResponse(RequiredAction.UPDATE_PROFILE);
+ return Flows.forms(session, realm, uriInfo).setUser(user).setError(error).createResponse(RequiredAction.UPDATE_PROFILE);
}
user.setFirstName(formData.getFirst("firstName"));
@@ -158,7 +158,7 @@ public class RequiredActionsService {
String totp = formData.getFirst("totp");
String totpSecret = formData.getFirst("totpSecret");
- LoginFormsProvider loginForms = Flows.forms(providerSession, realm, uriInfo).setUser(user);
+ LoginFormsProvider loginForms = Flows.forms(session, realm, uriInfo).setUser(user);
if (Validation.isEmpty(totp)) {
return loginForms.setError(Messages.MISSING_TOTP).createResponse(RequiredAction.CONFIGURE_TOTP);
} else if (!new TimeBasedOTP().validate(totp, totpSecret.getBytes())) {
@@ -199,7 +199,7 @@ public class RequiredActionsService {
String passwordNew = formData.getFirst("password-new");
String passwordConfirm = formData.getFirst("password-confirm");
- LoginFormsProvider loginForms = Flows.forms(providerSession, realm, uriInfo).setUser(user);
+ LoginFormsProvider loginForms = Flows.forms(session, realm, uriInfo).setUser(user);
if (Validation.isEmpty(passwordNew)) {
return loginForms.setError(Messages.MISSING_PASSWORD).createResponse(RequiredAction.UPDATE_PASSWORD);
} else if (!passwordNew.equals(passwordConfirm)) {
@@ -207,7 +207,7 @@ public class RequiredActionsService {
}
try {
- boolean updateSuccessful = AuthenticationProviderManager.getManager(realm, providerSession).updatePassword(user, passwordNew);
+ boolean updateSuccessful = AuthenticationProviderManager.getManager(realm, session).updatePassword(user, passwordNew);
if (!updateSuccessful) {
return loginForms.setError("Password update failed").createResponse(RequiredAction.UPDATE_PASSWORD);
}
@@ -259,7 +259,7 @@ public class RequiredActionsService {
initAudit(accessCode);
//audit.clone().event(EventType.SEND_VERIFY_EMAIL).detail(Details.EMAIL, accessCode.getUser().getEmail()).success();
- return Flows.forms(providerSession, realm, uriInfo).setAccessCode(accessCode.getCode()).setUser(accessCode.getUser())
+ return Flows.forms(session, realm, uriInfo).setAccessCode(accessCode.getCode()).setUser(accessCode.getUser())
.createResponse(RequiredAction.VERIFY_EMAIL);
}
}
@@ -275,9 +275,9 @@ public class RequiredActionsService {
return unauthorized();
}
- return Flows.forms(providerSession, realm, uriInfo).setAccessCode(accessCode.getCode()).createResponse(RequiredAction.UPDATE_PASSWORD);
+ return Flows.forms(session, realm, uriInfo).setAccessCode(accessCode.getCode()).createResponse(RequiredAction.UPDATE_PASSWORD);
} else {
- return Flows.forms(providerSession, realm, uriInfo).createPasswordReset();
+ return Flows.forms(session, realm, uriInfo).createPasswordReset();
}
}
@@ -292,15 +292,15 @@ public class RequiredActionsService {
String redirect = uriInfo.getQueryParameters().getFirst(OAuth2Constants.REDIRECT_URI);
String clientId = uriInfo.getQueryParameters().getFirst(OAuth2Constants.CLIENT_ID);
- AuthenticationManager authManager = new AuthenticationManager(providerSession);
+ AuthenticationManager authManager = new AuthenticationManager(session);
ClientModel client = realm.findClient(clientId);
if (client == null) {
- return Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager).forwardToSecurityFailure(
+ return Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager).forwardToSecurityFailure(
"Unknown login requester.");
}
if (!client.isEnabled()) {
- return Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager).forwardToSecurityFailure(
+ return Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager).forwardToSecurityFailure(
"Login requester not enabled.");
}
@@ -337,16 +337,16 @@ public class RequiredActionsService {
String link = builder.build(realm.getName()).toString();
long expiration = TimeUnit.SECONDS.toMinutes(realm.getAccessCodeLifespanUserAction());
- providerSession.getProvider(EmailProvider.class).setRealm(realm).setUser(user).sendPasswordReset(link, expiration);
+ this.session.getProvider(EmailProvider.class).setRealm(realm).setUser(user).sendPasswordReset(link, expiration);
audit.user(user).detail(Details.EMAIL, user.getEmail()).detail(Details.CODE_ID, accessCode.getCodeId()).success();
} catch (EmailException e) {
logger.error("Failed to send password reset email", e);
- return Flows.forms(providerSession, realm, uriInfo).setError("emailSendError").createErrorPage();
+ return Flows.forms(this.session, realm, uriInfo).setError("emailSendError").createErrorPage();
}
}
- return Flows.forms(providerSession, realm, uriInfo).setSuccess("emailSent").createPasswordReset();
+ return Flows.forms(session, realm, uriInfo).setSuccess("emailSent").createPasswordReset();
}
private AccessCodeEntry getAccessCodeEntry(RequiredAction requiredAction) {
@@ -387,24 +387,24 @@ public class RequiredActionsService {
Set<RequiredAction> requiredActions = user.getRequiredActions();
if (!requiredActions.isEmpty()) {
- return Flows.forms(providerSession, realm, uriInfo).setAccessCode(accessCode.getCode()).setUser(user)
+ return Flows.forms(session, realm, uriInfo).setAccessCode(accessCode.getCode()).setUser(user)
.createResponse(requiredActions.iterator().next());
} else {
logger.debugv("redirectOauth: redirecting to: {0}", accessCode.getRedirectUri());
accessCode.resetExpiration();
- AuthenticationManager authManager = new AuthenticationManager(providerSession);
+ AuthenticationManager authManager = new AuthenticationManager(session);
UserSessionModel session = realm.getUserSession(accessCode.getSessionState());
if (!AuthenticationManager.isSessionValid(realm, session)) {
AuthenticationManager.logout(realm, session, uriInfo);
- return Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager).redirectError(accessCode.getClient(), "access_denied", accessCode.getState(), accessCode.getRedirectUri());
+ return Flows.oauth(this.session, realm, request, uriInfo, authManager, tokenManager).redirectError(accessCode.getClient(), "access_denied", accessCode.getState(), accessCode.getRedirectUri());
}
audit.session(session);
audit.success();
- return Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager).redirectAccessCode(accessCode,
+ return Flows.oauth(this.session, realm, request, uriInfo, authManager, tokenManager).redirectAccessCode(accessCode,
session, accessCode.getState(), accessCode.getRedirectUri());
}
}
@@ -425,7 +425,7 @@ public class RequiredActionsService {
}
private Response unauthorized() {
- return Flows.forms(providerSession, realm, uriInfo).setError("Unauthorized request").createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError("Unauthorized request").createErrorPage();
}
}
diff --git a/services/src/main/java/org/keycloak/services/resources/SocialResource.java b/services/src/main/java/org/keycloak/services/resources/SocialResource.java
index 08073ec..c59c8f6 100755
--- a/services/src/main/java/org/keycloak/services/resources/SocialResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/SocialResource.java
@@ -29,7 +29,6 @@ import org.keycloak.audit.Audit;
import org.keycloak.audit.Details;
import org.keycloak.audit.Errors;
import org.keycloak.audit.EventType;
-import org.keycloak.jose.jws.JWSBuilder;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.models.AccountRoles;
import org.keycloak.models.ClientModel;
@@ -40,7 +39,6 @@ import org.keycloak.models.SocialLinkModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.utils.KeycloakModelUtils;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.services.ClientConnection;
import org.keycloak.services.managers.AuditManager;
import org.keycloak.services.managers.AuthenticationManager;
@@ -49,7 +47,6 @@ import org.keycloak.services.managers.TokenManager;
import org.keycloak.services.resources.flows.Flows;
import org.keycloak.services.resources.flows.OAuthFlows;
import org.keycloak.services.resources.flows.Urls;
-import org.keycloak.services.util.CookieHelper;
import org.keycloak.social.AuthCallback;
import org.keycloak.social.SocialAccessDeniedException;
import org.keycloak.social.SocialLoader;
@@ -94,15 +91,9 @@ public class SocialResource {
private HttpRequest request;
@Context
- protected ProviderSession providerSession;
-
- @Context
protected KeycloakSession session;
@Context
- protected ProviderSession providers;
-
- @Context
protected ClientConnection clientConnection;
private TokenManager tokenManager;
@@ -119,7 +110,7 @@ public class SocialResource {
initialRequest = new JWSInput(encodedState).readJsonContent(State.class);
} catch (Throwable t) {
logger.warn("Invalid social callback", t);
- return Flows.forms(providerSession, null, uriInfo).setError("Unexpected callback").createErrorPage();
+ return Flows.forms(session, null, uriInfo).setError("Unexpected callback").createErrorPage();
}
SocialProvider provider = SocialLoader.load(initialRequest.getProvider());
@@ -129,13 +120,13 @@ public class SocialResource {
RealmManager realmManager = new RealmManager(session);
RealmModel realm = realmManager.getRealmByName(realmName);
- Audit audit = new AuditManager(realm, providers, clientConnection).createAudit()
+ Audit audit = new AuditManager(realm, session, clientConnection).createAudit()
.event(EventType.LOGIN)
.detail(Details.RESPONSE_TYPE, initialRequest.get(OAuth2Constants.RESPONSE_TYPE))
.detail(Details.AUTH_METHOD, "social@" + provider.getId());
- AuthenticationManager authManager = new AuthenticationManager(providers);
- OAuthFlows oauth = Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager);
+ AuthenticationManager authManager = new AuthenticationManager(session);
+ OAuthFlows oauth = Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager);
if (!realm.isEnabled()) {
audit.error(Errors.REALM_DISABLED);
@@ -182,7 +173,7 @@ public class SocialResource {
queryParms.putSingle(OAuth2Constants.RESPONSE_TYPE, responseType);
audit.error(Errors.REJECTED_BY_USER);
- return Flows.forms(providerSession, realm, uriInfo).setQueryParams(queryParms).setWarning("Access denied").createLogin();
+ return Flows.forms(session, realm, uriInfo).setQueryParams(queryParms).setWarning("Access denied").createLogin();
} catch (SocialProviderException e) {
logger.error("Failed to process social callback", e);
return oauth.forwardToSecurityFailure("Failed to process social callback");
@@ -275,7 +266,7 @@ public class SocialResource {
RealmManager realmManager = new RealmManager(session);
RealmModel realm = realmManager.getRealmByName(realmName);
- Audit audit = new AuditManager(realm, providers, clientConnection).createAudit()
+ Audit audit = new AuditManager(realm, session, clientConnection).createAudit()
.event(EventType.LOGIN).client(clientId)
.detail(Details.REDIRECT_URI, redirectUri)
.detail(Details.RESPONSE_TYPE, "code")
@@ -284,25 +275,25 @@ public class SocialResource {
SocialProvider provider = SocialLoader.load(providerId);
if (provider == null) {
audit.error(Errors.SOCIAL_PROVIDER_NOT_FOUND);
- return Flows.forms(providerSession, realm, uriInfo).setError("Social provider not found").createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError("Social provider not found").createErrorPage();
}
ClientModel client = realm.findClient(clientId);
if (client == null) {
audit.error(Errors.CLIENT_NOT_FOUND);
logger.warn("Unknown login requester: " + clientId);
- return Flows.forms(providerSession, realm, uriInfo).setError("Unknown login requester.").createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError("Unknown login requester.").createErrorPage();
}
if (!client.isEnabled()) {
audit.error(Errors.CLIENT_DISABLED);
logger.warn("Login requester not enabled.");
- return Flows.forms(providerSession, realm, uriInfo).setError("Login requester not enabled.").createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError("Login requester not enabled.").createErrorPage();
}
redirectUri = TokenService.verifyRedirectUri(uriInfo, redirectUri, realm, client);
if (redirectUri == null) {
audit.error(Errors.INVALID_REDIRECT_URI);
- return Flows.forms(providerSession, realm, uriInfo).setError("Invalid redirect_uri.").createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError("Invalid redirect_uri.").createErrorPage();
}
try {
@@ -315,7 +306,7 @@ public class SocialResource {
.redirectToSocialProvider();
} catch (Throwable t) {
logger.error("Failed to redirect to social auth", t);
- return Flows.forms(providerSession, realm, uriInfo).setError("Failed to redirect to social auth").createErrorPage();
+ return Flows.forms(session, realm, uriInfo).setError("Failed to redirect to social auth").createErrorPage();
}
}
diff --git a/services/src/main/java/org/keycloak/services/resources/ThemeResource.java b/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
index 55509d9..a9637a2 100755
--- a/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
@@ -3,8 +3,7 @@ package org.keycloak.services.resources;
import org.jboss.logging.Logger;
import org.keycloak.freemarker.ExtendingThemeManager;
import org.keycloak.freemarker.Theme;
-import org.keycloak.freemarker.ThemeProvider;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import javax.activation.FileTypeMap;
import javax.activation.MimetypesFileTypeMap;
@@ -29,7 +28,7 @@ public class ThemeResource {
private static FileTypeMap mimeTypes = MimetypesFileTypeMap.getDefaultFileTypeMap();
@Context
- private ProviderSession providerSession;
+ private KeycloakSession session;
/**
* Get theme content
@@ -43,7 +42,7 @@ public class ThemeResource {
@Path("/{themeType}/{themeName}/{path:.*}")
public Response getResource(@PathParam("themeType") String themType, @PathParam("themeName") String themeName, @PathParam("path") String path) {
try {
- ExtendingThemeManager themeManager = new ExtendingThemeManager(providerSession);
+ ExtendingThemeManager themeManager = new ExtendingThemeManager(session);
Theme theme = themeManager.createTheme(themeName, Theme.Type.valueOf(themType.toUpperCase()));
InputStream resource = theme.getResourceAsStream(path);
if (resource != null) {
diff --git a/services/src/main/java/org/keycloak/services/resources/TokenService.java b/services/src/main/java/org/keycloak/services/resources/TokenService.java
index 468358a..93949d1 100755
--- a/services/src/main/java/org/keycloak/services/resources/TokenService.java
+++ b/services/src/main/java/org/keycloak/services/resources/TokenService.java
@@ -28,7 +28,6 @@ import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.utils.KeycloakModelUtils;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.representations.idm.CredentialRepresentation;
@@ -103,8 +102,6 @@ public class TokenService {
protected KeycloakTransaction transaction;
@Context
protected ClientConnection clientConnection;
- @Context
- protected ProviderSession providerSession;
/*
@Context
@@ -384,7 +381,7 @@ public class TokenService {
audit.detail(Details.REMEMBER_ME, "true");
}
- OAuthFlows oauth = Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager);
+ OAuthFlows oauth = Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager);
if (!checkSsl()) {
return oauth.forwardToSecurityFailure("HTTPS required");
@@ -437,18 +434,18 @@ public class TokenService {
return oauth.processAccessCode(scopeParam, state, redirect, client, user, session, username, remember, "form", audit);
case ACCOUNT_TEMPORARILY_DISABLED:
audit.error(Errors.USER_TEMPORARILY_DISABLED);
- return Flows.forms(providerSession, realm, uriInfo).setError(Messages.ACCOUNT_TEMPORARILY_DISABLED).setFormData(formData).createLogin();
+ return Flows.forms(this.session, realm, uriInfo).setError(Messages.ACCOUNT_TEMPORARILY_DISABLED).setFormData(formData).createLogin();
case ACCOUNT_DISABLED:
audit.error(Errors.USER_DISABLED);
- return Flows.forms(providerSession, realm, uriInfo).setError(Messages.ACCOUNT_DISABLED).setFormData(formData).createLogin();
+ return Flows.forms(this.session, realm, uriInfo).setError(Messages.ACCOUNT_DISABLED).setFormData(formData).createLogin();
case MISSING_TOTP:
- return Flows.forms(providerSession, realm, uriInfo).setFormData(formData).createLoginTotp();
+ return Flows.forms(this.session, realm, uriInfo).setFormData(formData).createLoginTotp();
case INVALID_USER:
audit.error(Errors.USER_NOT_FOUND);
- return Flows.forms(providerSession, realm, uriInfo).setError(Messages.INVALID_USER).setFormData(formData).createLogin();
+ return Flows.forms(this.session, realm, uriInfo).setError(Messages.INVALID_USER).setFormData(formData).createLogin();
default:
audit.error(Errors.INVALID_USER_CREDENTIALS);
- return Flows.forms(providerSession, realm, uriInfo).setError(Messages.INVALID_USER).setFormData(formData).createLogin();
+ return Flows.forms(this.session, realm, uriInfo).setError(Messages.INVALID_USER).setFormData(formData).createLogin();
}
}
@@ -488,7 +485,7 @@ public class TokenService {
.detail(Details.EMAIL, email)
.detail(Details.REGISTER_METHOD, "form");
- OAuthFlows oauth = Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager);
+ OAuthFlows oauth = Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager);
if (!realm.isEnabled()) {
logger.warn("Realm not enabled");
@@ -533,15 +530,15 @@ public class TokenService {
if (error != null) {
audit.error(Errors.INVALID_REGISTRATION);
- return Flows.forms(providerSession, realm, uriInfo).setError(error).setFormData(formData).createRegistration();
+ return Flows.forms(session, realm, uriInfo).setError(error).setFormData(formData).createRegistration();
}
- AuthenticationProviderManager authenticationProviderManager = AuthenticationProviderManager.getManager(realm, providerSession);
+ AuthenticationProviderManager authenticationProviderManager = AuthenticationProviderManager.getManager(realm, session);
// Validate that user with this username doesn't exist in realm or any authentication provider
if (realm.getUser(username) != null || authenticationProviderManager.getUser(username) != null) {
audit.error(Errors.USERNAME_IN_USE);
- return Flows.forms(providerSession, realm, uriInfo).setError(Messages.USERNAME_EXISTS).setFormData(formData).createRegistration();
+ return Flows.forms(session, realm, uriInfo).setError(Messages.USERNAME_EXISTS).setFormData(formData).createRegistration();
}
UserModel user = realm.addUser(username);
@@ -559,7 +556,7 @@ public class TokenService {
boolean passwordUpdateSuccessful;
String passwordUpdateError;
try {
- passwordUpdateSuccessful = AuthenticationProviderManager.getManager(realm, providerSession).updatePassword(user, formData.getFirst("password"));
+ passwordUpdateSuccessful = AuthenticationProviderManager.getManager(realm, session).updatePassword(user, formData.getFirst("password"));
passwordUpdateError = "Password update failed";
} catch (AuthenticationProviderException ape) {
passwordUpdateSuccessful = false;
@@ -569,7 +566,7 @@ public class TokenService {
// User already registered, but force him to update password
if (!passwordUpdateSuccessful) {
user.addRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
- return Flows.forms(providerSession, realm, uriInfo).setError(passwordUpdateError).createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
+ return Flows.forms(session, realm, uriInfo).setError(passwordUpdateError).createResponse(UserModel.RequiredAction.UPDATE_PASSWORD);
}
}
@@ -790,7 +787,7 @@ public class TokenService {
audit.event(EventType.LOGIN).client(clientId).detail(Details.REDIRECT_URI, redirect).detail(Details.RESPONSE_TYPE, "code");
- OAuthFlows oauth = Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager);
+ OAuthFlows oauth = Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager);
if (!checkSsl()) {
return oauth.forwardToSecurityFailure("HTTPS required");
@@ -842,7 +839,7 @@ public class TokenService {
return oauth.redirectError(client, "access_denied", state, redirect);
}
logger.info("createLogin() now...");
- return Flows.forms(providerSession, realm, uriInfo).createLogin();
+ return Flows.forms(session, realm, uriInfo).createLogin();
}
/**
@@ -864,7 +861,7 @@ public class TokenService {
audit.event(EventType.REGISTER).client(clientId).detail(Details.REDIRECT_URI, redirect).detail(Details.RESPONSE_TYPE, "code");
- OAuthFlows oauth = Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager);
+ OAuthFlows oauth = Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager);
if (!checkSsl()) {
return oauth.forwardToSecurityFailure("HTTPS required");
@@ -902,7 +899,7 @@ public class TokenService {
authManager.expireIdentityCookie(realm, uriInfo);
- return Flows.forms(providerSession, realm, uriInfo).createRegistration();
+ return Flows.forms(session, realm, uriInfo).createRegistration();
}
/**
@@ -967,7 +964,7 @@ public class TokenService {
public Response processOAuth(final MultivaluedMap<String, String> formData) {
audit.event(EventType.LOGIN).detail(Details.RESPONSE_TYPE, "code");
- OAuthFlows oauth = Flows.oauth(providerSession, realm, request, uriInfo, authManager, tokenManager);
+ OAuthFlows oauth = Flows.oauth(session, realm, request, uriInfo, authManager, tokenManager);
if (!checkSsl()) {
return oauth.forwardToSecurityFailure("HTTPS required");
@@ -1018,7 +1015,7 @@ public class TokenService {
@Path("oauth/oob")
@GET
public Response installedAppUrnCallback(final @QueryParam("code") String code, final @QueryParam("error") String error, final @QueryParam("error_description") String errorDescription) {
- LoginFormsProvider forms = Flows.forms(providerSession, realm, uriInfo);
+ LoginFormsProvider forms = Flows.forms(session, realm, uriInfo);
if (code != null) {
return forms.setAccessCode(code).createCode();
} else {
diff --git a/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredAuditEvents.java b/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredAuditEvents.java
index c12ea04..5884f49 100644
--- a/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredAuditEvents.java
+++ b/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredAuditEvents.java
@@ -3,7 +3,6 @@ package org.keycloak.services.scheduled;
import org.keycloak.audit.AuditProvider;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
-import org.keycloak.provider.ProviderSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -11,10 +10,10 @@ import org.keycloak.provider.ProviderSession;
public class ClearExpiredAuditEvents implements ScheduledTask {
@Override
- public void run(KeycloakSession keycloakSession, ProviderSession providerSession) {
- AuditProvider audit = providerSession.getProvider(AuditProvider.class);
+ public void run(KeycloakSession session) {
+ AuditProvider audit = session.getProvider(AuditProvider.class);
if (audit != null) {
- for (RealmModel realm : keycloakSession.getRealms()) {
+ for (RealmModel realm : session.getRealms()) {
if (realm.isAuditEnabled() && realm.getAuditExpiration() > 0) {
long olderThan = System.currentTimeMillis() - realm.getAuditExpiration() * 1000;
audit.clear(realm.getId(), olderThan);
diff --git a/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredUserSessions.java b/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredUserSessions.java
index cd770b6..b6b5f99 100755
--- a/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredUserSessions.java
+++ b/services/src/main/java/org/keycloak/services/scheduled/ClearExpiredUserSessions.java
@@ -2,7 +2,6 @@ package org.keycloak.services.scheduled;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
-import org.keycloak.provider.ProviderSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -10,8 +9,8 @@ import org.keycloak.provider.ProviderSession;
public class ClearExpiredUserSessions implements ScheduledTask {
@Override
- public void run(KeycloakSession keycloakSession, ProviderSession providerSession) {
- for (RealmModel realm : keycloakSession.getRealms()) {
+ public void run(KeycloakSession session) {
+ for (RealmModel realm : session.getRealms()) {
realm.removeExpiredUserSessions();
}
}
diff --git a/services/src/main/java/org/keycloak/services/scheduled/ScheduledTask.java b/services/src/main/java/org/keycloak/services/scheduled/ScheduledTask.java
index e47f8b9..4e03152 100644
--- a/services/src/main/java/org/keycloak/services/scheduled/ScheduledTask.java
+++ b/services/src/main/java/org/keycloak/services/scheduled/ScheduledTask.java
@@ -1,13 +1,12 @@
package org.keycloak.services.scheduled;
import org.keycloak.models.KeycloakSession;
-import org.keycloak.provider.ProviderSession;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public interface ScheduledTask {
- public void run(KeycloakSession keycloakSession, ProviderSession providerSession);
+ public void run(KeycloakSession session);
}
diff --git a/services/src/main/java/org/keycloak/services/scheduled/ScheduledTaskRunner.java b/services/src/main/java/org/keycloak/services/scheduled/ScheduledTaskRunner.java
index 275b43b..f997d27 100644
--- a/services/src/main/java/org/keycloak/services/scheduled/ScheduledTaskRunner.java
+++ b/services/src/main/java/org/keycloak/services/scheduled/ScheduledTaskRunner.java
@@ -3,8 +3,6 @@ package org.keycloak.services.scheduled;
import org.jboss.resteasy.logging.Logger;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
@@ -13,31 +11,30 @@ public class ScheduledTaskRunner implements Runnable {
private static final Logger logger = Logger.getLogger(ScheduledTaskRunner.class);
- private final ProviderSessionFactory providerSessionFactory;
+ private final KeycloakSessionFactory sessionFactory;
private final ScheduledTask task;
- public ScheduledTaskRunner(ProviderSessionFactory providerSessionFactory, ScheduledTask task) {
- this.providerSessionFactory = providerSessionFactory;
+ public ScheduledTaskRunner(KeycloakSessionFactory sessionFactory, ScheduledTask task) {
+ this.sessionFactory = sessionFactory;
this.task = task;
}
@Override
public void run() {
- ProviderSession providerSession = providerSessionFactory.createSession();
- KeycloakSession keycloakSession = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = sessionFactory.create();
try {
- keycloakSession.getTransaction().begin();
- task.run(keycloakSession, providerSession);
- keycloakSession.getTransaction().commit();
+ session.getTransaction().begin();
+ task.run(session);
+ session.getTransaction().commit();
logger.debug("Executed scheduled task " + task.getClass().getSimpleName());
} catch (Throwable t) {
logger.error("Failed to run scheduled task " + task.getClass().getSimpleName(), t);
- keycloakSession.getTransaction().rollback();
+ session.getTransaction().rollback();
} finally {
try {
- providerSession.close();
+ session.close();
} catch (Throwable t) {
logger.error("Failed to close ProviderSession", t);
}
diff --git a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
index 8e4db51..e867087 100755
--- a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
+++ b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
@@ -31,10 +31,9 @@ import org.jboss.logging.Logger;
import org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer;
import org.jboss.resteasy.spi.ResteasyDeployment;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.services.filters.ClientConnectionFilter;
import org.keycloak.services.filters.KeycloakSessionServletFilter;
@@ -163,7 +162,7 @@ public class KeycloakServer {
private KeycloakServerConfig config;
- private ProviderSessionFactory providerSessionFactory;
+ private KeycloakSessionFactory sessionFactory;
private UndertowJaxrsServer server;
@@ -175,8 +174,8 @@ public class KeycloakServer {
this.config = config;
}
- public ProviderSessionFactory getProviderSessionFactory() {
- return providerSessionFactory;
+ public KeycloakSessionFactory getSessionFactory() {
+ return sessionFactory;
}
public UndertowJaxrsServer getServer() {
@@ -189,8 +188,7 @@ public class KeycloakServer {
}
public void importRealm(RealmRepresentation rep) {
- ProviderSession providerSession = providerSessionFactory.createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = sessionFactory.create();;
session.getTransaction().begin();
try {
@@ -213,13 +211,12 @@ public class KeycloakServer {
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
protected void setupDevConfig() {
- ProviderSession providerSession = providerSessionFactory.createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = sessionFactory.create();
session.getTransaction().begin();
try {
@@ -231,7 +228,7 @@ public class KeycloakServer {
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
@@ -263,7 +260,7 @@ public class KeycloakServer {
server.deploy(di);
- providerSessionFactory = ((KeycloakApplication) deployment.getApplication()).getProviderSessionFactory();
+ sessionFactory = ((KeycloakApplication) deployment.getApplication()).getSessionFactory();
setupDevConfig();
@@ -284,7 +281,7 @@ public class KeycloakServer {
}
public void stop() {
- providerSessionFactory.close();
+ sessionFactory.close();
server.stop();
info("Stopped Keycloak");
diff --git a/testsuite/integration/src/main/resources/META-INF/keycloak-server.json b/testsuite/integration/src/main/resources/META-INF/keycloak-server.json
index a1e1ec1..b51cee6 100755
--- a/testsuite/integration/src/main/resources/META-INF/keycloak-server.json
+++ b/testsuite/integration/src/main/resources/META-INF/keycloak-server.json
@@ -24,7 +24,7 @@
},
"modelCache": {
- "provider": "${keycloak.model.cache.provider:simple}"
+ "provider": "${keycloak.model.cache.provider:}"
},
"timer": {
@@ -40,7 +40,7 @@
}
},
- "login-forms": {
+ "login": {
"provider": "freemarker"
},
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/account/ProfileTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/account/ProfileTest.java
index af78795..ad78f4a 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/account/ProfileTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/account/ProfileTest.java
@@ -54,7 +54,7 @@ public class ProfileTest {
user.setAttribute("key1", "value1");
user.setAttribute("key2", "value2");
- ApplicationModel accountApp = appRealm.getApplicationNameMap().get(org.keycloak.models.Constants.ACCOUNT_MANAGEMENT_APP);
+ ApplicationModel accountApp = appRealm.getApplicationByName(org.keycloak.models.Constants.ACCOUNT_MANAGEMENT_APP);
UserModel user2 = appRealm.addUser("test-user-no-access@localhost");
user2.setEnabled(true);
@@ -66,7 +66,7 @@ public class ProfileTest {
creds.setValue("password");
user2.updateCredential(creds);
- ApplicationModel app = appRealm.getApplicationNameMap().get("test-app");
+ ApplicationModel app = appRealm.getApplicationByName("test-app");
app.addScopeMapping(accountApp.getRole(AccountRoles.VIEW_PROFILE));
app.addRedirectUri("http://localhost:8081/app/*");
app.addWebOrigin("http://localtest.me:8081");
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java
index 46e8b2f..b063436 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTest.java
@@ -34,8 +34,6 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.models.cache.CacheKeycloakSession;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.adapters.action.SessionStats;
import org.keycloak.representations.idm.RealmRepresentation;
@@ -94,9 +92,9 @@ public class AdapterTest {
};
private static String createToken() {
- ProviderSession providerSession = keycloakRule.startSession();
+ KeycloakSession session = keycloakRule.startSession();
try {
- RealmManager manager = new RealmManager(providerSession.getProvider(KeycloakSession.class));
+ RealmManager manager = new RealmManager(session);
RealmModel adminRealm = manager.getRealm(Config.getAdminRealm());
ApplicationModel adminConsole = adminRealm.getApplicationByName(Constants.ADMIN_CONSOLE_APPLICATION);
@@ -106,8 +104,7 @@ public class AdapterTest {
AccessToken token = tm.createClientAccessToken(null, adminRealm, adminConsole, admin, userSession);
return tm.encodeToken(adminRealm, token);
} finally {
- keycloakRule.stopSession(providerSession, true);
-
+ keycloakRule.stopSession(session, true);
}
}
@@ -192,12 +189,12 @@ public class AdapterTest {
System.out.println(pageSource);
Assert.assertTrue(pageSource.contains("Bill Burke") && pageSource.contains("Stian Thorgersen"));
- KeycloakSession keycloakSession = keycloakRule.startCacheSession();
- RealmModel realm = keycloakSession.getRealmByName("demo");
+ KeycloakSession session = keycloakRule.startSession();
+ RealmModel realm = session.getRealmByName("demo");
int originalIdle = realm.getSsoSessionIdleTimeout();
realm.setSsoSessionIdleTimeout(1);
- keycloakSession.getTransaction().commit();
- keycloakSession.close();
+ session.getTransaction().commit();
+ session.close();
Thread.sleep(2000);
@@ -206,11 +203,11 @@ public class AdapterTest {
driver.navigate().to("http://localhost:8081/product-portal");
Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
- keycloakSession = keycloakRule.startCacheSession();
- realm = keycloakSession.getRealmByName("demo");
+ session = keycloakRule.startSession();
+ realm = session.getRealmByName("demo");
realm.setSsoSessionIdleTimeout(originalIdle);
- keycloakSession.getTransaction().commit();
- keycloakSession.close();
+ session.getTransaction().commit();
+ session.close();
}
@Test
@@ -226,30 +223,30 @@ public class AdapterTest {
System.out.println(pageSource);
Assert.assertTrue(pageSource.contains("Bill Burke") && pageSource.contains("Stian Thorgersen"));
- KeycloakSession keycloakSession = keycloakRule.startCacheSession();
- RealmModel realm = keycloakSession.getRealmByName("demo");
+ KeycloakSession session = keycloakRule.startSession();
+ RealmModel realm = session.getRealmByName("demo");
int originalIdle = realm.getSsoSessionIdleTimeout();
realm.setSsoSessionIdleTimeout(1);
- keycloakSession.getTransaction().commit();
- keycloakSession.close();
+ session.getTransaction().commit();
+ session.close();
Thread.sleep(2000);
- keycloakSession = keycloakRule.startCacheSession();
- realm = keycloakSession.getRealmByName("demo");
+ session = keycloakRule.startSession();
+ realm = session.getRealmByName("demo");
realm.removeExpiredUserSessions();
- keycloakSession.getTransaction().commit();
- keycloakSession.close();
+ session.getTransaction().commit();
+ session.close();
// test SSO
driver.navigate().to("http://localhost:8081/product-portal");
Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
- keycloakSession = keycloakRule.startCacheSession();
- realm = keycloakSession.getRealmByName("demo");
+ session = keycloakRule.startSession();
+ realm = session.getRealmByName("demo");
realm.setSsoSessionIdleTimeout(originalIdle);
- keycloakSession.getTransaction().commit();
- keycloakSession.close();
+ session.getTransaction().commit();
+ session.close();
}
@Test
@@ -265,12 +262,12 @@ public class AdapterTest {
System.out.println(pageSource);
Assert.assertTrue(pageSource.contains("Bill Burke") && pageSource.contains("Stian Thorgersen"));
- KeycloakSession keycloakSession = keycloakRule.startCacheSession();
- RealmModel realm = keycloakSession.getRealmByName("demo");
+ KeycloakSession session = keycloakRule.startSession();
+ RealmModel realm = session.getRealmByName("demo");
int original = realm.getSsoSessionMaxLifespan();
realm.setSsoSessionMaxLifespan(1);
- keycloakSession.getTransaction().commit();
- keycloakSession.close();
+ session.getTransaction().commit();
+ session.close();
Thread.sleep(2000);
@@ -279,11 +276,11 @@ public class AdapterTest {
driver.navigate().to("http://localhost:8081/product-portal");
Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL));
- keycloakSession = keycloakRule.startCacheSession();
- realm = keycloakSession.getRealmByName("demo");
+ session = keycloakRule.startSession();
+ realm = session.getRealmByName("demo");
realm.setSsoSessionMaxLifespan(original);
- keycloakSession.getTransaction().commit();
- keycloakSession.close();
+ session.getTransaction().commit();
+ session.close();
}
/**
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/AssertEvents.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/AssertEvents.java
index 1ca02fe..c51e89e 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/AssertEvents.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/AssertEvents.java
@@ -14,11 +14,11 @@ import org.keycloak.audit.Details;
import org.keycloak.audit.Event;
import org.keycloak.audit.EventType;
import org.keycloak.models.ClientModel;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.utils.KeycloakModelUtils;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.idm.UserRepresentation;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.testsuite.rule.KeycloakRule;
@@ -173,7 +173,7 @@ public class AssertEvents implements TestRule, AuditListenerFactory {
}
@Override
- public AuditListener create(ProviderSession providerSession) {
+ public AuditListener create(KeycloakSession session) {
return new AuditListener() {
@Override
public void onEvent(Event event) {
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/AuthProvidersIntegrationTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/AuthProvidersIntegrationTest.java
index 461b8a8..e47c714 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/AuthProvidersIntegrationTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/AuthProvidersIntegrationTest.java
@@ -62,7 +62,7 @@ public class AuthProvidersIntegrationTest {
// Configure LDAP
ldapRule.getEmbeddedServer().setupLdapInRealm(appRealm);
- LDAPTestUtils.setLdapPassword(providerSession, appRealm, "johnkeycloak", "password");
+ LDAPTestUtils.setLdapPassword(session, appRealm, "johnkeycloak", "password");
}
});
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java
index a98f860..43f386e 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/oauth/RefreshTokenTest.java
@@ -32,7 +32,6 @@ import org.keycloak.audit.Event;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.RefreshToken;
import org.keycloak.testsuite.AssertEvents;
@@ -183,7 +182,7 @@ public class RefreshTokenTest {
String refreshId = oauth.verifyRefreshToken(tokenResponse.getRefreshToken()).getId();
- KeycloakSession session = keycloakRule.startCacheSession();
+ KeycloakSession session = keycloakRule.startSession();
RealmModel realm = session.getRealmByName("test");
UserSessionModel userSession = realm.getUserSession(sessionId);
int last = userSession.getLastSessionRefresh();
@@ -199,7 +198,7 @@ public class RefreshTokenTest {
Assert.assertEquals(200, tokenResponse.getStatusCode());
- session = keycloakRule.startCacheSession();
+ session = keycloakRule.startSession();
realm = session.getRealmByName("test");
userSession = realm.getUserSession(sessionId);
int next = userSession.getLastSessionRefresh();
@@ -211,7 +210,7 @@ public class RefreshTokenTest {
- session = keycloakRule.startCacheSession();
+ session = keycloakRule.startSession();
realm = session.getRealmByName("test");
int lastAccessTokenLifespan = realm.getAccessTokenLifespan();
realm.setAccessTokenLifespan(100000);
@@ -221,7 +220,7 @@ public class RefreshTokenTest {
Thread.sleep(2000);
tokenResponse = oauth.doRefreshTokenRequest(tokenResponse.getRefreshToken(), "password");
- session = keycloakRule.startCacheSession();
+ session = keycloakRule.startSession();
realm = session.getRealmByName("test");
userSession = realm.getUserSession(sessionId);
next = userSession.getLastSessionRefresh();
@@ -231,7 +230,7 @@ public class RefreshTokenTest {
// lastSEssionRefresh should be updated because access code lifespan is higher than sso idle timeout
Assert.assertThat(next, allOf(greaterThan(last), lessThan(last + 6)));
- session = keycloakRule.startCacheSession();
+ session = keycloakRule.startSession();
realm = session.getRealmByName("test");
int originalIdle = realm.getSsoSessionIdleTimeout();
realm.setSsoSessionIdleTimeout(1);
@@ -249,7 +248,7 @@ public class RefreshTokenTest {
events.expectRefresh(refreshId, sessionId).error(Errors.INVALID_TOKEN);
- session = keycloakRule.startCacheSession();
+ session = keycloakRule.startSession();
realm = session.getRealmByName("test");
realm.setSsoSessionIdleTimeout(originalIdle);
realm.setAccessTokenLifespan(lastAccessTokenLifespan);
@@ -274,7 +273,7 @@ public class RefreshTokenTest {
String refreshId = oauth.verifyRefreshToken(tokenResponse.getRefreshToken()).getId();
- KeycloakSession session = keycloakRule.startCacheSession();
+ KeycloakSession session = keycloakRule.startSession();
RealmModel realm = session.getRealmByName("test");
int maxLifespan = realm.getSsoSessionMaxLifespan();
realm.setSsoSessionMaxLifespan(1);
@@ -289,7 +288,7 @@ public class RefreshTokenTest {
assertNull(tokenResponse.getAccessToken());
assertNull(tokenResponse.getRefreshToken());
- session = keycloakRule.startCacheSession();
+ session = keycloakRule.startSession();
realm = session.getRealmByName("test");
realm.setSsoSessionMaxLifespan(maxLifespan);
session.getTransaction().commit();
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/AbstractKeycloakRule.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/AbstractKeycloakRule.java
index a97b397..2db2269 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/AbstractKeycloakRule.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/AbstractKeycloakRule.java
@@ -10,8 +10,6 @@ import org.keycloak.Config;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
-import org.keycloak.models.cache.CacheKeycloakSession;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.representations.idm.UserRepresentation;
import org.keycloak.services.managers.ModelToRepresentation;
@@ -39,29 +37,28 @@ public abstract class AbstractKeycloakRule extends ExternalResource {
}
public UserRepresentation getUser(String realm, String name) {
- ProviderSession providerSession = server.getProviderSessionFactory().createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = server.getSessionFactory().create();
+ session.getTransaction().begin();
try {
UserModel user = session.getRealmByName(realm).getUser(name);
return user != null ? ModelToRepresentation.toRepresentation(user) : null;
} finally {
- providerSession.close();
+ session.close();
}
}
public UserRepresentation getUserById(String realm, String id) {
- ProviderSession providerSession = server.getProviderSessionFactory().createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = server.getSessionFactory().create();
+ session.getTransaction().begin();
try {
return ModelToRepresentation.toRepresentation(session.getRealmByName(realm).getUserById(id));
} finally {
- providerSession.close();
+ session.close();
}
}
protected void setupKeycloak() {
- ProviderSession providerSession = server.getProviderSessionFactory().createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = server.getSessionFactory().create();
session.getTransaction().begin();
try {
@@ -73,7 +70,7 @@ public abstract class AbstractKeycloakRule extends ExternalResource {
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
@@ -137,23 +134,15 @@ public abstract class AbstractKeycloakRule extends ExternalResource {
return JsonSerialization.readValue(bytes, RealmRepresentation.class);
}
- public ProviderSession startSession() {
- ProviderSession providerSession = server.getProviderSessionFactory().createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
- session.getTransaction().begin();
- return providerSession;
- }
-
- public KeycloakSession startCacheSession() {
- ProviderSession providerSession = server.getProviderSessionFactory().createSession();
- KeycloakSession session = providerSession.getProvider(CacheKeycloakSession.class);
+ public KeycloakSession startSession() {
+ KeycloakSession session = server.getSessionFactory().create();
session.getTransaction().begin();
return session;
}
- public void stopSession(ProviderSession session, boolean commit) {
+ public void stopSession(KeycloakSession session, boolean commit) {
if (commit) {
- session.getProvider(KeycloakSession.class).getTransaction().commit();
+ session.getTransaction().commit();
}
session.close();
}
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/KeycloakRule.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/KeycloakRule.java
index 4cdb096..d502c6e 100755
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/KeycloakRule.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/rule/KeycloakRule.java
@@ -25,8 +25,6 @@ import org.keycloak.Config;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserSessionModel;
-import org.keycloak.models.cache.CacheKeycloakSession;
-import org.keycloak.provider.ProviderSession;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.testsuite.ApplicationServlet;
@@ -62,8 +60,7 @@ public class KeycloakRule extends AbstractKeycloakRule {
}
public void configure(KeycloakSetup configurer) {
- ProviderSession providerSession = server.getProviderSessionFactory().createSession();
- KeycloakSession session = providerSession.getProvider(KeycloakSession.class);
+ KeycloakSession session = server.getSessionFactory().create();
session.getTransaction().begin();
try {
@@ -72,18 +69,17 @@ public class KeycloakRule extends AbstractKeycloakRule {
RealmModel adminstrationRealm = manager.getRealm(Config.getAdminRealm());
RealmModel appRealm = manager.getRealm("test");
- configurer.providerSession = providerSession;
+ configurer.session = session;
configurer.config(manager, adminstrationRealm, appRealm);
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
public void update(KeycloakSetup configurer) {
- ProviderSession providerSession = server.getProviderSessionFactory().createSession();
- KeycloakSession session = providerSession.getProvider(CacheKeycloakSession.class);
+ KeycloakSession session = server.getSessionFactory().create();
session.getTransaction().begin();
try {
@@ -92,28 +88,28 @@ public class KeycloakRule extends AbstractKeycloakRule {
RealmModel adminstrationRealm = manager.getRealm(Config.getAdminRealm());
RealmModel appRealm = manager.getRealm("test");
- configurer.providerSession = providerSession;
+ configurer.session = session;
configurer.config(manager, adminstrationRealm, appRealm);
session.getTransaction().commit();
} finally {
- providerSession.close();
+ session.close();
}
}
public void removeUserSession(String sessionId) {
- ProviderSession providerSession = startSession();
- RealmModel realm = providerSession.getProvider(KeycloakSession.class).getRealm("test");
- UserSessionModel session = realm.getUserSession(sessionId);
- assertNotNull(session);
- realm.removeUserSession(session);
- stopSession(providerSession, true);
+ KeycloakSession session = startSession();
+ RealmModel realm = session.getRealm("test");
+ UserSessionModel userSession = realm.getUserSession(sessionId);
+ assertNotNull(userSession);
+ realm.removeUserSession(userSession);
+ stopSession(session, true);
}
public abstract static class KeycloakSetup {
- protected ProviderSession providerSession;
+ protected KeycloakSession session;
public abstract void config(RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm);
diff --git a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/BaseJMeterPerformanceTest.java b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/BaseJMeterPerformanceTest.java
index c78cb61..93939c1 100755
--- a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/BaseJMeterPerformanceTest.java
+++ b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/BaseJMeterPerformanceTest.java
@@ -6,8 +6,6 @@ import org.apache.jmeter.samplers.SampleResult;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.KeycloakTransaction;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.services.resources.KeycloakApplication;
import java.util.concurrent.Callable;
@@ -20,18 +18,18 @@ import java.util.concurrent.atomic.AtomicInteger;
public class BaseJMeterPerformanceTest extends AbstractJavaSamplerClient {
- private static FutureTask<ProviderSessionFactory> factoryProvider = new FutureTask<ProviderSessionFactory>(new Callable() {
+ private static FutureTask<KeycloakSessionFactory> factoryProvider = new FutureTask<KeycloakSessionFactory>(new Callable() {
@Override
- public ProviderSessionFactory call() throws Exception {
- return KeycloakApplication.createProviderSessionFactory();
+ public KeycloakSessionFactory call() throws Exception {
+ return KeycloakApplication.createSessionFactory();
}
});
private static AtomicInteger counter = new AtomicInteger();
- private ProviderSessionFactory factory;
- // private KeycloakSession identitySession;
+ private KeycloakSessionFactory factory;
+ // private KeycloakSession session;
private Worker worker;
private boolean setupSuccess = false;
@@ -44,14 +42,13 @@ public class BaseJMeterPerformanceTest extends AbstractJavaSamplerClient {
worker = getWorker();
factory = getFactory();
- ProviderSession providerSession = factory.createSession();
- KeycloakSession identitySession = providerSession.getProvider(KeycloakSession.class);
- KeycloakTransaction transaction = identitySession.getTransaction();
+ KeycloakSession session = factory.create();
+ KeycloakTransaction transaction = session.getTransaction();
transaction.begin();
int workerId = counter.getAndIncrement();
try {
- worker.setup(workerId, identitySession);
+ worker.setup(workerId, session);
setupSuccess = true;
} finally {
if (setupSuccess) {
@@ -59,11 +56,11 @@ public class BaseJMeterPerformanceTest extends AbstractJavaSamplerClient {
} else {
transaction.rollback();
}
- providerSession.close();
+ session.close();
}
}
- private static ProviderSessionFactory getFactory() {
+ private static KeycloakSessionFactory getFactory() {
factoryProvider.run();
try {
return factoryProvider.get();
@@ -101,13 +98,12 @@ public class BaseJMeterPerformanceTest extends AbstractJavaSamplerClient {
return result;
}
- ProviderSession providerSession = factory.createSession();
- KeycloakSession identitySession = providerSession.getProvider(KeycloakSession.class);
- KeycloakTransaction transaction = identitySession.getTransaction();
+ KeycloakSession session = factory.create();
+ KeycloakTransaction transaction = session.getTransaction();
try {
transaction.begin();
- worker.run(result, identitySession);
+ worker.run(result, session);
result.setResponseCodeOK();
transaction.commit();
@@ -118,7 +114,7 @@ public class BaseJMeterPerformanceTest extends AbstractJavaSamplerClient {
} finally {
result.sampleEnd();
result.setSuccessful(true);
- providerSession.close();
+ session.close();
}
return result;
diff --git a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java
index a51c06b..8deadb7 100755
--- a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java
+++ b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateRealmsWorker.java
@@ -30,7 +30,7 @@ public class CreateRealmsWorker implements Worker {
private boolean createRequiredCredentials;
@Override
- public void setup(int workerId, KeycloakSession identitySession) {
+ public void setup(int workerId, KeycloakSession session) {
offset = PerfTestUtils.readSystemProperty("keycloak.perf.createRealms.realms.offset", Integer.class);
appsPerRealm = PerfTestUtils.readSystemProperty("keycloak.perf.createRealms.appsPerRealm", Integer.class);
rolesPerRealm = PerfTestUtils.readSystemProperty("keycloak.perf.createRealms.rolesPerRealm", Integer.class);
@@ -51,10 +51,10 @@ public class CreateRealmsWorker implements Worker {
}
@Override
- public void run(SampleResult result, KeycloakSession identitySession) {
+ public void run(SampleResult result, KeycloakSession session) {
int realmNumber = realmCounter.getAndIncrement();
String realmName = PerfTestUtils.getRealmName(realmNumber);
- RealmManager realmManager = new RealmManager(identitySession);
+ RealmManager realmManager = new RealmManager(session);
RealmModel realm = realmManager.createRealm(realmName, realmName);
// Add roles
diff --git a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateUsersWorker.java b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateUsersWorker.java
index ae7795d..ce2f08a 100755
--- a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateUsersWorker.java
+++ b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/CreateUsersWorker.java
@@ -36,7 +36,7 @@ public class CreateUsersWorker implements Worker {
private int socialLinksPerUserCount;
@Override
- public void setup(int workerId, KeycloakSession identitySession) {
+ public void setup(int workerId, KeycloakSession session) {
realmsOffset = PerfTestUtils.readSystemProperty("keycloak.perf.createUsers.realms.offset", Integer.class);
addBasicUserAttributes = PerfTestUtils.readSystemProperty("keycloak.perf.createUsers.addBasicUserAttributes", Boolean.class);
addDefaultRoles = PerfTestUtils.readSystemProperty("keycloak.perf.createUsers.addDefaultRoles", Boolean.class);
@@ -57,9 +57,9 @@ public class CreateUsersWorker implements Worker {
}
@Override
- public void run(SampleResult result, KeycloakSession identitySession) {
+ public void run(SampleResult result, KeycloakSession session) {
// We need to obtain realm first
- RealmModel realm = identitySession.getRealm(realmId);
+ RealmModel realm = session.getRealm(realmId);
if (realm == null) {
throw new IllegalStateException("Realm '" + realmId + "' not found");
}
diff --git a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/ReadUsersWorker.java b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/ReadUsersWorker.java
index 1eb1044..a06a2c2 100755
--- a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/ReadUsersWorker.java
+++ b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/ReadUsersWorker.java
@@ -39,7 +39,7 @@ public class ReadUsersWorker implements Worker {
private int iterationNumber;
@Override
- public void setup(int workerId, KeycloakSession identitySession) {
+ public void setup(int workerId, KeycloakSession session) {
realmsOffset = PerfTestUtils.readSystemProperty("keycloak.perf.readUsers.realms.offset", Integer.class);
readUsersPerIteration = PerfTestUtils.readSystemProperty("keycloak.perf.readUsers.readUsersPerIteration", Integer.class);
countOfUsersPerRealm = PerfTestUtils.readSystemProperty("keycloak.perf.readUsers.countOfUsersPerRealm", Integer.class);
@@ -66,9 +66,9 @@ public class ReadUsersWorker implements Worker {
}
@Override
- public void run(SampleResult result, KeycloakSession identitySession) {
+ public void run(SampleResult result, KeycloakSession session) {
// We need to obtain realm first
- RealmModel realm = identitySession.getRealm(realmId);
+ RealmModel realm = session.getRealm(realmId);
if (realm == null) {
throw new IllegalStateException("Realm '" + realmId + "' not found");
}
diff --git a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/RemoveUsersWorker.java b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/RemoveUsersWorker.java
index b13b7d1..20f0fd6 100755
--- a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/RemoveUsersWorker.java
+++ b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/RemoveUsersWorker.java
@@ -27,12 +27,12 @@ public class RemoveUsersWorker implements Worker {
private int realmsOffset;
@Override
- public void setup(int workerId, KeycloakSession identitySession) {
+ public void setup(int workerId, KeycloakSession session) {
realmsOffset = PerfTestUtils.readSystemProperty("keycloak.perf.removeUsers.realms.offset", Integer.class);
int realmNumber = realmsOffset + workerId;
String realmId = PerfTestUtils.getRealmName(realmNumber);
- realm = identitySession.getRealm(realmId);
+ realm = session.getRealm(realmId);
if (realm == null) {
throw new IllegalStateException("Realm '" + realmId + "' not found");
}
@@ -41,7 +41,7 @@ public class RemoveUsersWorker implements Worker {
}
@Override
- public void run(SampleResult result, KeycloakSession identitySession) {
+ public void run(SampleResult result, KeycloakSession session) {
throw new IllegalStateException("Not yet supported");
/*
int userNumber = ++userCounterInRealm;
diff --git a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/Worker.java b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/Worker.java
index 69732cf..e5b8061 100644
--- a/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/Worker.java
+++ b/testsuite/performance/src/test/java/org/keycloak/testsuite/performance/Worker.java
@@ -8,9 +8,9 @@ import org.keycloak.models.KeycloakSession;
*/
public interface Worker {
- void setup(int workerId, KeycloakSession identitySession);
+ void setup(int workerId, KeycloakSession session);
- void run(SampleResult result, KeycloakSession identitySession);
+ void run(SampleResult result, KeycloakSession session);
void tearDown();
diff --git a/testsuite/tools/src/main/java/org/keycloak/test/tools/jobs/CreateUsers.java b/testsuite/tools/src/main/java/org/keycloak/test/tools/jobs/CreateUsers.java
index 2191e6c..87a932a 100644
--- a/testsuite/tools/src/main/java/org/keycloak/test/tools/jobs/CreateUsers.java
+++ b/testsuite/tools/src/main/java/org/keycloak/test/tools/jobs/CreateUsers.java
@@ -1,12 +1,10 @@
package org.keycloak.test.tools.jobs;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserModel;
-import org.keycloak.models.cache.CacheKeycloakSession;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
import org.keycloak.services.managers.RealmManager;
import org.keycloak.test.tools.PerfTools;
@@ -19,16 +17,16 @@ import java.io.StringWriter;
public class CreateUsers implements Runnable {
private PerfTools.Job job;
- private final ProviderSessionFactory providerSessionFactory;
+ private final KeycloakSessionFactory sessionFactory;
private final String realmName;
private int start;
private int count;
private String prefix;
private String[] roles;
- public CreateUsers(PerfTools.Job job, ProviderSessionFactory providerSessionFactory, String realmName, int start, int count, String prefix, String[] roles) {
+ public CreateUsers(PerfTools.Job job, KeycloakSessionFactory sessionFactory, String realmName, int start, int count, String prefix, String[] roles) {
this.job = job;
- this.providerSessionFactory = providerSessionFactory;
+ this.sessionFactory = sessionFactory;
this.realmName = realmName;
this.start = start;
this.count = count;
@@ -40,10 +38,8 @@ public class CreateUsers implements Runnable {
public void run() {
job.start();
- ProviderSession providerSession = providerSessionFactory.createSession();
+ KeycloakSession session = sessionFactory.create();
try {
- KeycloakSession session = providerSession.getProvider(CacheKeycloakSession.class);
-
session.getTransaction().begin();
RealmModel realm = new RealmManager(session).getRealmByName(realmName);
@@ -74,7 +70,7 @@ public class CreateUsers implements Runnable {
t.printStackTrace(new PrintWriter(sw));
job.setError(sw.toString());
} finally {
- providerSession.close();
+ session.close();
}
}
diff --git a/testsuite/tools/src/main/java/org/keycloak/test/tools/KeycloakTestApplication.java b/testsuite/tools/src/main/java/org/keycloak/test/tools/KeycloakTestApplication.java
index b8dcf4e..52e7811 100644
--- a/testsuite/tools/src/main/java/org/keycloak/test/tools/KeycloakTestApplication.java
+++ b/testsuite/tools/src/main/java/org/keycloak/test/tools/KeycloakTestApplication.java
@@ -1,7 +1,7 @@
package org.keycloak.test.tools;
import org.jboss.resteasy.core.Dispatcher;
-import org.keycloak.provider.ProviderSessionFactory;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.services.resources.KeycloakApplication;
import javax.servlet.ServletContext;
@@ -15,18 +15,18 @@ import java.util.Set;
*/
public class KeycloakTestApplication extends Application {
- protected ProviderSessionFactory providerSessionFactory;
+ protected KeycloakSessionFactory sessionFactory;
protected Set<Class<?>> classes = new HashSet<Class<?>>();
protected Set<Object> singletons = new HashSet<Object>();
public KeycloakTestApplication(@Context ServletContext context, @Context Dispatcher dispatcher) {
KeycloakApplication.loadConfig();
- this.providerSessionFactory = KeycloakApplication.createProviderSessionFactory();
+ this.sessionFactory = KeycloakApplication.createSessionFactory();
- context.setAttribute(ProviderSessionFactory.class.getName(), this.providerSessionFactory);
+ context.setAttribute(KeycloakSessionFactory.class.getName(), this.sessionFactory);
- singletons.add(new PerfTools(providerSessionFactory));
+ singletons.add(new PerfTools(sessionFactory));
}
@Override
diff --git a/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java b/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java
index 318f7ea..638e064 100644
--- a/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java
+++ b/testsuite/tools/src/main/java/org/keycloak/test/tools/PerfTools.java
@@ -3,11 +3,9 @@ package org.keycloak.test.tools;
import org.keycloak.exportimport.ExportImportConfig;
import org.keycloak.exportimport.ExportImportProvider;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
-import org.keycloak.provider.ProviderSession;
-import org.keycloak.provider.ProviderSessionFactory;
-import org.keycloak.services.managers.RealmManager;
import org.keycloak.test.tools.jobs.CreateUsers;
import org.keycloak.util.ProviderLoader;
@@ -24,7 +22,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@@ -36,15 +33,15 @@ public class PerfTools {
private ExecutorService executor = Executors.newFixedThreadPool(20);
- private final ProviderSessionFactory providerSessionFactory;
+ private final KeycloakSessionFactory sessionFactory;
@Context
private KeycloakSession session;
private List<Job> jobs = new LinkedList<Job>();
- public PerfTools(ProviderSessionFactory providerSessionFactory) {
- this.providerSessionFactory = providerSessionFactory;
+ public PerfTools(KeycloakSessionFactory sessionFactory) {
+ this.sessionFactory = sessionFactory;
}
@GET
@@ -89,7 +86,7 @@ public class PerfTools {
for (int s = start; s < (start + count); s += batch) {
int c = s + batch <= (start + count) ? batch : (start + count) - s;
- executor.submit(new CreateUsers(job, providerSessionFactory, realmName, s, c, prefix, rolesArray));
+ executor.submit(new CreateUsers(job, sessionFactory, realmName, s, c, prefix, rolesArray));
}
return Response.noContent().build();
@@ -115,7 +112,7 @@ public class PerfTools {
if (providers.hasNext()) {
ExportImportProvider exportImport = providers.next();
- exportImport.checkExportImport(providerSessionFactory);
+ exportImport.checkExportImport(sessionFactory);
} else {
throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
}
diff --git a/testsuite/tools/src/main/resources/META-INF/keycloak-server.json b/testsuite/tools/src/main/resources/META-INF/keycloak-server.json
index fb726ca..7e3f246 100755
--- a/testsuite/tools/src/main/resources/META-INF/keycloak-server.json
+++ b/testsuite/tools/src/main/resources/META-INF/keycloak-server.json
@@ -15,7 +15,7 @@
},
"modelCache": {
- "provider": "${keycloak.model.cache.provider:none}"
+ "provider": "${keycloak.model.cache.provider:}"
},
"timer": {
@@ -31,7 +31,7 @@
}
},
- "login-forms": {
+ "login": {
"provider": "freemarker"
},
timer/api/pom.xml 6(+6 -0)
diff --git a/timer/api/pom.xml b/timer/api/pom.xml
index 51f78dc..68d991d 100755
--- a/timer/api/pom.xml
+++ b/timer/api/pom.xml
@@ -18,6 +18,12 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
timer/basic/pom.xml 6(+6 -0)
diff --git a/timer/basic/pom.xml b/timer/basic/pom.xml
index 72b203c..34b0c0f 100755
--- a/timer/basic/pom.xml
+++ b/timer/basic/pom.xml
@@ -21,6 +21,12 @@
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
+ <artifactId>keycloak-model-api</artifactId>
+ <version>${project.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.keycloak</groupId>
<artifactId>keycloak-timer-api</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
diff --git a/timer/basic/src/main/java/org/keycloak/timer/basic/BasicTimerProviderFactory.java b/timer/basic/src/main/java/org/keycloak/timer/basic/BasicTimerProviderFactory.java
index 3454d87..b0e5063 100644
--- a/timer/basic/src/main/java/org/keycloak/timer/basic/BasicTimerProviderFactory.java
+++ b/timer/basic/src/main/java/org/keycloak/timer/basic/BasicTimerProviderFactory.java
@@ -1,7 +1,7 @@
package org.keycloak.timer.basic;
import org.keycloak.Config;
-import org.keycloak.provider.ProviderSession;
+import org.keycloak.models.KeycloakSession;
import org.keycloak.timer.TimerProvider;
import org.keycloak.timer.TimerProviderFactory;
@@ -15,7 +15,7 @@ public class BasicTimerProviderFactory implements TimerProviderFactory {
private Timer timer;
@Override
- public TimerProvider create(ProviderSession providerSession) {
+ public TimerProvider create(KeycloakSession session) {
return new BasicTimerProvider(timer);
}