use of io.apicurio.datamodels.core.models.common.Parameter in project apicurio-data-models by Apicurio.
the class ChangeParameterTypeCommand method undo.
/**
* @see io.apicurio.datamodels.cmd.ICommand#undo(io.apicurio.datamodels.core.models.Document)
*/
@Override
public void undo(Document document) {
LoggerCompat.info("[ChangeParameterTypeCommand] Reverting.");
Parameter param = (Parameter) this._paramPath.resolve(document);
if (this.isNullOrUndefined(param)) {
return;
}
IOasParameterParent parent = (IOasParameterParent) param.parent();
Parameter oldParam = parent.createParameter();
Library.readNode(this._oldParameter, oldParam);
this.doRestoreParameter(param, oldParam);
// let pindex: number = parent.parameters.indexOf(param);
// parent.parameters.splice(pindex, 1, oldParam);
}
use of io.apicurio.datamodels.core.models.common.Parameter in project apicurio-data-models by Apicurio.
the class DataModelWriter method visitParameterDefinition.
/**
* @see io.apicurio.datamodels.core.visitors.IVisitor#visitParameterDefinition(io.apicurio.datamodels.core.models.common.IDefinition)
*/
@Override
public void visitParameterDefinition(IDefinition node) {
Parameter pdef = (Parameter) node;
Object parent = this.lookupParentJson(pdef);
Object json = JsonCompat.objectNode();
this.writeParameter(json, pdef);
this.writeExtraProperties(json, pdef);
addParameterDefinitionToParent(parent, json, node);
this.updateIndex(pdef, json);
}
use of io.apicurio.datamodels.core.models.common.Parameter in project apicurio-data-models by Apicurio.
the class ChangeParameterTypeCommand method execute.
/**
* @see io.apicurio.datamodels.cmd.ICommand#execute(io.apicurio.datamodels.core.models.Document)
*/
@Override
public void execute(Document document) {
LoggerCompat.info("[ChangeParameterTypeCommand] Executing.");
Parameter param = (Parameter) this._paramPath.resolve(document);
if (this.isNullOrUndefined(param)) {
return;
}
// Save the old info (for later undo operation)
this._oldParameter = Library.writeNode(param);
// Change the parameter type
this.doChangeParameter(document, param);
}
use of io.apicurio.datamodels.core.models.common.Parameter in project apicurio-data-models by Apicurio.
the class Oas20to30TransformationVisitor method visitParameter.
/**
* @see io.apicurio.datamodels.core.visitors.IVisitor#visitParameter(io.apicurio.datamodels.core.models.common.Parameter)
*/
@Override
public void visitParameter(Parameter node) {
Oas20Parameter param20 = (Oas20Parameter) node;
if (NodeCompat.equals(param20.in, "body")) {
Oas30Operation operation30 = (Oas30Operation) this.lookup(this.findParentOperation(param20));
if (!NodeCompat.isNullOrUndefined(operation30)) {
Oas30RequestBody body30 = (Oas30RequestBody) operation30.createRequestBody();
operation30.requestBody = body30;
body30.description = param20.description;
body30.required = param20.required;
if (!NodeCompat.isNullOrUndefined(param20.schema)) {
List<String> consumes = this.findConsumes(param20);
Oas20Schema schema = (Oas20Schema) param20.schema;
consumes.forEach(ct -> {
Oas30MediaType mediaType30 = body30.createMediaType(ct);
body30.addMediaType(ct, mediaType30);
Oas30Schema schema30 = mediaType30.createSchema();
mediaType30.schema = this.toSchema(schema, schema30, true);
this.mapNode(schema, schema30);
});
}
}
} else if (NodeCompat.equals(param20.in, "formData")) {
Oas30Operation operation30 = (Oas30Operation) this.lookup(this.findParentOperation(param20));
if (!NodeCompat.isNullOrUndefined(operation30)) {
List<String> consumes = this.findConsumes(param20);
if (!this.hasFormDataMimeType(consumes)) {
consumes = NodeCompat.asList("application/x-www-form-urlencoded");
}
consumes.forEach(ct -> {
if (this.isFormDataMimeType(ct)) {
Oas30RequestBody body30 = operation30.requestBody;
if (NodeCompat.isNullOrUndefined(body30)) {
body30 = operation30.createRequestBody();
operation30.requestBody = body30;
body30.required = true;
}
Oas30MediaType mediaType30 = body30.getMediaType(ct);
if (NodeCompat.isNullOrUndefined(mediaType30)) {
mediaType30 = body30.createMediaType(ct);
body30.addMediaType(ct, mediaType30);
}
Oas30Schema schema30 = mediaType30.schema;
if (NodeCompat.isNullOrUndefined(schema30)) {
schema30 = mediaType30.createSchema();
mediaType30.schema = schema30;
schema30.type = "object";
}
Oas30PropertySchema property30 = (Oas30PropertySchema) schema30.createPropertySchema(param20.name);
schema30.addProperty(param20.name, property30);
property30.description = param20.description;
this.toSchema(param20, property30, false);
this.mapNode(param20, schema30);
}
});
}
} else {
if (this.isRef(param20)) {
Oas20ParameterDefinition paramDef = (Oas20ParameterDefinition) ReferenceUtil.resolveRef(param20.$ref, param20);
// Request Bodies. So a reference to a "body" param should become a reference to a request body.
if (!NodeCompat.isNullOrUndefined(paramDef) && NodeCompat.equals(paramDef.in, "body")) {
Oas30Operation parent30 = (Oas30Operation) this.lookup(this.findParentOperation(param20));
if (!NodeCompat.isNullOrUndefined(parent30)) {
Oas30RequestBody body30 = parent30.createRequestBody();
parent30.requestBody = body30;
body30.$ref = "#/components/requestBodies/" + paramDef.getName();
this.mapNode(param20, body30);
return;
}
}
// treat the param as though it is inlined (which will result in a requestBody model).
if (!NodeCompat.isNullOrUndefined(paramDef) && NodeCompat.equals(paramDef.in, "formData")) {
// Inline the parameter definition and then re-visit it.
Library.readNode(Library.writeNode(paramDef), param20);
param20.$ref = null;
this.visitParameter(param20);
return;
}
}
// Now we have normal handling of a parameter, examples include path params, query params, header params, etc.
IOasParameterParent parent30 = (IOasParameterParent) this.lookup(param20.parent());
Oas30Parameter param30 = (Oas30Parameter) parent30.createParameter();
parent30.addParameter(param30);
this.transformParam(param20, param30);
this.mapNode(param20, param30);
}
}
Aggregations