![JAR search and dependency download from the Maven repository](/logo.png)
com.reprezen.genflow.common.jsonschema.builder.CollectionResourceNode Maven / Gradle / Ivy
package com.reprezen.genflow.common.jsonschema.builder;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Objects;
import com.google.common.base.Strings;
import com.reprezen.genflow.common.jsonschema.builder.DefinitionsNode;
import com.reprezen.genflow.common.jsonschema.builder.JsonSchemaNodeFactory;
import com.reprezen.genflow.common.jsonschema.builder.NamedSchemaNode;
import com.reprezen.genflow.common.jsonschema.builder.ObjectResourceNode;
import com.reprezen.genflow.common.jsonschema.builder.ReferenceLinkNode;
import com.reprezen.genflow.common.jsonschema.builder.ResourceLinkNode;
import com.reprezen.rapidml.CollectionRealizationEnum;
import com.reprezen.rapidml.CollectionResource;
import com.reprezen.rapidml.ReferenceLink;
import com.reprezen.rapidml.ResourceDefinition;
import com.reprezen.rapidml.ServiceDataResource;
import org.eclipse.emf.common.util.EList;
@SuppressWarnings("all")
public class CollectionResourceNode extends NamedSchemaNode {
public static class CollectionResourceArrayItemNode extends ObjectResourceNode {
public CollectionResourceArrayItemNode(final JsonSchemaNodeFactory director, final ServiceDataResource element) {
super(director, element);
}
@Override
public void writeBody(final ObjectNode node) {
CollectionRealizationEnum _resourceRealizationKind = ((CollectionResource) this.element).getResourceRealizationKind();
boolean _equals = Objects.equal(_resourceRealizationKind,
CollectionRealizationEnum.EMBEDDED_OBJECT_LIST);
if (_equals) {
super.writeBody(node);
} else {
}
}
@Override
public String getName() {
if ((this.element.isWithDefaultRealization() && Strings.isNullOrEmpty(this.element.getRealizationName()))) {
return this.factory.createStructureNode(this.element.getDataType()).getName();
}
String _collectionResourceName = CollectionResourceNode.getCollectionResourceName(this.element);
return (_collectionResourceName + "_item");
}
}
public static class ObjectResourceLinkNode extends ReferenceLinkNode {
public ObjectResourceLinkNode(final JsonSchemaNodeFactory director, final ReferenceLink element) {
super(director, element);
}
@Override
public boolean isArrayProperty() {
return false;
}
}
public CollectionResourceNode(final JsonSchemaNodeFactory director, final ServiceDataResource element) {
super(director, element);
}
@Override
public String getName() {
return CollectionResourceNode.getCollectionResourceName(this.element);
}
private static String getCollectionResourceName(final ServiceDataResource resource) {
String _xblockexpression = null;
{
if ((resource.isWithDefaultRealization() && (!Strings.isNullOrEmpty(resource.getRealizationName())))) {
return resource.getRealizationName();
}
_xblockexpression = resource.getName();
}
return _xblockexpression;
}
@Override
public void writeBody(final ObjectNode node) {
final ObjectNode items = node.put("type", "array").putObject("items");
final CollectionResourceNode.CollectionResourceArrayItemNode arrayItemNode = new CollectionResourceNode.CollectionResourceArrayItemNode(this.factory, this.element);
if (this.factory.schemaFormat.inlineSimpleTypes) {
arrayItemNode.writeBody(items);
} else {
CollectionRealizationEnum _resourceRealizationKind = ((CollectionResource) this.element).getResourceRealizationKind();
boolean _equals = Objects.equal(CollectionRealizationEnum.REFERENCE_LINK_LIST, _resourceRealizationKind);
if (_equals) {
EList _referenceLinks = this.element.getReferenceLinks();
for (final ReferenceLink hyperlink : _referenceLinks) {
DefinitionsNode _definitionsNode = this.factory.getDefinitionsNode();
ResourceDefinition _targetResource = hyperlink.getTargetResource();
ResourceLinkNode _resourceLinkNode = new ResourceLinkNode(this.factory, _targetResource);
_definitionsNode.addReferenceToDefinition(items, _resourceLinkNode);
}
} else {
this.factory.getDefinitionsNode().addReferenceToDefinition(items, arrayItemNode);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy