/* * 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; import static org.wamblee.security.authorization.AuthorizationResult.*; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.Transient; /** * Test authorization rule that also counts the number of times the rule * matches. * * @author Erik Brakkee */ @Entity @DiscriminatorValue("TEST") public class TestAuthorizationRule extends UrlAuthorizationRule { /** * Counts the number of matches. */ @Transient private int matches = 0; /** * Creates a new TestAuthorizationRule object. * */ public TestAuthorizationRule(AuthorizationResult aResult, String aGroup, String aPath, Class aOperation) { super(aResult, new GroupUserCondition(aGroup), new StartsWithPathCondition(aPath), TestResource.class, new IsaOperationCondition(aOperation)); } /** * Creates a new TestAuthorizationRule object. */ protected TestAuthorizationRule() { super(); } /* * (non-Javadoc) * * @see * org.wamblee.security.authorization.UrlAuthorizationRule#getPath(java. * lang.Object) */ @Override protected String getResourcePath(Object aResource) { return ((TestResource) aResource).getPath(); } @Override public AuthorizationResult isAllowed(Object aResource, Operation aOperation, String aUser) { AuthorizationResult result = super.isAllowed(aResource, aOperation, aUser); if (result.equals(GRANTED) || result.equals(DENIED)) { matches++; } return result; } public int getMatchCount() { return matches; } public void reset() { matches = 0; } }