X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthorization%2Fhibernate%2FPersistentAuthorizationService.java;h=caf69903d72802d48dd142b4c61411ceb9aba9eb;hb=ddd261f331280640c5b53c7128230b629ebcd268;hp=895e77e642d9129bcb24478ddebd6695179c15ca;hpb=92e23e5ecf9614f2ab770a8cdedc0b21ddf1e127;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 895e77e6..caf69903 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,44 @@ /* * 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. */ @@ -61,23 +63,23 @@ public class PersistentAuthorizationService extends AbstractPersistent * User accessor. */ 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; - + /** - * Last refresh time. + * Last refresh time. */ - private long lastRefreshTime; + private long lastRefreshTime; - /** +/** * Constructs the persistent service. * * @param aName @@ -91,28 +93,29 @@ 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. + * + * @throws IllegalArgumentException DOCUMENT ME! */ private void initialize() { if (service == null) { List result = template - .findByNamedQueryAndNamedParam(FIND_QUERY, NAME_PARAM, - name); + .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) { @@ -127,41 +130,71 @@ public class PersistentAuthorizationService extends AbstractPersistent /* * (non-Javadoc) - * + * * @see org.wamblee.security.authorization.AuthorizationService#isAllowed(java.lang.Object, * org.wamblee.security.authorization.Operation) */ + /** + * DOCUMENT ME! + * + * @param aResource DOCUMENT ME! + * @param aOperation DOCUMENT ME! + * + * @return DOCUMENT ME! + */ public boolean isAllowed(Object aResource, Operation aOperation) { initialize(); refresh(); + return service.isAllowed(aResource, aOperation); } - + /* (non-Javadoc) * @see org.wamblee.security.authorization.AuthorizationService#check(T, org.wamblee.security.authorization.Operation) */ + /** + * DOCUMENT ME! + * + * @param DOCUMENT ME! + * @param aResource DOCUMENT ME! + * @param aOperation DOCUMENT ME! + * + * @return DOCUMENT ME! + */ public T check(T aResource, Operation aOperation) { initialize(); refresh(); + return service.check(aResource, aOperation); } /* * (non-Javadoc) - * + * * @see org.wamblee.security.authorization.AuthorizationService#getRules() */ + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ public AuthorizationRule[] getRules() { initialize(); refresh(); + return service.getRules(); } /* * (non-Javadoc) - * + * * @see org.wamblee.security.authorization.AuthorizationService#appendRule(org.wamblee.security.authorization.AuthorizationRule) */ + /** + * DOCUMENT ME! + * + * @param aRule DOCUMENT ME! + */ public void appendRule(AuthorizationRule aRule) { initialize(); refresh(); @@ -171,9 +204,14 @@ public class PersistentAuthorizationService extends AbstractPersistent /* * (non-Javadoc) - * + * * @see org.wamblee.security.authorization.AuthorizationService#removeRule(int) */ + /** + * DOCUMENT ME! + * + * @param aIndex DOCUMENT ME! + */ public void removeRule(int aIndex) { initialize(); refresh(); @@ -183,10 +221,16 @@ public class PersistentAuthorizationService extends AbstractPersistent /* * (non-Javadoc) - * + * * @see org.wamblee.security.authorization.AuthorizationService#insertRuleAfter(int, * org.wamblee.security.authorization.AuthorizationRule) */ + /** + * DOCUMENT ME! + * + * @param aIndex DOCUMENT ME! + * @param aRule DOCUMENT ME! + */ public void insertRuleAfter(int aIndex, AuthorizationRule aRule) { initialize(); refresh(); @@ -196,13 +240,13 @@ public class PersistentAuthorizationService extends AbstractPersistent /** * Refreshes the state of the service through hibernate. - * */ private synchronized void refresh() { - long time = System.currentTimeMillis(); - if ( time - lastRefreshTime > refreshInterval ) { + long time = System.currentTimeMillis(); + + if ((time - lastRefreshTime) > refreshInterval) { template.refresh(service); - lastRefreshTime = time; + lastRefreshTime = time; } }