1
2
3
4
5
6 package gov.nist.secauto.oscal.tools.cli.core.commands;
7
8 import gov.nist.secauto.metaschema.core.model.util.JsonUtil;
9 import gov.nist.secauto.metaschema.core.model.util.XmlUtil;
10 import gov.nist.secauto.metaschema.core.util.CollectionUtil;
11 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
12 import gov.nist.secauto.oscal.lib.OscalBindingContext;
13
14 import org.json.JSONObject;
15
16 import java.io.IOException;
17 import java.io.InputStream;
18 import java.util.LinkedList;
19 import java.util.List;
20
21 import javax.xml.transform.Source;
22
23 import edu.umd.cs.findbugs.annotations.NonNull;
24
25 public class ValidateCommand
26 extends AbstractOscalValidationCommand {
27 @Override
28 public String getDescription() {
29 return "Check that the specified OSCAL instance is well-formed and valid to an OSCAL model.";
30 }
31
32 @Override
33 @NonNull
34 public List<Source> getOscalXmlSchemas() throws IOException {
35 List<Source> retval = new LinkedList<>();
36 retval.add(
37 XmlUtil.getStreamSource(ObjectUtils.requireNonNull(
38 OscalBindingContext.class.getResource("/schema/xml/oscal-complete_schema.xsd"))));
39 return CollectionUtil.unmodifiableList(retval);
40 }
41
42 @Override
43 @NonNull
44 public JSONObject getOscalJsonSchema() throws IOException {
45 try (InputStream is = ObjectUtils.requireNonNull(
46 OscalBindingContext.class.getResourceAsStream("/schema/json/oscal-complete_schema.json"))) {
47 return JsonUtil.toJsonObject(is);
48 }
49 }
50 }