![JAR search and dependency download from the Maven repository](/logo.png)
com.reprezen.genflow.common.jsonschema.builder.DefinitionsNode Maven / Gradle / Ivy
package com.reprezen.genflow.common.jsonschema.builder;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
import com.reprezen.genflow.common.jsonschema.builder.JsonSchemaNode;
import com.reprezen.genflow.common.jsonschema.builder.JsonSchemaNodeFactory;
import com.reprezen.genflow.common.jsonschema.builder.NamedSchemaNode;
import com.reprezen.rapidml.ResourceAPI;
import com.reprezen.rapidml.ResourceDefinition;
import com.reprezen.rapidml.ServiceDataResource;
import com.reprezen.rapidml.Structure;
import com.reprezen.rapidml.TypedMessage;
import com.reprezen.rapidml.ZenModel;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.common.util.EList;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IteratorExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
@SuppressWarnings("all")
public class DefinitionsNode extends JsonSchemaNode {
private final ObjectNode definitionsNode;
private final Set generatedDefinitionNames = CollectionLiterals.newHashSet();
public DefinitionsNode(final JsonSchemaNodeFactory jsonSchemaNodeFactory, final ZenModel element) {
this(jsonSchemaNodeFactory, element, new ObjectMapper().createObjectNode());
}
public DefinitionsNode(final JsonSchemaNodeFactory jsonSchemaNodeFactory, final ZenModel element, final ObjectNode definitionsNode) {
super(jsonSchemaNodeFactory, element);
this.definitionsNode = definitionsNode;
}
@Override
public ObjectNode write(final ObjectNode parentNode) {
final Function1> _function = (ResourceAPI it) -> {
return it.getOwnedResourceDefinitions();
};
final Iterable resources = Iterables.filter(Iterables.concat(ListExtensions.>map(this.element.getResourceAPIs(), _function)), ServiceDataResource.class);
for (final ServiceDataResource resource : resources) {
this.writeTopLevelNode(this.factory.createResourceNode(resource));
}
final Function1 _function_1 = (TypedMessage it) -> {
Structure _actualType = it.getActualType();
return Boolean.valueOf((_actualType != null));
};
final List messages = IteratorExtensions.toList(IteratorExtensions.filter(Iterators.filter(this.element.eAllContents(), TypedMessage.class), _function_1));
for (final TypedMessage message : messages) {
this.writeTopLevelNode(this.factory.createTypedMessageNode(message));
}
return this.definitionsNode;
}
public void addReferenceToDefinition(final ObjectNode node, final NamedSchemaNode> builder) {
String _name = builder.getName();
String _plus = ("#/definitions/" + _name);
node.put("$ref", _plus);
this.writeTopLevelNode(builder);
}
private void writeTopLevelNode(final NamedSchemaNode> builder) {
final boolean isRecursive = this.generatedDefinitionNames.contains(builder.getName());
if ((!isRecursive)) {
this.generatedDefinitionNames.add(builder.getName());
builder.write(this.definitionsNode);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy