diff --git a/cli-core/src/main/java/gov/nist/secauto/oscal/tools/cli/core/commands/AbstractConvertSubcommand.java b/cli-core/src/main/java/gov/nist/secauto/oscal/tools/cli/core/commands/AbstractConvertSubcommand.java index c22b5e0..c48ea13 100644 --- a/cli-core/src/main/java/gov/nist/secauto/oscal/tools/cli/core/commands/AbstractConvertSubcommand.java +++ b/cli-core/src/main/java/gov/nist/secauto/oscal/tools/cli/core/commands/AbstractConvertSubcommand.java @@ -207,4 +207,8 @@ protected void convert( } protected abstract Class getLoadedClass(); + + public String getLoadedClassSimpleName() { + return getLoadedClass().getSimpleName(); + }; } diff --git a/cli-core/src/test/java/gov/nist/secauto/oscal/tools/cli/core/commands/Issue96ClassLoaderTest.java b/cli-core/src/test/java/gov/nist/secauto/oscal/tools/cli/core/commands/Issue96ClassLoaderTest.java new file mode 100644 index 0000000..7ab4849 --- /dev/null +++ b/cli-core/src/test/java/gov/nist/secauto/oscal/tools/cli/core/commands/Issue96ClassLoaderTest.java @@ -0,0 +1,72 @@ +/* + * 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.oscal.tools.cli.core.commands; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +class Issue96ClassLoaderTest { + /** + * Regression tests for usnistgov/oscal-cli#96. See information at this URL for more details. + * https://github.com/usnistgov/oscal-cli/issues/96 + */ + @Test + void testAssessmentPlanClassLoader() { + var subcommand = new gov.nist.secauto.oscal.tools.cli.core.commands.assessmentplan.ConvertSubcommand(); + assertEquals("AssessmentPlan", subcommand.getLoadedClassSimpleName()); + } + + @Test + void testAssessmentResultsClassLoader() { + var subcommand = new gov.nist.secauto.oscal.tools.cli.core.commands.assessmentresults.ConvertSubcommand(); + assertEquals("AssessmentResults", subcommand.getLoadedClassSimpleName()); + } + + @Test + void testCatalogClassLoader() { + var subcommand = new gov.nist.secauto.oscal.tools.cli.core.commands.catalog.ConvertSubcommand(); + assertEquals("Catalog", subcommand.getLoadedClassSimpleName()); + } + + @Test + void testMappingCollectionClassLoader() { + var subcommand = new gov.nist.secauto.oscal.tools.cli.core.commands.mappingcollection.ConvertSubcommand(); + assertEquals("MappingCollection", subcommand.getLoadedClassSimpleName()); + } + + @Test + void testPoamClassLoader() { + var subcommand = new gov.nist.secauto.oscal.tools.cli.core.commands.poam.ConvertSubcommand(); + assertEquals("PlanOfActionAndMilestones", subcommand.getLoadedClassSimpleName()); + } + + @Test + void testSspClassLoader() { + var subcommand = new gov.nist.secauto.oscal.tools.cli.core.commands.ssp.ConvertSubcommand(); + assertEquals("SystemSecurityPlan", subcommand.getLoadedClassSimpleName()); + } +} \ No newline at end of file