1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.commons.lang3.function; 19 20 import java.util.Objects; 21 import java.util.function.IntConsumer; 22 23 /** 24 * A functional interface like {@link IntConsumer} but for {@code boolean}. 25 * 26 * @see IntConsumer 27 * @since 3.13.0 28 */ 29 @FunctionalInterface 30 public interface BooleanConsumer { 31 32 /** NOP singleton */ 33 BooleanConsumer NOP = t -> { /* NOP */ }; 34 35 /** 36 * Returns The NOP singleton. 37 * 38 * @return The NOP singleton. 39 */ 40 static BooleanConsumer nop() { 41 return NOP; 42 } 43 44 /** 45 * Accepts the given arguments. 46 * 47 * @param value the input argument 48 */ 49 void accept(boolean value); 50 51 /** 52 * Returns a composed {@link BooleanConsumer} that performs, in sequence, this operation followed by the {@code after} 53 * operation. If performing either operation throws an exception, it is relayed to the caller of the composed operation. 54 * If performing this operation throws an exception, the {@code after} operation will not be performed. 55 * 56 * @param after the operation to perform after this operation 57 * @return a composed {@link BooleanConsumer} that performs in sequence this operation followed by the {@code after} 58 * operation 59 * @throws NullPointerException if {@code after} is null 60 */ 61 default BooleanConsumer andThen(final BooleanConsumer after) { 62 Objects.requireNonNull(after); 63 return (final boolean t) -> { 64 accept(t); 65 after.accept(t); 66 }; 67 } 68 }