Skip to content

Commit

Permalink
Merge pull request #1039 from aml-org/r/v6.2.1
Browse files Browse the repository at this point in the history
R/v6.2.1
  • Loading branch information
emilianoascona authored Jun 6, 2024
2 parents be96e34 + 2654116 commit ece397f
Show file tree
Hide file tree
Showing 43 changed files with 2,392 additions and 190 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ hovers:
(38,8):
- EndPoint in the API holding a number of executable operations
(38,16):
- Action that can be executed using a particular HTTP invocation
- EndPoint in the API holding a number of executable operations
(39,9):
- Human readable description of an element
(39,21):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ hovers:
(46,8):
- EndPoint in the API holding a number of executable operations
(46,16):
- Action that can be executed using a particular HTTP invocation
- EndPoint in the API holding a number of executable operations
(47,8):
- Action that can be executed using a particular HTTP invocation
(47,14):
Expand Down Expand Up @@ -259,7 +259,7 @@ hovers:
(72,9):
- EndPoint in the API holding a number of executable operations
(72,17):
- Action that can be executed using a particular HTTP invocation
- EndPoint in the API holding a number of executable operations
(73,8):
- Bindings for this endpoint
(73,13): []
Expand Down Expand Up @@ -349,7 +349,7 @@ hovers:
(97,8):
- EndPoint in the API holding a number of executable operations
(97,16):
- Action that can be executed using a particular HTTP invocation
- EndPoint in the API holding a number of executable operations
(98,8):
- Bindings for this endpoint
(98,13): []
Expand Down Expand Up @@ -426,7 +426,7 @@ hovers:
(118,8):
- EndPoint in the API holding a number of executable operations
(118,16):
- Action that can be executed using a particular HTTP invocation
- EndPoint in the API holding a number of executable operations
(119,7):
- Action that can be executed using a particular HTTP invocation
(119,12):
Expand Down Expand Up @@ -460,13 +460,13 @@ hovers:
(128,32):
- "'exclusive' or 'nonexclusive'. Only applicable when destinationType is 'queue'."
(129,23):
- The maximum amount of message spool that the given queue may use. Only applicable when destinationType is 'queue'.
- The maximum size of the message spool used by the queue.
(129,35):
- The maximum amount of message spool that the given queue may use. Only applicable when destinationType is 'queue'.
- The maximum size of the message spool used by the queue.
(130,19):
- The maximum TTL to apply to messages to be spooled. Only applicable when destinationType is 'queue'.
- The maximum time-to-live for messages in the queue.
(130,26):
- The maximum TTL to apply to messages to be spooled. Only applicable when destinationType is 'queue'.
- The maximum time-to-live for messages in the queue.
(131,25):
- A list of topics that the queue subscribes to, only applicable when destinationType is 'queue'. If none is given, the queue subscribes to the topic as represented by the channel name.
(131,35):
Expand Down Expand Up @@ -531,9 +531,9 @@ hovers:
(151,23):
- "The encoding of the message "
(152,12):
- Name of the schema that messages published should be validated against
- Human readable name for the object
(152,36):
- Name of the schema that messages published should be validated against
- Human readable name for the object
(153,17):
- The minimum (inclusive) revision allowed for validating messages
(153,29):
Expand Down Expand Up @@ -634,9 +634,9 @@ hovers:
- Define Schema
(181,17): []
(182,14):
- The name of the schema
- Human readable name for the object
(182,39):
- The name of the schema
- Human readable name for the object
(183,14):
- The type of the schema
(183,20):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,23 @@ case class ALSConfigurationState(
}

def configForSpec(spec: Spec): AMLSpecificConfiguration =
AMLSpecificConfiguration(getAmlConfig(spec match {
case Spec.RAML10 => projectState.customSetUp(RAMLConfiguration.RAML10())
case Spec.RAML08 => projectState.customSetUp(RAMLConfiguration.RAML08())
case Spec.OAS30 => projectState.customSetUp(OASConfiguration.OAS30())
case Spec.OAS20 => projectState.customSetUp(OASConfiguration.OAS20())
case Spec.ASYNC20 => projectState.customSetUp(AsyncAPIConfiguration.Async20())
case Spec.GRAPHQL => projectState.customSetUp(ConfigurationAdapter.adapt(GraphQLConfiguration.GraphQL()))
case Spec.JSONSCHEMA => projectState.customSetUp(ConfigurationAdapter.adapt(JsonSchemaConfiguration.JsonSchema()))
case _ => predefinedWithDialects
}))
AMLSpecificConfiguration(
getAmlConfig(apiConfigurationForSpec(spec).map(projectState.customSetUp).getOrElse(predefinedWithDialects))
)

