package org.jboss.windup.config.operation; import java.util.List; import org.ocpsoft.rewrite.config.CompositeOperation; import org.ocpsoft.rewrite.config.Operation; /** * Contains useful functions for operating on Rewrite {@link Operation}s. * * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> */ public class OperationUtil { /** * Indicates whether or not the provided {@link Operation} is or contains any {@link Operation}s of the specified type. This will recursively * check all of the suboperations on {@link CompositeOperation}s as well. */ public static boolean hasOperationType(Operation operation, Class<? extends Operation> operationType) { if (operation == null) return false; if (operationType.isAssignableFrom(operation.getClass())) return true; if (operation instanceof CompositeOperation) { List<Operation> operations = ((CompositeOperation) operation).getOperations(); for (Operation childOperation : operations) { if (hasOperationType(childOperation, operationType)) return true; } } return false; } /** * Indicates whether the operation contains any {@link Commit} operations. */ public static boolean hasCommitOperation(Operation operation) { return hasOperationType(operation, Commit.class); } /** * Indicates whether the operation contains any {@link IterationProgress} operations. */ public static boolean hasIterationProgress(Operation operation) { return hasOperationType(operation, IterationProgress.class); } }