keycloak-aplcache

Merge pull request #4137 from pedroigor/master Caching

5/12/2017 11:09:44 AM

Details

diff --git a/adapters/oidc/wildfly-elytron/src/main/java/org/keycloak/adapters/elytron/ElytronSessionTokenStore.java b/adapters/oidc/wildfly-elytron/src/main/java/org/keycloak/adapters/elytron/ElytronSessionTokenStore.java
index 385a8a6..eace514 100644
--- a/adapters/oidc/wildfly-elytron/src/main/java/org/keycloak/adapters/elytron/ElytronSessionTokenStore.java
+++ b/adapters/oidc/wildfly-elytron/src/main/java/org/keycloak/adapters/elytron/ElytronSessionTokenStore.java
@@ -76,7 +76,7 @@ public class ElytronSessionTokenStore implements ElytronTokeStore {
     public boolean isCached(RequestAuthenticator authenticator) {
         HttpScope session = this.httpFacade.getScope(Scope.SESSION);
 
-        if (session == null) {
+        if (session == null || !session.supportsAttachments()) {
             log.debug("session was null, returning null");
             return false;
         }
diff --git a/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedPolicyStore.java b/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedPolicyStore.java
index 7defaab..73284d7 100644
--- a/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedPolicyStore.java
+++ b/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedPolicyStore.java
@@ -214,6 +214,10 @@ public class CachedPolicyStore extends AbstractCachedStore implements PolicyStor
         return new StringBuilder().append(POLICY_CACHE_PREFIX).append("findByScopeIds-").append(scopeId).toString();
     }
 
+    private String getCacheKeyForResource(String resourceId) {
+        return new StringBuilder().append(POLICY_CACHE_PREFIX).append("findByResource-").append(resourceId).toString();
+    }
+
     private Policy createAdapter(CachedPolicy cached) {
         return new Policy() {
 
@@ -450,10 +454,6 @@ public class CachedPolicyStore extends AbstractCachedStore implements PolicyStor
         };
     }
 
-    private String getCacheKeyForResource(String resourceId) {
-        return new StringBuilder("findByResource").append(resourceId).toString();
-    }
-
     private List<Policy> cacheResult(String resourceServerId, String key, Supplier<List<Policy>> provider) {
         List<Object> cached = getCachedStoreFactory().computeIfCachedEntryAbsent(resourceServerId, key, (Function<String, List<Object>>) o -> {
             List<Policy> result = provider.get();
diff --git a/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedResourceStore.java b/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedResourceStore.java
index d94ccd8..bc892d0 100644
--- a/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedResourceStore.java
+++ b/model/infinispan/src/main/java/org/keycloak/models/authorization/infinispan/CachedResourceStore.java
@@ -55,6 +55,8 @@ public class CachedResourceStore extends AbstractCachedStore implements Resource
 
         addInvalidation(getCacheKeyForResource(resource.getId()));
         addInvalidation(getCacheKeyForResourceName(resource.getName()));
+        addInvalidation(getCacheKeyForOwner(owner));
+
         getCachedStoreFactory().getPolicyStore().addInvalidations(resource);
 
         getTransaction().whenRollback(() -> removeCachedEntry(resourceServer.getId(), getCacheKeyForResource(resource.getId())));