X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthorization%2Fhibernate%2FPersistentAuthorizationService.java;h=cd8995f4586b2fda22c8d7122c7dc5822f386650;hb=8de36ff0206c996baf3ee4adc3e2293b12ff5f39;hp=dfe2439caa1a930a491e8178525c9db658268c4e;hpb=532f7219273021ef3652e0abe1326b7aeed1f30a;p=utils diff --git a/security/src/main/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationService.java b/security/src/main/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationService.java index dfe2439c..cd8995f4 100644 --- a/security/src/main/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationService.java +++ b/security/src/main/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationService.java @@ -1,42 +1,43 @@ /* * Copyright 2005 the original author or authors. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ - package org.wamblee.security.authorization.hibernate; -import java.util.List; - import org.springframework.orm.hibernate3.HibernateTemplate; + import org.wamblee.persistence.AbstractPersistent; import org.wamblee.persistence.hibernate.HibernateSupport; + import org.wamblee.security.authorization.AuthorizationRule; import org.wamblee.security.authorization.AuthorizationService; import org.wamblee.security.authorization.DefaultAuthorizationService; import org.wamblee.security.authorization.Operation; + import org.wamblee.usermgt.UserAccessor; +import java.util.List; + /** - * Authorization service with persistent storage. - * This is a wrapper for {@link org.wamblee.security.authorization.DefaultAuthorizationService} - * which refreshes the state of the service at certain time intervals. - * + * Authorization service with persistent storage. This is a wrapper for + * {@link org.wamblee.security.authorization.DefaultAuthorizationService} which + * refreshes the state of the service at certain time intervals. + * * @author Erik Brakkee */ public class PersistentAuthorizationService extends AbstractPersistent - implements AuthorizationService { - + implements AuthorizationService { /** * Name of query to find the service by name. */ @@ -50,32 +51,32 @@ public class PersistentAuthorizationService extends AbstractPersistent /** * Authorization service to use. */ - private DefaultAuthorizationService _service; + private DefaultAuthorizationService service; /** * Hibernate template to use. */ - private HibernateTemplate _template; + private HibernateTemplate template; /** * User accessor. */ - private UserAccessor _userAccessor; - + private UserAccessor userAccessor; + /** - * Name of the service. + * Name of the service. */ - private String _name; + private String name; /** - * Refresh interval in milliseconds. + * Refresh interval in milliseconds. */ - private final long _refreshInterval; - + private final long refreshInterval; + /** - * Last refresh time. + * Last refresh time. */ - private long _lastRefreshTime; + private long lastRefreshTime; /** * Constructs the persistent service. @@ -91,36 +92,36 @@ public class PersistentAuthorizationService extends AbstractPersistent * start of every operation. */ public PersistentAuthorizationService(String aName, - HibernateTemplate aTemplate, UserAccessor aAccessor, - long aRefreshInterval) { - _template = aTemplate; - _refreshInterval = aRefreshInterval; - _lastRefreshTime = System.currentTimeMillis(); - _userAccessor = aAccessor; - _name = aName; + HibernateTemplate aTemplate, UserAccessor aAccessor, + long aRefreshInterval) { + template = aTemplate; + refreshInterval = aRefreshInterval; + lastRefreshTime = System.currentTimeMillis(); + userAccessor = aAccessor; + name = aName; } /** - * Initialize service if needed. + * Initialize service if needed. + * */ private void initialize() { - if (_service == null) { - List result = _template - .findByNamedQueryAndNamedParam(FIND_QUERY, NAME_PARAM, - _name); + if (service == null) { + List result = template + .findByNamedQueryAndNamedParam(FIND_QUERY, NAME_PARAM, name); if (result.size() > 1) { throw new IllegalArgumentException( - "Returned more than one service for name '" + _name - + "' (" + result.size() + ")"); + "Returned more than one service for name '" + name + "' (" + + result.size() + ")"); } if (result.size() == 0) { - _service = new DefaultAuthorizationService(_userAccessor, _name); - _template.persist(_service); + service = new DefaultAuthorizationService(userAccessor, name); + template.persist(service); } else { - _service = result.get(0); - _service.setUserAccessor(_userAccessor); + service = result.get(0); + service.setUserAccessor(userAccessor); } } } @@ -128,22 +129,28 @@ public class PersistentAuthorizationService extends AbstractPersistent /* * (non-Javadoc) * - * @see org.wamblee.security.authorization.AuthorizationService#isAllowed(java.lang.Object, - * org.wamblee.security.authorization.Operation) + * @see + * org.wamblee.security.authorization.AuthorizationService#isAllowed(java + * .lang.Object, org.wamblee.security.authorization.Operation) */ public boolean isAllowed(Object aResource, Operation aOperation) { initialize(); refresh(); - return _service.isAllowed(aResource, aOperation); + + return service.isAllowed(aResource, aOperation); } - - /* (non-Javadoc) - * @see org.wamblee.security.authorization.AuthorizationService#check(T, org.wamblee.security.authorization.Operation) + + /* + * (non-Javadoc) + * + * @see org.wamblee.security.authorization.AuthorizationService#check(T, + * org.wamblee.security.authorization.Operation) */ public T check(T aResource, Operation aOperation) { initialize(); refresh(); - return _service.check(aResource, aOperation); + + return service.check(aResource, aOperation); } /* @@ -154,55 +161,60 @@ public class PersistentAuthorizationService extends AbstractPersistent public AuthorizationRule[] getRules() { initialize(); refresh(); - return _service.getRules(); + + return service.getRules(); } /* * (non-Javadoc) * - * @see org.wamblee.security.authorization.AuthorizationService#appendRule(org.wamblee.security.authorization.AuthorizationRule) + * @see + * org.wamblee.security.authorization.AuthorizationService#appendRule(org + * .wamblee.security.authorization.AuthorizationRule) */ public void appendRule(AuthorizationRule aRule) { initialize(); refresh(); - _service.appendRule(aRule); + service.appendRule(aRule); save(); } /* * (non-Javadoc) * - * @see org.wamblee.security.authorization.AuthorizationService#removeRule(int) + * @see + * org.wamblee.security.authorization.AuthorizationService#removeRule(int) */ public void removeRule(int aIndex) { initialize(); refresh(); - _service.removeRule(aIndex); + service.removeRule(aIndex); save(); } /* * (non-Javadoc) * - * @see org.wamblee.security.authorization.AuthorizationService#insertRuleAfter(int, - * org.wamblee.security.authorization.AuthorizationRule) + * @see + * org.wamblee.security.authorization.AuthorizationService#insertRuleAfter + * (int, org.wamblee.security.authorization.AuthorizationRule) */ public void insertRuleAfter(int aIndex, AuthorizationRule aRule) { initialize(); refresh(); - _service.insertRuleAfter(aIndex, aRule); + service.insertRuleAfter(aIndex, aRule); save(); } /** * Refreshes the state of the service through hibernate. - * */ private synchronized void refresh() { - long time = System.currentTimeMillis(); - if ( time - _lastRefreshTime > _refreshInterval ) { - _template.refresh(_service); - _lastRefreshTime = time; + long time = System.currentTimeMillis(); + + if ((time - lastRefreshTime) > refreshInterval) { + template.refresh(service); + lastRefreshTime = time; } } @@ -210,6 +222,6 @@ public class PersistentAuthorizationService extends AbstractPersistent * Saves any changes to the service state if necessary. */ private void save() { - HibernateSupport.merge(_template, _service); + HibernateSupport.merge(template, service); } }