X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthorization%2Fhibernate%2FPersistentAuthorizationService.java;fp=security%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsecurity%2Fauthorization%2Fhibernate%2FPersistentAuthorizationService.java;h=0000000000000000000000000000000000000000;hb=7f22595cd53c9dc8536dfecb04d4aad73391d05b;hp=cad84ab0e8d3c64b6dc112e961f470089b8c71e4;hpb=2213b7fa034ea09f69e489284bf218a34b4281b8;p=utils diff --git a/security/impl/src/main/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationService.java b/security/impl/src/main/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationService.java deleted file mode 100644 index cad84ab0..00000000 --- a/security/impl/src/main/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationService.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright 2005-2010 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 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. - * - * @author Erik Brakkee - */ -public class PersistentAuthorizationService extends AbstractPersistent - implements AuthorizationService { - /** - * Name of query to find the service by name. - */ - private static final String FIND_QUERY = "findAuthorizationServiceByName"; - - /** - * Name of the query parameter for the service name. - */ - private static final String NAME_PARAM = "name"; - - /** - * Authorization service to use. - */ - private DefaultAuthorizationService service; - - /** - * Hibernate template to use. - */ - private HibernateTemplate template; - - /** - * User accessor. - */ - private UserAccessor userAccessor; - - /** - * Name of the service. - */ - private String name; - - /** - * Refresh interval in milliseconds. - */ - private final long refreshInterval; - - /** - * Last refresh time. - */ - private long lastRefreshTime; - - /** - * Constructs the persistent service. - * - * @param aName - * Name of the service. - * @param aTemplate - * Hibernate template for hibernate usage. - * @param aAccessor - * User accessor. - * @param aRefresh - * Whether or not to refresh the state of the service at the - * 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; - } - - /** - * Initialize service if needed. - * - */ - private void initialize() { - 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() + ")"); - } - - if (result.size() == 0) { - service = new DefaultAuthorizationService(userAccessor, name); - template.persist(service); - } else { - service = result.get(0); - service.setUserAccessor(userAccessor); - } - } - } - - /* - * (non-Javadoc) - * - * @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); - } - - /* - * (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); - } - - /* - * (non-Javadoc) - * - * @see org.wamblee.security.authorization.AuthorizationService#getRules() - */ - public AuthorizationRule[] getRules() { - initialize(); - refresh(); - - return service.getRules(); - } - - /* - * (non-Javadoc) - * - * @see - * org.wamblee.security.authorization.AuthorizationService#appendRule(org - * .wamblee.security.authorization.AuthorizationRule) - */ - public void appendRule(AuthorizationRule aRule) { - initialize(); - refresh(); - service.appendRule(aRule); - save(); - } - - /* - * (non-Javadoc) - * - * @see - * org.wamblee.security.authorization.AuthorizationService#removeRule(int) - */ - public void removeRule(int aIndex) { - initialize(); - refresh(); - service.removeRule(aIndex); - save(); - } - - /* - * (non-Javadoc) - * - * @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); - 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; - } - } - - /** - * Saves any changes to the service state if necessary. - */ - private void save() { - HibernateSupport.merge(template, service); - } -}