001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package gov.nist.secauto.oscal.tools.cli.core.commands; 007 008import gov.nist.secauto.metaschema.core.model.util.JsonUtil; 009import gov.nist.secauto.metaschema.core.model.util.XmlUtil; 010import gov.nist.secauto.metaschema.core.util.CollectionUtil; 011import gov.nist.secauto.metaschema.core.util.ObjectUtils; 012import gov.nist.secauto.oscal.lib.OscalBindingContext; 013 014import org.json.JSONObject; 015 016import java.io.IOException; 017import java.io.InputStream; 018import java.util.LinkedList; 019import java.util.List; 020 021import javax.xml.transform.Source; 022 023import edu.umd.cs.findbugs.annotations.NonNull; 024 025public class ValidateCommand 026 extends AbstractOscalValidationCommand { 027 @Override 028 public String getDescription() { 029 return "Check that the specified OSCAL instance is well-formed and valid to an OSCAL model."; 030 } 031 032 @Override 033 @NonNull 034 public List<Source> getOscalXmlSchemas() throws IOException { 035 List<Source> retval = new LinkedList<>(); 036 retval.add( 037 XmlUtil.getStreamSource(ObjectUtils.requireNonNull( 038 OscalBindingContext.class.getResource("/schema/xml/oscal-complete_schema.xsd")))); 039 return CollectionUtil.unmodifiableList(retval); 040 } 041 042 @Override 043 @NonNull 044 public JSONObject getOscalJsonSchema() throws IOException { 045 try (InputStream is = ObjectUtils.requireNonNull( 046 OscalBindingContext.class.getResourceAsStream("/schema/json/oscal-complete_schema.json"))) { 047 return JsonUtil.toJsonObject(is); 048 } 049 } 050}