use of io.apicurio.datamodels.asyncapi.models.AaiMessageTrait in project apicurio-data-models by Apicurio.
the class Aai20IReferenceManipulationStrategy method attachAsComponent.
@Override
public ReferenceAndNode attachAsComponent(Document document, String name, Node component) {
if (!(document instanceof Aai20Document))
throw new IllegalArgumentException("Aai20Document expected.");
Aai20Document model = (Aai20Document) document;
if (model.components == null)
model.components = model.createComponents();
// TODO reduce code repetition?
if (component instanceof Aai20Message) {
if (model.components.messages != null && model.components.messages.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20Message definition = wrap(component, new Aai20Message(name), model);
// TODO this should be done by vvv
definition.attachToParent(model.components);
model.components.addMessage(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "messages/" + name, definition);
}
if (component instanceof AaiSecurityScheme) {
if (model.components.securitySchemes != null && model.components.securitySchemes.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20SecurityScheme definition = wrap(component, new Aai20SecurityScheme(name), model);
definition.attachToParent(model.components);
model.components.addSecurityScheme(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "securitySchemes/" + name, definition);
}
if (component instanceof Aai20SchemaDefinition) {
if (model.components.schemas != null && model.components.schemas.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20SchemaDefinition definition = wrap(component, new Aai20SchemaDefinition(name), model);
definition.attachToParent(model.components);
model.components.addSchemaDefinition(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "schemas/" + name, definition);
}
if (component instanceof AaiParameter) {
if (model.components.parameters != null && model.components.parameters.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20Parameter definition = wrap(component, new Aai20Parameter(name), model);
definition.attachToParent(model.components);
model.components.addParameter(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "parameters/" + name, definition);
}
if (component instanceof AaiCorrelationId) {
if (model.components.correlationIds != null && model.components.correlationIds.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20CorrelationId definition = wrap(component, new Aai20CorrelationId(name), model);
definition.attachToParent(model.components);
model.components.addCorrelationId(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "correlationIds/" + name, definition);
}
// ---
if (component instanceof AaiOperationTrait) {
if (model.components.operationTraits != null && model.components.operationTraits.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20OperationTraitDefinition definition = wrap(component, new Aai20OperationTraitDefinition(name), model);
definition.attachToParent(model.components);
model.components.addOperationTraitDefinition(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "operationTraits/" + name, definition);
}
if (component instanceof AaiMessageTrait) {
if (model.components.messageTraits != null && model.components.messageTraits.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20MessageTraitDefinition definition = wrap(component, new Aai20MessageTraitDefinition(name), model);
definition.attachToParent(model.components);
model.components.addMessageTraitDefinition(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "messageTraits/" + name, definition);
}
if (component instanceof AaiServerBindings) {
if (model.components.serverBindings != null && model.components.serverBindings.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20ServerBindingsDefinition definition = wrap(component, new Aai20ServerBindingsDefinition(name), model);
definition.attachToParent(model.components);
model.components.addServerBindingDefinition(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "serverBindings/" + name, definition);
}
if (component instanceof AaiChannelBindings) {
if (model.components.channelBindings != null && model.components.channelBindings.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20ChannelBindingsDefinition definition = wrap(component, new Aai20ChannelBindingsDefinition(name), model);
definition.attachToParent(model.components);
model.components.addChannelBindingDefinition(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "channelBindings/" + name, definition);
}
if (component instanceof AaiOperationBindings) {
if (model.components.operationBindings != null && model.components.operationBindings.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20OperationBindingsDefinition definition = wrap(component, new Aai20OperationBindingsDefinition(name), model);
definition.attachToParent(model.components);
model.components.addOperationBindingDefinition(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "operationBindings/" + name, definition);
}
if (component instanceof AaiMessageBindings) {
if (model.components.messageBindings != null && model.components.messageBindings.get(name) != null)
throw new IllegalArgumentException("Definition with that name already exists: " + name);
Aai20MessageBindingsDefinition definition = wrap(component, new Aai20MessageBindingsDefinition(name), model);
definition.attachToParent(model.components);
model.components.addMessageBindingDefinition(definition.getName(), definition);
return new ReferenceAndNode(PREFIX + "messageBindings/" + name, definition);
}
return null;
}
use of io.apicurio.datamodels.asyncapi.models.AaiMessageTrait in project apicurio-data-models by Apicurio.
the class AaiDataModelReader method readMessage.
public void readMessage(Object json, AaiMessage node) {
// payload
Object jPayload = JsonCompat.consumeProperty(json, Constants.PROP_PAYLOAD);
if (jPayload != null) {
node.payload = jPayload;
}
// traits
List<Object> traits = JsonCompat.consumePropertyArray(json, Constants.PROP_TRAITS);
if (traits != null) {
traits.forEach(trait -> {
AaiMessageTrait traitModel = nodeFactory.createMessageTrait(node, null);
this.readMessageTrait(trait, traitModel);
node.addTrait(traitModel);
});
}
// Process a "oneOf" message
List<Object> oneOfJson = JsonCompat.consumePropertyArray(json, Constants.PROP_ONE_OF);
if (oneOfJson != null) {
for (Object itemJson : oneOfJson) {
AaiMessage item = nodeFactory.createMessage(node, null);
this.readMessage(itemJson, item);
item._isOneOfMessage = true;
node.addOneOfMessage(item, null);
}
}
this.readMessageBase(json, node);
}
use of io.apicurio.datamodels.asyncapi.models.AaiMessageTrait in project apicurio-data-models by Apicurio.
the class RenameMessageTraitDefinitionCommand method execute.
@Override
public void execute(Document document) {
LoggerCompat.info("[RenameMessageTraitDefinitionCommand] Executing.");
this._references = new ArrayList<>();
AaiDocument doc = (AaiDocument) document;
if (renameMessageTraitDefinition(doc, this._oldName, this._newName)) {
String oldRef = nameToReference(this._oldName);
String newRef = nameToReference(this._newName);
MessageTraitRefFinder finder = new MessageTraitRefFinder(oldRef);
List<AaiMessageTrait> traits = finder.findIn(document);
for (AaiMessageTrait trait : traits) {
this._references.add(Library.createNodePath(trait));
trait.$ref = newRef;
}
}
}
use of io.apicurio.datamodels.asyncapi.models.AaiMessageTrait in project apicurio-data-models by Apicurio.
the class RenameMessageTraitDefinitionCommand method undo.
@Override
public void undo(Document document) {
LoggerCompat.info("[RenameMessageTraitDefinitionCommand] Reverting.");
if (this.renameMessageTraitDefinition((AaiDocument) document, this._newName, this._oldName)) {
String oldRef = this.nameToReference(this._oldName);
if (ModelUtils.isDefined(this._references)) {
this._references.forEach(ref -> {
AaiMessageTrait msgTrait = (AaiMessageTrait) ref.resolve(document);
msgTrait.$ref = oldRef;
});
}
}
}
Aggregations