Refactor to prepar for splitting model

This commit is contained in:
Stian Thorgersen committed 2014-06-27 09:39:06 +01:00
1 parent 6291936ce9
commit 34a1923d18
140 files changed
+1033 -934

No files matched your search

@@ -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;
}
@@ -1,13 +0,0 @@
package org.keycloak.models.cache;
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 CacheKeycloakSessionFactory extends ProviderFactory<CacheKeycloakSession> {
CacheKeycloakSession create(ProviderSession providerSession);
void close();
}
@@ -1,13 +1,13 @@
package org.keycloak.models.cache;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.ModelProvider;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public interface CacheKeycloakSession extends KeycloakSession {
KeycloakSession getDelegate();
public interface CacheModelProvider extends ModelProvider {
ModelProvider getDelegate();
void registerRealmInvalidation(String id);
@@ -0,0 +1,11 @@
package org.keycloak.models.cache;
import org.keycloak.provider.ProviderFactory;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public interface CacheModelProviderFactory extends ProviderFactory<CacheModelProvider> {
}
@@ -8,7 +8,7 @@ import org.keycloak.provider.Spi;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class CacheKeycloakSessionSpi implements Spi {
public class CacheModelProviderSpi implements Spi {
@Override
public String getName() {
@@ -17,11 +17,11 @@ public class CacheKeycloakSessionSpi implements Spi {
@Override
public Class<? extends Provider> getProviderClass() {
return CacheKeycloakSession.class;
return CacheModelProvider.class;
}
@Override
public Class<? extends ProviderFactory> getProviderFactoryClass() {
return CacheKeycloakSessionFactory.class;
return CacheModelProviderFactory.class;
}
}
@@ -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;
@@ -4,6 +4,7 @@ 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;
@@ -18,7 +19,6 @@ 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.cache.entities.CachedUser;
import org.keycloak.provider.ProviderSession;
import java.util.HashMap;
import java.util.HashSet;
@@ -30,10 +30,10 @@ import java.util.Set;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class DefaultCacheKeycloakSession implements CacheKeycloakSession {
public class DefaultCacheModelProvider implements CacheModelProvider {
protected KeycloakCache cache;
protected ProviderSession providerSession;
protected KeycloakSession sessionDelegate;
protected KeycloakSession session;
protected ModelProvider delegate;
protected KeycloakTransaction transactionDelegate;
protected boolean transactionActive;
protected boolean setRollbackOnly;
@@ -51,24 +51,24 @@ public class DefaultCacheKeycloakSession implements CacheKeycloakSession {
protected boolean clearAll;
public DefaultCacheKeycloakSession(KeycloakCache cache, ProviderSession providerSession) {
public DefaultCacheModelProvider(KeycloakCache cache, KeycloakSession session) {
this.cache = cache;
this.providerSession = providerSession;
this.session = session;
}
@Override
public KeycloakSession getDelegate() {
public ModelProvider getDelegate() {
if (!transactionActive) throw new IllegalStateException("Cannot access delegate without a transaction");
if (sessionDelegate != null) return sessionDelegate;
sessionDelegate = providerSession.getProvider(KeycloakSession.class);
transactionDelegate = sessionDelegate.getTransaction();
if (delegate != null) return delegate;
delegate = session.getProvider(ModelProvider.class);
transactionDelegate = delegate.getTransaction();
if (!transactionDelegate.isActive()) {
transactionDelegate.begin();
if (setRollbackOnly) {
transactionDelegate.setRollbackOnly();
}
}
return sessionDelegate;
return delegate;
}
@Override
@@ -125,9 +125,9 @@ public class DefaultCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void commit() {
if (sessionDelegate == null) return;
if (delegate == null) return;
try {
sessionDelegate.getTransaction().commit();
delegate.getTransaction().commit();
if (clearAll) {
cache.clear();
}
@@ -139,9 +139,9 @@ public class DefaultCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void rollback() {
setRollbackOnly = true;
if (sessionDelegate == null) return;
if (delegate == null) return;
try {
sessionDelegate.getTransaction().rollback();
delegate.getTransaction().rollback();
} finally {
runInvalidations();
}
@@ -150,8 +150,8 @@ public class DefaultCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void setRollbackOnly() {
setRollbackOnly = true;
if (sessionDelegate == null) return;
sessionDelegate.getTransaction().setRollbackOnly();
if (delegate == null) return;
delegate.getTransaction().setRollbackOnly();
setRollbackOnly = true;
}
@@ -300,7 +300,7 @@ public class DefaultCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void close() {
if (sessionDelegate != null) sessionDelegate.close();
if (delegate != null) delegate.close();
}
@Override
@@ -4,6 +4,7 @@ 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;
@@ -11,16 +12,7 @@ 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.entities.CachedApplication;
import org.keycloak.models.cache.entities.CachedApplicationRole;
import org.keycloak.models.cache.entities.CachedOAuthClient;
import org.keycloak.models.cache.entities.CachedRealm;
import org.keycloak.models.cache.entities.CachedRealmRole;
import org.keycloak.models.cache.entities.CachedRole;
import org.keycloak.provider.ProviderSession;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -29,30 +21,30 @@ import java.util.Set;
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class NoCacheKeycloakSession implements CacheKeycloakSession {
protected ProviderSession providerSession;
protected KeycloakSession sessionDelegate;
public class NoCacheModelProvider implements CacheModelProvider {
protected KeycloakSession session;
protected ModelProvider delegate;
protected KeycloakTransaction transactionDelegate;
protected boolean transactionActive;
protected boolean setRollbackOnly;
public NoCacheKeycloakSession(ProviderSession providerSession) {
this.providerSession = providerSession;
public NoCacheModelProvider(KeycloakSession session) {
this.session = session;
}
@Override
public KeycloakSession getDelegate() {
public ModelProvider getDelegate() {
if (!transactionActive) throw new IllegalStateException("Cannot access delegate without a transaction");
if (sessionDelegate != null) return sessionDelegate;
sessionDelegate = providerSession.getProvider(KeycloakSession.class);
transactionDelegate = sessionDelegate.getTransaction();
if (delegate != null) return delegate;
delegate = session.getProvider(ModelProvider.class);
transactionDelegate = delegate.getTransaction();
if (!transactionDelegate.isActive()) {
transactionDelegate.begin();
if (setRollbackOnly) {
transactionDelegate.setRollbackOnly();
}
}
return sessionDelegate;
return delegate;
}
@Override
@@ -81,9 +73,9 @@ public class NoCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void commit() {
if (sessionDelegate == null) return;
if (delegate == null) return;
try {
sessionDelegate.getTransaction().commit();
delegate.getTransaction().commit();
} finally {
}
}
@@ -91,9 +83,9 @@ public class NoCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void rollback() {
setRollbackOnly = true;
if (sessionDelegate == null) return;
if (delegate == null) return;
try {
sessionDelegate.getTransaction().rollback();
delegate.getTransaction().rollback();
} finally {
}
}
@@ -101,8 +93,8 @@ public class NoCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void setRollbackOnly() {
setRollbackOnly = true;
if (sessionDelegate == null) return;
sessionDelegate.getTransaction().setRollbackOnly();
if (delegate == null) return;
delegate.getTransaction().setRollbackOnly();
setRollbackOnly = true;
}
@@ -171,7 +163,7 @@ public class NoCacheKeycloakSession implements CacheKeycloakSession {
@Override
public void close() {
if (sessionDelegate != null) sessionDelegate.close();
if (delegate != null) delegate.close();
}
@Override
@@ -1,16 +1,16 @@
package org.keycloak.models.cache;
import org.keycloak.Config;
import org.keycloak.provider.ProviderSession;
import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class NoCacheKeycloakSessionFactory implements CacheKeycloakSessionFactory {
public class NoCacheModelProviderFactory implements CacheModelProviderFactory {
@Override
public CacheKeycloakSession create(ProviderSession providerSession) {
return new NoCacheKeycloakSession(providerSession);
public CacheModelProvider create(KeycloakSession session) {
return new NoCacheModelProvider(session);
}
@Override
@@ -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;
}
@@ -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;
}
@@ -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;
@@ -1,18 +1,18 @@
package org.keycloak.models.cache;
import org.keycloak.Config;
import org.keycloak.provider.ProviderSession;
import org.keycloak.models.KeycloakSession;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class SimpleCacheKeycloakSessionFactory implements CacheKeycloakSessionFactory {
public class SimpleCacheModelProviderFactory implements CacheModelProviderFactory {
protected KeycloakCache cache = new SimpleCache();
@Override
public CacheKeycloakSession create(ProviderSession providerSession) {
return new DefaultCacheKeycloakSession(cache, providerSession);
public CacheModelProvider create(KeycloakSession session) {
return new DefaultCacheModelProvider(cache, session);
}
@Override
@@ -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;
@@ -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();
@@ -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();
@@ -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);
}
@@ -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();
@@ -1,2 +0,0 @@
org.keycloak.models.cache.SimpleCacheKeycloakSessionFactory
org.keycloak.models.cache.NoCacheKeycloakSessionFactory
@@ -0,0 +1,2 @@
org.keycloak.models.cache.SimpleCacheModelProviderFactory
org.keycloak.models.cache.NoCacheModelProviderFactory
@@ -1 +1 @@
org.keycloak.models.cache.CacheKeycloakSessionSpi
org.keycloak.models.cache.CacheModelProviderSpi