/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. * Portions Copyright 2013-2015 ForgeRock AS */ package org.opends.server.authorization.dseecompat; /** * A class representing a permission-bind rule pair. There can be multiple * of these in an ACI. */ public class PermBindRulePair { /** The Bind Rule part. */ private BindRule bindRule; /** The permission part. */ private Permission perm; /** * This constructor calls the permission and bind rule decodes * with the appropriate strings. * @param perm A string representing the permissions. * @param rights A string representing the rights. * @param bindRule A string representing the bind rule. * @throws AciException If any of the strings fail to decode. */ private PermBindRulePair(String perm, String rights, String bindRule) throws AciException { this.perm=Permission.decode(perm, rights); this.bindRule=BindRule.decode(bindRule); } /** * Decodes a permission bind rule pair. * @param perm A string representing the permissions. * @param rights A string representing the rights. * @param bRule A string representing the bind rule. * @return An permission bind rule pair class representing this pair. * @throws AciException If any of the strings fail to decode. */ public static PermBindRulePair decode(String perm, String rights, String bRule) throws AciException { return new PermBindRulePair(perm, rights, bRule); } /** * Gets the bind rule part of this pair. * @return The bind rule part of this pair. */ public BindRule getBindRule () { return bindRule; } /** * Checks the permission to see if it has this access type. * @param accessType An enumeration of the desired access type. * @return True if the access type equals the permission access type. */ public boolean hasAccessType(EnumAccessType accessType) { return perm.hasAccessType(accessType); } /** * Try and match one or more of the specified rights against a rights set * of the permission class. * @param right The rights to match. * @return True if one or more of the specified rights match a right in * the rights set of the permission class. */ public boolean hasRights(int right) { return perm.hasRights(right); } /** {@inheritDoc} */ @Override public String toString() { final StringBuilder sb = new StringBuilder(); toString(sb); return sb.toString(); } /** * Appends a string representation of this object to the provided buffer. * * @param buffer * The buffer into which a string representation of this object * should be appended. */ public final void toString(StringBuilder buffer) { if (this.perm != null) { this.perm.toString(buffer); } buffer.append(" "); if (this.bindRule != null) { this.bindRule.toString(buffer); } buffer.append(")"); // not sure why, but we need this extra parenthesis } }