/* * 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 javax.persistence.Access; import javax.persistence.AccessType; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; /** * Determiens if an operation is a subclass of a specified operation. */ @Entity @DiscriminatorValue("ISA") @Access(AccessType.PROPERTY) public class IsaOperationCondition extends AbstractOperationCondition { /** * Operation that the other operation must be a subclass of. */ private Class operation; /** * Constructs the condition. * * @param aOperation * Operation that an operation must be an instance of. */ public IsaOperationCondition(Class aOperation) { operation = aOperation; } /** * For OR mapping. * */ public IsaOperationCondition() { operation = null; } /* * (non-Javadoc) * * @see * org.wamblee.security.authorization.OperationCondition#matches(org.wamblee * .security.authorization.Operation) */ public boolean matches(Operation aOperation) { return operation.isInstance(aOperation); } /** * Gets the operation as a string. For OR mapping only. * * @return Operation string. */ @Column(name = "CLASSNAME") protected String getOperationString() { if (operation == null) { return null; } return operation.getName(); } /** * Sets the operation as a string. For OR mapping only. * * @param aOperation * Operation string. * */ protected void setOperationString(String aOperation) { if (aOperation == null) { return; } try { operation = (Class) Class.forName(aOperation); } catch (Exception e) { throw new IllegalArgumentException("Unknown class '" + aOperation + "'"); } } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { return "IsaOperationCondition(operation=" + operation.getName() + ")"; } }