001/* 002 * The contents of this file are subject to the terms of the Common Development and 003 * Distribution License (the License). You may not use this file except in compliance with the 004 * License. 005 * 006 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the 007 * specific language governing permission and limitations under the License. 008 * 009 * When distributing Covered Software, include this CDDL Header Notice in each file and include 010 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL 011 * Header, with the fields enclosed by brackets [] replaced by your own identifying 012 * information: "Portions Copyright [year] [name of copyright owner]". 013 * 014 * Copyright 2008 Sun Microsystems, Inc. 015 * Portions Copyright 2014-2016 ForgeRock AS. 016 */ 017package org.forgerock.opendj.config.conditions; 018 019import java.util.Arrays; 020import java.util.List; 021 022import org.forgerock.opendj.config.AbstractManagedObjectDefinition; 023import org.forgerock.opendj.config.client.ManagedObject; 024import org.forgerock.opendj.config.client.ManagementContext; 025import org.forgerock.opendj.config.server.ConfigException; 026import org.forgerock.opendj.config.server.ServerManagedObject; 027import org.forgerock.opendj.ldap.LdapException; 028import org.forgerock.util.Reject; 029 030/** 031 * A condition which evaluates to <code>false</code> if and only if all of its 032 * sub-conditions are <code>false</code>. 033 */ 034public final class ORCondition implements Condition { 035 036 /** The list of sub-conditions. */ 037 private final List<Condition> conditions; 038 039 /** 040 * Creates a new logical OR condition with the provided sub-conditions. 041 * 042 * @param conditions 043 * The sub-conditions which will be combined using a logical OR. 044 */ 045 public ORCondition(Condition... conditions) { 046 Reject.ifNull(conditions); 047 this.conditions = Arrays.asList(conditions); 048 } 049 050 @Override 051 public boolean evaluate(ManagementContext context, ManagedObject<?> managedObject) throws LdapException { 052 for (Condition condition : conditions) { 053 if (condition.evaluate(context, managedObject)) { 054 return true; 055 } 056 } 057 return false; 058 } 059 060 @Override 061 public boolean evaluate(ServerManagedObject<?> managedObject) throws ConfigException { 062 for (Condition condition : conditions) { 063 if (condition.evaluate(managedObject)) { 064 return true; 065 } 066 } 067 return false; 068 } 069 070 @Override 071 public void initialize(AbstractManagedObjectDefinition<?, ?> d) throws Exception { 072 for (Condition condition : conditions) { 073 condition.initialize(d); 074 } 075 } 076 077}