![JAR search and dependency download from the Maven repository](/logo.png)
com.reprezen.genflow.common.jsonschema.builder.ReferenceLinkNode.xtend Maven / Gradle / Ivy
package com.reprezen.genflow.common.jsonschema.builder
import com.fasterxml.jackson.databind.node.ObjectNode
import com.google.common.collect.Lists
import com.reprezen.rapidml.CollectionRealizationLevelEnum
import com.reprezen.rapidml.Feature
import com.reprezen.rapidml.ReferenceLink
import com.reprezen.rapidml.util.TagUtils
import java.util.List
class ReferenceLinkNode extends ReferenceTreatmentNode {
new(JsonSchemaNodeFactory director, ReferenceLink element) {
super(director, element)
}
override void writeType(ObjectNode node) {
if (TagUtils.getTagWithName(element, TagUtils.WITH_DEFAULT_OBJECT_REALIZATION).isPresent) {
val resourceLinkNode = factory.createDefaultLinkNode(element)
factory.definitionsNode.addReferenceToDefinition(node, resourceLinkNode)
} else {
setObjectAsType(node)
node.addVendorExtensions(getRapidExtensions(element))
val propertiesNode = node.putObject("properties")
val List requiredProperties = Lists.newArrayList()
requiredProperties.addAll(getRequiredPropertyNames(element.referenceRealization))
factory.addRapidLink(propertiesNode, requiredProperties, element);
node.writeRequiredProperties(requiredProperties)
for (Feature prop : getIncludedPrimitiveProperties(element)) {
factory.createFeatureNode(prop).write(propertiesNode)
}
}
}
override isArrayProperty() {
isMultiValued && (element.collectionRealizationLevel == CollectionRealizationLevelEnum.ITEM_LEVEL //
// ZEN-3978 - don't generate a link to a collection resource with item-level properties, only generate item-level properties
|| isLinkToCollectionWithItemBasedProperties(element))
}
def static isLinkToCollectionWithItemBasedProperties(ReferenceLink element) {
element.collectionRealizationLevel == CollectionRealizationLevelEnum.COLLECTION_LEVEL &&
!element.getReferenceRealization().getProperties().getAllIncludedProperties().isEmpty()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy