/* * 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; import static org.wamblee.security.authorization.AuthorizationResult.DENIED; import static org.wamblee.security.authorization.AuthorizationResult.GRANTED; import org.wamblee.usermgt.User; /** * Test authorization rule that also counts the number of times the rule matches. */ public class TestAuthorizationRule extends UrlAuthorizationRule { /** * Counts the number of matches. */ private int _matches = 0; public TestAuthorizationRule( AuthorizationResult aResult, String aGroup, String aPath, Class aOperation) { super(aResult, new GroupUserCondition(aGroup), new StartsWithPathCondition(aPath), TestResource.class, new IsaOperationCondition(aOperation)); } 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(); } /* (non-Javadoc) * @see org.wamblee.security.authorization.UrlAuthorizationRule#isAllowed(java.lang.Object, org.wamblee.security.authorization.Operation, org.wamblee.usermgt.UserAccessor) */ @Override public AuthorizationResult isAllowed(Object aResource, Operation anOperation, User aUser) { AuthorizationResult result = super.isAllowed(aResource, anOperation, aUser); if ( result.equals(GRANTED) || result.equals(DENIED)) { _matches++; } return result; } public int getMatchCount() { return _matches; } public void reset() { _matches = 0; } }