X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthorization%2Fjpa%2FJpaAuthorizationService.java;h=57d29636c06cb261cb4d2e5e175b7706a37d4add;hb=74a6cd5b71b4f668ddac54c3237511ee11e8d84e;hp=e1b71d7dd177c8a940f8c9119630294871dcfb50;hpb=fb971e6eaeb259cab901c774e6b862755ab42c43;p=utils diff --git a/security/impl/src/main/java/org/wamblee/security/authorization/jpa/JpaAuthorizationService.java b/security/impl/src/main/java/org/wamblee/security/authorization/jpa/JpaAuthorizationService.java index e1b71d7d..57d29636 100644 --- a/security/impl/src/main/java/org/wamblee/security/authorization/jpa/JpaAuthorizationService.java +++ b/security/impl/src/main/java/org/wamblee/security/authorization/jpa/JpaAuthorizationService.java @@ -100,16 +100,17 @@ public class JpaAuthorizationService implements AuthorizationService { */ private void initialize() { if (service == null) { - refreshByReload(); + service = refreshByReload(); } } - private void refreshByReload() { + private AuthorizationService refreshByReload() { + AuthorizationService service; try { service = entityManager.createNamedQuery( AbstractAuthorizationService.QUERY_FIND_BY_NAME, AbstractAuthorizationService.class).setParameter( - AbstractAuthorizationService.NAME_PARAM, name).getSingleResult(); + DefaultAuthorizationService.NAME_PARAM, name).getSingleResult(); service.setUserAccessor(userAccessor); } catch (NonUniqueResultException e) { throw new IllegalArgumentException( @@ -118,6 +119,7 @@ public class JpaAuthorizationService implements AuthorizationService { service = new DefaultAuthorizationService(userAccessor, name); entityManager.persist(service); } + return service; } /* @@ -170,7 +172,7 @@ public class JpaAuthorizationService implements AuthorizationService { initialize(); refresh(); service.appendRule(aRule); - save(); + save(); // service might still be detached as service is cached. } /* @@ -183,7 +185,7 @@ public class JpaAuthorizationService implements AuthorizationService { initialize(); refresh(); service.removeRule(aIndex); - save(); + save(); // service might still be detached as service is cached. } /* @@ -197,7 +199,7 @@ public class JpaAuthorizationService implements AuthorizationService { initialize(); refresh(); service.insertRuleAfter(aIndex, aRule); - save(); + save(); // service might still be detached as service is cached. } /** @@ -207,7 +209,7 @@ public class JpaAuthorizationService implements AuthorizationService { long time = System.currentTimeMillis(); if ((time - lastRefreshTime) > refreshInterval) { - refreshByReload(); + service = refreshByReload(); lastRefreshTime = time; } }