All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.reprezen.genflow.common.jsonschema.builder.StructureNode.xtend Maven / Gradle / Ivy

package com.reprezen.genflow.common.jsonschema.builder

import com.fasterxml.jackson.databind.node.ObjectNode
import com.reprezen.rapidml.Feature
import com.reprezen.rapidml.Structure

class StructureNode extends NamedSchemaNode {

	new(JsonSchemaNodeFactory director, Structure element) {
		super(director, element)
	}

	override writeBody(ObjectNode body) {
		writeBasicObject(body)
		writeProperties(body)
		writeRequiredProperties(body)
	}

	def protected writeBasicObject(ObjectNode body) {
		setObjectAsType(body)
		body.putDescription(getDocumentation(element))
		body.addVendorExtensions(getRapidExtensions(element))
	}

	def protected writeProperties(ObjectNode body) {
		val propertiesNode = body.putObject("properties")
		for (Feature includedProperty : element.ownedFeatures) {
			factory.createFeatureNode(includedProperty).write(propertiesNode)
		}
		return propertiesNode
	}

	def protected writeRequiredProperties(ObjectNode body) {
		body.writeRequiredProperties(getRequiredPropertyNames(element))
	}

	override getName() {
		element.getName()
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy