use of org.eclipse.microprofile.openapi.models.media.Schema in project Payara by payara.
the class ContentImpl method merge.
public static void merge(ContentImpl from, Content to, boolean override, ApiContext context) {
if (from == null) {
return;
}
for (Map.Entry<String, MediaType> fromEntry : from.getMediaTypes().entrySet()) {
final String typeName = fromEntry.getKey();
final MediaType fromMediaType = fromEntry.getValue();
// Get or create the corresponding media type
MediaTypeImpl toMediaType = (MediaTypeImpl) to.getMediaTypes().getOrDefault(typeName, new MediaTypeImpl());
to.addMediaType(typeName, toMediaType);
// Merge encoding
for (Map.Entry<String, Encoding> encoding : fromMediaType.getEncoding().entrySet()) {
EncodingImpl.merge(encoding.getKey(), encoding.getValue(), toMediaType.encoding, override, context);
}
// Merge examples
for (Map.Entry<String, Example> example : fromMediaType.getExamples().entrySet()) {
ExampleImpl.merge(example.getKey(), example.getValue(), toMediaType.examples, override);
}
toMediaType.setExample(mergeProperty(toMediaType.getExample(), fromMediaType.getExample(), override));
// Merge schema
if (fromMediaType.getSchema() != null) {
if (toMediaType.getSchema() == null) {
toMediaType.setSchema(new SchemaImpl());
}
Schema schema = toMediaType.getSchema();
SchemaImpl.merge(fromMediaType.getSchema(), schema, true, context);
}
}
}
use of org.eclipse.microprofile.openapi.models.media.Schema in project Payara by payara.
the class ComponentsImpl method merge.
public static void merge(Components from, Components to, boolean override, ApiContext context) {
if (from == null) {
return;
}
// Handle @Schema
if (from.getSchemas() != null) {
for (Entry<String, Schema> fromEntry : from.getSchemas().entrySet()) {
final String schemaName = fromEntry.getKey();
if (schemaName != null) {
final Schema fromSchema = fromEntry.getValue();
final Schema toSchema = to.getSchemas().getOrDefault(schemaName, new SchemaImpl());
SchemaImpl.merge(fromSchema, toSchema, override, context);
to.addSchema(schemaName, toSchema);
}
}
}
// Handle @Callback
if (from.getCallbacks() != null) {
for (String callbackName : from.getCallbacks().keySet()) {
if (callbackName != null) {
Callback newCallback = new CallbackImpl();
CallbackImpl.merge(from.getCallbacks().get(callbackName), newCallback, override, context);
to.addCallback(callbackName, newCallback);
}
}
}
// Handle @ExampleObject
if (from.getExamples() != null) {
for (String exampleName : from.getExamples().keySet()) {
if (exampleName != null) {
Example newExample = new ExampleImpl();
ExampleImpl.merge(from.getExamples().get(exampleName), newExample, override);
to.addExample(exampleName, newExample);
}
}
}
// Handle @Header
if (from.getHeaders() != null) {
for (String headerName : from.getHeaders().keySet()) {
if (headerName != null) {
Header newHeader = new HeaderImpl();
HeaderImpl.merge(from.getHeaders().get(headerName), newHeader, override, context);
to.addHeader(headerName, newHeader);
}
}
}
// Handle @Link
if (from.getLinks() != null) {
for (String linkName : from.getLinks().keySet()) {
if (linkName != null) {
Link newLink = new LinkImpl();
LinkImpl.merge(from.getLinks().get(linkName), newLink, override);
to.addLink(linkName, newLink);
}
}
}
// Handle @Parameter
if (from.getParameters() != null) {
for (String parameterName : from.getParameters().keySet()) {
if (parameterName != null) {
Parameter newParameter = new ParameterImpl();
ParameterImpl.merge(from.getParameters().get(parameterName), newParameter, override, context);
to.addParameter(parameterName, newParameter);
}
}
}
// Handle @RequestBody
if (from.getRequestBodies() != null) {
for (String requestBodyName : from.getRequestBodies().keySet()) {
if (requestBodyName != null) {
RequestBody newRequestBody = new RequestBodyImpl();
RequestBodyImpl.merge(from.getRequestBodies().get(requestBodyName), newRequestBody, override, context);
to.addRequestBody(requestBodyName, newRequestBody);
}
}
}
// Handle @APIResponse
if (from.getResponses() != null) {
for (String responseName : from.getResponses().keySet()) {
if (responseName != null) {
APIResponse newResponse = new APIResponseImpl();
APIResponseImpl.merge(from.getResponses().get(responseName), newResponse, override, context);
to.addResponse(responseName, newResponse);
}
}
}
// Handle @SecurityScheme
if (from.getSecuritySchemes() != null) {
for (String securitySchemeName : from.getSecuritySchemes().keySet()) {
if (securitySchemeName != null) {
SecurityScheme newSecurity = new SecuritySchemeImpl();
SecuritySchemeImpl.merge(from.getSecuritySchemes().get(securitySchemeName), newSecurity, override);
to.addSecurityScheme(securitySchemeName, newSecurity);
}
}
}
}
use of org.eclipse.microprofile.openapi.models.media.Schema in project Payara by payara.
the class GenericSchemaMappingTest method genericSchemaTest.
@Test
public void genericSchemaTest() {
APIResponses responses = getDocument().getPaths().getPathItem("/test/response").getGET().getResponses();
assertNotNull("The default response should have been created.", responses.getDefaultValue());
assertNotNull("The default response should return */*.", responses.getDefaultValue().getContent().getMediaType(WILDCARD));
assertEquals("The default response */* should match the specified schema.", "#/components/schemas/JsonAnimalList", responses.getDefaultValue().getContent().getMediaType(WILDCARD).getSchema().getRef());
Map<String, Schema> schemas = getDocument().getComponents().getSchemas();
assertEquals(2, schemas.size());
Schema jsonAnimalList = schemas.get("JsonAnimalList");
assertNotNull(jsonAnimalList);
assertEquals(1, jsonAnimalList.getProperties().size());
assertEquals("JSON wrapper for a list of animals", jsonAnimalList.getDescription());
assertEquals(SchemaType.OBJECT, jsonAnimalList.getType());
Schema data = jsonAnimalList.getProperties().get("data");
assertNotNull(data);
assertEquals(5, data.getProperties().size());
assertEquals(SchemaType.OBJECT, data.getType());
Schema totalItems = data.getProperties().get("totalItems");
assertNotNull(totalItems);
assertEquals(SchemaType.INTEGER, totalItems.getType());
Schema items = data.getProperties().get("items");
assertNotNull(items);
assertEquals(SchemaType.ARRAY, items.getType());
assertEquals("#/components/schemas/Animal", items.getItems().getRef());
Schema itemMap = data.getProperties().get("itemMap");
assertNotNull(itemMap);
assertEquals(SchemaType.OBJECT, itemMap.getType());
assertNotNull(itemMap.getAdditionalPropertiesSchema());
assertEquals("#/components/schemas/Animal", itemMap.getAdditionalPropertiesSchema().getRef());
Schema textMap = data.getProperties().get("textMap");
assertNotNull(textMap);
assertEquals(SchemaType.OBJECT, textMap.getType());
assertNotNull(textMap.getAdditionalPropertiesSchema());
assertEquals(SchemaType.STRING, textMap.getAdditionalPropertiesSchema().getType());
Schema itemsMap = data.getProperties().get("itemsMap");
assertNotNull(itemsMap);
assertEquals(SchemaType.OBJECT, itemsMap.getType());
assertNotNull(itemsMap.getAdditionalPropertiesSchema());
assertEquals(SchemaType.ARRAY, itemsMap.getAdditionalPropertiesSchema().getType());
assertEquals("#/components/schemas/Animal", itemsMap.getAdditionalPropertiesSchema().getItems().getRef());
Schema animal = schemas.get("Animal");
assertNotNull(animal);
assertEquals(2, animal.getProperties().size());
assertEquals(SchemaType.OBJECT, animal.getType());
Schema name = animal.getProperties().get("name");
assertNotNull(name);
assertEquals(SchemaType.STRING, name.getType());
Schema age = animal.getProperties().get("age");
assertNotNull(age);
assertEquals(SchemaType.INTEGER, age.getType());
}
use of org.eclipse.microprofile.openapi.models.media.Schema in project drools by kiegroup.
the class DMNOASGeneratorImpl method prepareSerializaton.
private void prepareSerializaton() {
ObjectNode tree = JsonUtil.objectNode();
ObjectNode definitions = JsonUtil.objectNode();
tree.set("definitions", definitions);
for (Entry<DMNType, Schema> kv : schemas.entrySet()) {
SchemaWriter.writeSchema(definitions, kv.getValue(), namingPolicy.getName(kv.getKey()));
}
jsonSchema = tree;
}
use of org.eclipse.microprofile.openapi.models.media.Schema in project drools by kiegroup.
the class DMNTypeSchemas method generateSchemas.
public Map<DMNType, Schema> generateSchemas() {
Map<DMNType, Schema> schemas = new HashMap<>();
for (DMNType t : typesIndex) {
Schema schema = schemaFromType(t);
schemas.put(t, schema);
}
return schemas;
}
Aggregations