From 05c1874a7db8cc0cea9d84b4b91fd41e4250f1a2 Mon Sep 17 00:00:00 2001 From: David Waltermire Date: Mon, 27 May 2024 12:08:54 -0400 Subject: [PATCH] Added a better means to collect the metaschema-related CLI commands for reuse. --- .../gov/nist/secauto/metaschema/cli/CLI.java | 10 +---- .../cli/commands/MetaschemaCommands.java | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/MetaschemaCommands.java diff --git a/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/CLI.java b/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/CLI.java index c1cfe7e81..794ad7481 100644 --- a/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/CLI.java +++ b/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/CLI.java @@ -26,10 +26,7 @@ package gov.nist.secauto.metaschema.cli; -import gov.nist.secauto.metaschema.cli.commands.GenerateSchemaCommand; -import gov.nist.secauto.metaschema.cli.commands.ValidateContentUsingModuleCommand; -import gov.nist.secauto.metaschema.cli.commands.ValidateModuleCommand; -import gov.nist.secauto.metaschema.cli.commands.metapath.MetapathCommand; +import gov.nist.secauto.metaschema.cli.commands.MetaschemaCommands; import gov.nist.secauto.metaschema.cli.processor.CLIProcessor; import gov.nist.secauto.metaschema.cli.processor.ExitStatus; import gov.nist.secauto.metaschema.cli.processor.command.CommandService; @@ -57,10 +54,7 @@ public static ExitStatus runCli(String... args) { new MetaschemaJavaVersion(), new MetaschemaVersion())); CLIProcessor processor = new CLIProcessor("metaschema-cli", versions); - processor.addCommandHandler(new ValidateModuleCommand()); - processor.addCommandHandler(new GenerateSchemaCommand()); - processor.addCommandHandler(new ValidateContentUsingModuleCommand()); - processor.addCommandHandler(new MetapathCommand()); + MetaschemaCommands.COMMANDS.forEach(processor::addCommandHandler); CommandService.getInstance().getCommands().stream().forEach(command -> { assert command != null; diff --git a/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/MetaschemaCommands.java b/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/MetaschemaCommands.java new file mode 100644 index 000000000..c0777acfe --- /dev/null +++ b/metaschema-cli/src/main/java/gov/nist/secauto/metaschema/cli/commands/MetaschemaCommands.java @@ -0,0 +1,44 @@ +/* + * Portions of this software was developed by employees of the National Institute + * of Standards and Technology (NIST), an agency of the Federal Government and is + * being made available as a public service. Pursuant to title 17 United States + * Code Section 105, works of NIST employees are not subject to copyright + * protection in the United States. This software may be subject to foreign + * copyright. Permission in the United States and in foreign countries, to the + * extent that NIST may hold copyright, to use, copy, modify, create derivative + * works, and distribute this software and its documentation without fee is hereby + * granted on a non-exclusive basis, provided that this notice and disclaimer + * of warranty appears in all copies. + * + * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER + * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY + * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM + * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE + * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT + * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, + * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, + * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, + * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR + * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT + * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. + */ + +package gov.nist.secauto.metaschema.cli.commands; + +import gov.nist.secauto.metaschema.cli.commands.metapath.MetapathCommand; +import gov.nist.secauto.metaschema.cli.processor.command.ICommand; + +import java.util.List; + +public class MetaschemaCommands { + public static final List COMMANDS = List.of( + new ValidateModuleCommand(), + new GenerateSchemaCommand(), + new ValidateContentUsingModuleCommand(), + new MetapathCommand()); + + private MetaschemaCommands() { + // disable construction + } +}