Skip to content

Commit 644abe2

Browse files
committed
improve example
1 parent 2cecf73 commit 644abe2

1 file changed

Lines changed: 26 additions & 5 deletions

File tree

openapi-parser/src/test/java/io/openapiparser/SetupExample.java renamed to openapi-parser/src/test/java/io/openapiparser/SetupExampleTest.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,63 @@
66
package io.openapiparser;
77

88
import io.openapiparser.model.v30.OpenApi;
9+
import io.openapiparser.model.v30.PathItem;
910
import io.openapiprocessor.interfaces.Converter;
1011
import io.openapiprocessor.interfaces.Reader;
1112
import io.openapiprocessor.jsonschema.reader.UriReader;
1213
import io.openapiprocessor.jsonschema.schema.*;
1314
import io.openapiprocessor.jsonschema.validator.Validator;
1415
import io.openapiprocessor.jsonschema.validator.ValidatorSettings;
15-
import io.openapiprocessor.jsonschema.validator.result.MessageTextBuilder;
1616
import io.openapiprocessor.snakeyaml.SnakeYamlConverter;
17+
import org.junit.jupiter.api.Test;
1718

1819
import java.util.Collection;
1920

20-
public class SetupExample {
21+
public class SetupExampleTest {
2122

23+
@Test
2224
void parseAndValidate () {
25+
// 1. create a document loader.
26+
// It loads a document by uri and converts it to a Map<String, Object>
27+
// object tree that represents the OpenAPI document. The parser
28+
// operates on that Object tree which makes it independent of the
29+
// object mapper (e.g. jackson, snakeyaml etc.).
30+
// Both (Reader and Converter) have a very simple interface which makes
31+
// it easy to implement your own.
2332
Reader reader = new UriReader ();
2433
Converter converter = new SnakeYamlConverter ();
2534
// Converter converter = new JacksonConverter ();
2635
DocumentLoader loader = new DocumentLoader (reader, converter);
2736

37+
// 2. create a resolver.
38+
// it is responsible for resolving the $ref'erences in the OpenAPI document.
39+
// The Settings object is initialized with the JSON schema version used by
40+
// OpenAPI (here Draft 4 for OpenAPI 3.0.x).
2841
DocumentStore documents = new DocumentStore ();
2942
Resolver.Settings resolverSettings = new Resolver.Settings (SchemaVersion.Draft4);
3043
Resolver resolver = new Resolver (documents, loader, resolverSettings);
3144

32-
// parser OpenAPI file or url
45+
// 3. parse the OpenAPI from resource or url.
46+
// here it loads an OpenAPI document from a resource file, but URI works too.
3347
OpenApiParser parser = new OpenApiParser (resolver);
3448
OpenApiResult result = parser.parse ("openapi.yaml");
49+
50+
// 4. get the API model from the result to navigate the OpenAPI document.
3551
// OpenAPI 3.1.x with model.v31.OpenAPI import
3652
OpenApi model = result.getModel (OpenApi.class);
3753

38-
// validate OpenAPI
54+
// 5. navigate the model
55+
PathItem pathItem = model.getPaths ().getPathItem ("/foo");
56+
57+
// 6. create Validator to validate the OpenAPI schema.
3958
SchemaStore store = new SchemaStore (loader);
4059
ValidatorSettings settings = new ValidatorSettings ();
4160
Validator validator = new Validator (settings);
61+
62+
// 7. validate the OpenAPI schema.
4263
boolean valid = result.validate (validator, store);
4364

44-
// print validation errors
65+
// 8. print validation errors
4566
Collection<ValidationError> errors = result.getValidationErrors ();
4667
ValidationErrorTextBuilder builder = new ValidationErrorTextBuilder ();
4768

0 commit comments

Comments
 (0)