1 /* 2 * SPDX-FileCopyrightText: none 3 * SPDX-License-Identifier: CC0-1.0 4 */ 5 6 package gov.nist.secauto.metaschema.cli.processor.command; 7 8 import gov.nist.secauto.metaschema.cli.processor.CLIProcessor.CallingContext; 9 10 import org.apache.commons.cli.CommandLine; 11 12 import edu.umd.cs.findbugs.annotations.NonNull; 13 14 /** 15 * An abstract base class that implements the {@link ICommandExecutor} 16 * interface, providing common functionality for command execution 17 * implementations. Concrete subclasses must implement the {@link #execute()} 18 * method to define specific command behavior. 19 */ 20 public interface ICommandExecutor { 21 /** 22 * Execute the command operation. 23 * 24 * @throws CommandExecutionException 25 * if an error occurred while executing the command operation 26 */ 27 void execute() throws CommandExecutionException; 28 29 /** 30 * Create a new command executor. 31 * 32 * @param callingContext 33 * the context of the command execution 34 * @param commandLine 35 * the parsed command line details 36 * @param function 37 * a function that accepts a calling context and command line 38 * information 39 * @return the executor instance 40 */ 41 @NonNull 42 static ICommandExecutor using( 43 @NonNull CallingContext callingContext, 44 @NonNull CommandLine commandLine, 45 @NonNull ExecutionFunction function) { 46 return () -> function.execute(callingContext, commandLine); 47 } 48 49 /** 50 * This functional interface represents a method that is used to execute a 51 * command operation. 52 */ 53 @FunctionalInterface 54 interface ExecutionFunction { 55 /** 56 * Execute a command operation. 57 * 58 * @param callingContext 59 * the context of the command execution 60 * @param commandLine 61 * the parsed command line details 62 * @throws CommandExecutionException 63 * if an error occurred while executing the command operation 64 */ 65 void execute( 66 @NonNull CallingContext callingContext, 67 @NonNull CommandLine commandLine) throws CommandExecutionException; 68 } 69 }