private def apiConfigurationForSpec(spec: Spec): Option[AMFConfiguration] =
spec match {
case Spec.RAML10 => Some(RAMLConfiguration.RAML10())
case Spec.RAML08 => Some(RAMLConfiguration.RAML08())
case Spec.OAS30 => Some(OASConfiguration.OAS30())
case Spec.OAS20 => Some(OASConfiguration.OAS20())
case Spec.ASYNC20 => Some(AsyncAPIConfiguration.Async20())
case Spec.ASYNC26 => Some(AsyncAPIConfiguration.Async20())
case Spec.GRAPHQL => Some(ConfigurationAdapter.adapt(GraphQLConfiguration.GraphQL()))
case Spec.JSONSCHEMA => Some(ConfigurationAdapter.adapt(JsonSchemaConfiguration.JsonSchema()))
case _ if spec.isAsync => Some(AsyncAPIConfiguration.Async20())
case _ => None
}

def getAmfConfig(url: String): AMFConfiguration = {
val base =
Expand All @@ -83,7 +90,8 @@ case class ALSConfigurationState(
val base = spec match {
case GRAPHQL => GraphQLConfiguration.GraphQL()
// case GRPC =>
case _ => APIConfiguration.fromSpec(spec)
case _ =>
APIConfiguration.fromSpec(spec)
}
getAmfConfig(base)
}
Expand Down Expand Up @@ -209,11 +217,10 @@ case class ALSConfigurationState(
def defaultDefinitionSearch =
allDialects(configurationState).find(d => ProfileMatcher.spec(d).contains(bu.sourceSpec.getOrElse(Spec.AMF)))

def overridenSpecs: Option[Dialect] = {
if (bu.sourceSpec.exists(_.id.startsWith("ASYNC 2"))) // the `isAsync` method is not currently working properly
def overwrittenSpecs: Option[Dialect] =
if (bu.sourceSpec.exists(_.isAsync))
allDialects(configurationState).find(d => ProfileMatcher.spec(d).contains(Spec.ASYNC20))
else None
}

bu match {
case di: DialectInstanceUnit =>
Expand All @@ -230,7 +237,7 @@ case class ALSConfigurationState(
.find(d => d.version().option().contains(jsonSchema.schemaVersion.value()))
.orElse(defaultDefinitionSearch)
case _ =>
defaultDefinitionSearch.orElse(overridenSpecs)
defaultDefinitionSearch.orElse(overwrittenSpecs)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ object ProfileMatcher {
case Spec.ASYNC23 => ProfileNames.ASYNC20
case Spec.ASYNC24 => ProfileNames.ASYNC20
case Spec.ASYNC25 => ProfileNames.ASYNC20
case Spec.ASYNC26 => ProfileNames.ASYNC20
case Spec.ASYNC26 => ProfileNames.ASYNC26
case Spec.AML => ProfileNames.AML
case Spec.GRAPHQL => ProfileNames.GRPC
case Spec.JSONSCHEMA => ProfileNames.JSONSCHEMA
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,24 @@ object AsyncApi20Dialect extends BaseDialect {
WsChannelBindingObject,
LastWillMqttServerBindingObject,
KafkaServerBindingObject,
MqttServerBindingObjectNode,
MqttServerBinding10ObjectNode,
MqttServerBinding20ObjectNode,
AmqpMessageBindingObjectNode,
KafkaMessageBindingObjectNode,
KafkaMessageBinding010ObjectNode,
KafkaMessageBinding030ObjectNode,
MqttMessageBindingObjectNode,
HttpMessageBindingObjectNode,
MqttMessageBinding10ObjectNode,
MqttMessageBinding20ObjectNode,
HttpMessageBinding20ObjectNode,
HttpMessageBinding30ObjectNode,
Amqp091OperationBindingObjectNode,
Amqp091OperationBinding010ObjectNode,
Amqp091OperationBinding030ObjectNode,
KafkaOperationBindingObjectNode,
HttpOperationBindingObjectNode,
MqttOperationBindingObjectNode,
HttpOperationBinding10ObjectNode,
HttpOperationBinding20ObjectNode,
MqttOperationBinding10ObjectNode,
MqttOperationBinding20ObjectNode,
QueueAmqpChannelBinding,
QueueAmqpChannel010Binding,
QueueAmqpChannel020Binding,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ trait AsyncApiServerObject extends DialectNode {
.withId(location + "#/declarations/ServerObject/name")
.withName("name")
.withNodePropertyMapping(ServerModel.Name.value.iri())
.withMinCount(1)
.withLiteralRange(xsdString.iri()),
PropertyMapping()
.withId(location + "#/declarations/ServerObject/description")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.mulesoft.amfintegration.dialect.dialects.asyncapi20.bindings
import amf.aml.client.scala.model.domain.PropertyMapping
import amf.apicontract.internal.metamodel.domain.bindings.{BindingType, BindingVersion, GooglePubSubMessageBindingModel}
import amf.core.client.scala.vocabulary.Namespace.XsdTypes.xsdString
import org.mulesoft.amfintegration.dialect.dialects.asyncapi26.bindings.GooglePubSubMessageBindingObject.{
import org.mulesoft.amfintegration.dialect.dialects.asyncapi26.bindings.GooglePubSubMessageBinding10Object.{
location,
name
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,21 @@ package org.mulesoft.amfintegration.dialect.dialects.asyncapi20.bindings
import amf.aml.client.scala.model.domain.PropertyMapping
import amf.apicontract.internal.metamodel.domain.bindings.{
Amqp091MessageBindingModel,
HttpMessageBinding020Model,
HttpMessageBinding030Model,
HttpMessageBindingModel,
KafkaMessageBinding010Model,
KafkaMessageBinding030Model,
KafkaMessageBindingModel,
MessageBindingModel,
MessageBindingsModel,
MqttMessageBinding010Model,
MqttMessageBinding020Model,
MqttMessageBindingModel
}
import amf.core.client.scala.vocabulary.Namespace.XsdTypes.xsdString
import amf.core.client.scala.vocabulary.Namespace.XsdTypes.{xsdInteger, xsdString}
import org.mulesoft.amfintegration.dialect.dialects.asyncapi20.bindings.AmqpMessageBindingObjectNode.{location, name}
import org.mulesoft.amfintegration.dialect.dialects.asyncapi20.schema.NodeShapeAsync2Node
import org.mulesoft.amfintegration.dialect.dialects.oas.nodes.DialectNode

object MessageBindingObjectNode extends BindingObjectNode {
Expand All @@ -29,7 +35,21 @@ object MessageBindingsObjectNode extends DialectNode {
override def properties: Seq[PropertyMapping] = Nil
}

object HttpMessageBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
object HttpMessageBinding20ObjectNode extends BaseHttpMessageBindingObjectNode {
override def nodeTypeMapping: String = HttpMessageBinding020Model.`type`.head.iri()

}
object HttpMessageBinding30ObjectNode extends BaseHttpMessageBindingObjectNode {
override def nodeTypeMapping: String = HttpMessageBinding030Model.`type`.head.iri()
override def properties: Seq[PropertyMapping] = super.properties ++ Seq(
PropertyMapping()
.withId(location + s"#/declarations/$name/statusCode")
.withName("statusCode")
.withNodePropertyMapping(HttpMessageBinding030Model.StatusCode.value.iri())
.withLiteralRange(xsdInteger.iri())
)
}
trait BaseHttpMessageBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
override def name: String = "HttpMessageBindingObjectNode"

override def nodeTypeMapping: String = HttpMessageBindingModel.`type`.head.iri()
Expand Down Expand Up @@ -101,7 +121,41 @@ object AmqpMessageBindingObjectNode extends DialectNode with BindingVersionPrope
) :+ bindingVersion
}

object MqttMessageBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
object MqttMessageBinding10ObjectNode extends BaseMqttMessageBindingObjectNode {
override def nodeTypeMapping: String = MqttMessageBinding010Model.`type`.head.iri()
}
object MqttMessageBinding20ObjectNode extends BaseMqttMessageBindingObjectNode {
override def nodeTypeMapping: String = MqttMessageBinding020Model.`type`.head.iri()

override def properties: Seq[PropertyMapping] = super.properties ++ Seq(
PropertyMapping()
.withId(location + s"#/declarations/$name/payloadFormatIndicator")
.withName("payloadFormatIndicator")
.withNodePropertyMapping(MqttMessageBinding020Model.PayloadFormatIndicator.value.iri())
.withLiteralRange(xsdInteger.iri()),
PropertyMapping()
.withId(location + s"#/declarations/$name/correlationData")
.withName("correlationData")
.withNodePropertyMapping(MqttMessageBinding020Model.CorrelationData.value.iri())
.withObjectRange(Seq(NodeShapeAsync2Node.id)),
PropertyMapping()
.withId(location + s"#/declarations/$name/contentType")
.withName("contentType")
.withNodePropertyMapping(MqttMessageBinding020Model.ContentType.value.iri())
.withLiteralRange(xsdString.iri()),
PropertyMapping()
.withId(location + s"#/declarations/$name/responseTopic")
.withName("responseTopic")
.withNodePropertyMapping(MqttMessageBinding020Model.ResponseTopic.value.iri())
.withLiteralRange(xsdString.iri()),
PropertyMapping()
.withId(location + s"#/declarations/$name/responseTopicSchema")
.withName("responseTopicSchema")
.withNodePropertyMapping(MqttMessageBinding020Model.ResponseTopicSchema.value.iri())
.withObjectRange(Seq(NodeShapeAsync2Node.id))
)
}
trait BaseMqttMessageBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
override def name: String = "MqttMessageBindingObjectNode"

override def nodeTypeMapping: String = MqttMessageBindingModel.`type`.head.iri()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,18 @@ import amf.apicontract.internal.metamodel.domain.bindings.{
Amqp091OperationBinding010Model,
Amqp091OperationBinding030Model,
Amqp091OperationBindingModel,
HttpOperationBinding010Model,
HttpOperationBinding020Model,
HttpOperationBindingModel,
KafkaOperationBindingModel,
MqttOperationBinding010Model,
MqttOperationBinding020Model,
MqttOperationBindingModel,
OperationBindingModel,
OperationBindingsModel
}
import amf.core.client.scala.vocabulary.Namespace.XsdTypes.{xsdBoolean, xsdInteger, xsdString}
import org.mulesoft.amfintegration.dialect.dialects.asyncapi20.schema.NodeShapeAsync2Node
import org.mulesoft.amfintegration.dialect.dialects.oas.nodes.DialectNode

object OperationBindingObjectNode extends BindingObjectNode {
Expand All @@ -29,24 +34,37 @@ object OperationBindingsObjectNode extends DialectNode {
override def properties: Seq[PropertyMapping] = Nil
}

object HttpOperationBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
object HttpOperationBinding10ObjectNode extends BaseHttpOperationBindingObjectNode {
override def nodeTypeMapping: String = HttpOperationBinding010Model.`type`.head.iri()
override def properties: Seq[PropertyMapping] = super.properties ++ Seq(
PropertyMapping()
.withId(location + s"#/declarations/$name/type")
.withName("type")
.withNodePropertyMapping(HttpOperationBinding010Model.OperationType.value.iri()) // todo: http node mappings?
.withLiteralRange(xsdString.iri())
.withEnum(Seq("request", "response"))
)
}
object HttpOperationBinding20ObjectNode extends BaseHttpOperationBindingObjectNode {
override def nodeTypeMapping: String = HttpOperationBinding020Model.`type`.head.iri()
}
trait BaseHttpOperationBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
override def name: String = "HttpOperationBindingObjectNode"

override def nodeTypeMapping: String = HttpOperationBindingModel.`type`.head.iri()

override def properties: Seq[PropertyMapping] = Seq(
PropertyMapping()
.withId(location + s"#/declarations/$name/type")
.withName("type")
.withNodePropertyMapping(HttpOperationBindingModel.OperationType.value.iri()) // todo: http node mappings?
.withLiteralRange(xsdString.iri())
.withEnum(Seq("request", "response")),
PropertyMapping()
.withId(location + s"#/declarations/$name/method")
.withName("method")
.withNodePropertyMapping(HttpOperationBindingModel.Method.value.iri()) // todo: http node mappings?
.withLiteralRange(xsdString.iri())
.withEnum(Seq("GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS", "CONNECT", "TRACE"))
.withEnum(Seq("GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS", "CONNECT", "TRACE")),
PropertyMapping()
.withId(location + s"#/declarations/$name/query")
.withName("query")
.withNodePropertyMapping(HttpOperationBindingModel.Query.value.iri()) // todo: http node mappings?
.withObjectRange(Seq(NodeShapeAsync2Node.id))
) :+ bindingVersion
}

Expand Down Expand Up @@ -152,7 +170,27 @@ object Amqp091OperationBinding030ObjectNode extends AmqpOperationBindingObjectNo
)
}

object MqttOperationBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
object MqttOperationBinding10ObjectNode extends BaseMqttOperationBindingObjectNode {
override def nodeTypeMapping: String = MqttOperationBinding010Model.`type`.head.iri()
}

object MqttOperationBinding20ObjectNode extends BaseMqttOperationBindingObjectNode {
override def nodeTypeMapping: String = MqttOperationBinding020Model.`type`.head.iri()
override def properties: Seq[PropertyMapping] = Seq(
PropertyMapping()
.withId(location + s"#/declarations/$name/messageExpiryInterval")
.withName("messageExpiryInterval")
.withNodePropertyMapping(MqttOperationBinding020Model.MessageExpiryInterval.value.iri())
.withLiteralRange(xsdInteger.iri()),
PropertyMapping()
.withId(location + s"#/declarations/$name/messageExpiryIntervalSchema")
.withName("messageExpiryIntervalSchema")
.withNodePropertyMapping(MqttOperationBinding020Model.MessageExpiryIntervalSchema.value.iri())
.withObjectRange(Seq(NodeShapeAsync2Node.id))
)
}

trait BaseMqttOperationBindingObjectNode extends DialectNode with BindingVersionPropertyMapping {
override def name: String = "MqttOperationBindingObjectNode"

override def nodeTypeMapping: String = MqttOperationBindingModel.`type`.head.iri()
Expand Down
Loading

0 comments on commit ece397f

Please sign in to comment.