From 65f9a15c27a683f8e3bd736b8421c0120dece7be Mon Sep 17 00:00:00 2001 From: arielmirra Date: Wed, 31 Jan 2024 18:07:37 -0300 Subject: [PATCH 1/2] chore: fix imports in async files --- .../parser/context/Async2WebApiContext.scala | 11 +------ .../document/AsyncApiDocumentParser.scala | 30 +++---------------- .../Async20MultiPlatformValidationsTest.scala | 2 -- ...c20UniquePlatformUnitValidationsTest.scala | 1 - 4 files changed, 5 insertions(+), 39 deletions(-) diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/Async2WebApiContext.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/Async2WebApiContext.scala index 8143beeb8b..02eabd85b5 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/Async2WebApiContext.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/Async2WebApiContext.scala @@ -1,15 +1,7 @@ package amf.apicontract.internal.spec.async.parser.context import amf.apicontract.internal.spec.async._ -import amf.apicontract.internal.spec.async.parser.context.syntax.{ - Async20Syntax, - Async21Syntax, - Async22Syntax, - Async23Syntax, - Async24Syntax, - Async25Syntax, - Async26Syntax -} +import amf.apicontract.internal.spec.async.parser.context.syntax._ import amf.apicontract.internal.spec.common.AsyncWebApiDeclarations import amf.core.client.scala.config.ParsingOptions import amf.core.client.scala.parse.document.{ParsedReference, ParserContext} @@ -24,7 +16,6 @@ import amf.core.internal.remote.{ Spec } import amf.shapes.internal.spec.async.parser.Async2Settings -import amf.shapes.internal.spec.common.parser.SpecSettings import scala.collection.mutable diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/document/AsyncApiDocumentParser.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/document/AsyncApiDocumentParser.scala index beca4ee8b7..03629fdfff 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/document/AsyncApiDocumentParser.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/document/AsyncApiDocumentParser.scala @@ -1,32 +1,12 @@ package amf.apicontract.internal.spec.async.parser.document -import amf.aml.internal.parse.common.DeclarationKey import amf.apicontract.client.scala.model.document.APIContractProcessingData import amf.apicontract.client.scala.model.domain.api.AsyncApi -import amf.apicontract.client.scala.model.domain.bindings.{ - ChannelBindings, - MessageBindings, - OperationBindings, - ServerBindings -} -import amf.apicontract.client.scala.model.domain.{EndPoint, Operation, Parameter} +import amf.apicontract.client.scala.model.domain.EndPoint import amf.apicontract.internal.metamodel.domain.api.WebApiModel -import amf.apicontract.internal.metamodel.domain.bindings.{ - ChannelBindingsModel, - MessageBindingsModel, - OperationBindingsModel, - ServerBindingsModel -} -import amf.apicontract.internal.metamodel.domain.security.SecuritySchemeModel -import amf.apicontract.internal.spec.async.parser.bindings.{ - AsyncChannelBindingsParser, - AsyncMessageBindingsParser, - AsyncOperationBindingsParser, - AsyncServerBindingsParser -} import amf.apicontract.internal.spec.async.parser.context.AsyncWebApiContext import amf.apicontract.internal.spec.async.parser.domain._ -import amf.apicontract.internal.spec.async.parser.domain.declarations.{Async20DeclarationParser, AsyncDeclarationParser} +import amf.apicontract.internal.spec.async.parser.domain.declarations.AsyncDeclarationParser import amf.apicontract.internal.spec.common.parser._ import amf.apicontract.internal.spec.oas.parser.document.OasLikeDeclarationsHelper import amf.apicontract.internal.spec.oas.parser.domain.{OasLikeInformationParser, OasLikeTagsParser} @@ -35,15 +15,13 @@ import amf.apicontract.internal.validation.definitions.ParserSideValidations.{ MandatoryChannelsProperty } import amf.core.client.scala.model.document.Document -import amf.core.client.scala.model.domain.{AmfArray, AmfObject, AmfScalar, DomainElement} +import amf.core.client.scala.model.domain.{AmfArray, AmfObject, AmfScalar} import amf.core.client.scala.parse.document.SyamlParsedDocument -import amf.core.internal.annotations.DeclaredElement import amf.core.internal.metamodel.document.DocumentModel -import amf.core.internal.metamodel.domain.DomainElementModel import amf.core.internal.parser.domain.{Annotations, ScalarNode} import amf.core.internal.parser.{Root, YMapOps} import amf.core.internal.remote.Spec -import amf.shapes.internal.spec.common.parser.{AnnotationParser, OasLikeCreativeWorkParser, YMapEntryLike} +import amf.shapes.internal.spec.common.parser.{AnnotationParser, OasLikeCreativeWorkParser} import org.yaml.model.{YMap, YMapEntry, YType} abstract class AsyncApiDocumentParser(root: Root, spec: Spec, declarationParser: AsyncDeclarationParser)(implicit diff --git a/amf-cli/shared/src/test/scala/amf/validation/Async20MultiPlatformValidationsTest.scala b/amf-cli/shared/src/test/scala/amf/validation/Async20MultiPlatformValidationsTest.scala index 7ab097b939..8dccc36d3a 100644 --- a/amf-cli/shared/src/test/scala/amf/validation/Async20MultiPlatformValidationsTest.scala +++ b/amf-cli/shared/src/test/scala/amf/validation/Async20MultiPlatformValidationsTest.scala @@ -1,7 +1,5 @@ package amf.validation -import amf.core.client.common.validation.Async20Profile -import amf.core.internal.remote.{Async20YamlHint, Hint} import org.scalatest.matchers.should.Matchers class Async20MultiPlatformValidationsTest extends MultiPlatformReportGenTest with Matchers { diff --git a/amf-cli/shared/src/test/scala/amf/validation/Async20UniquePlatformUnitValidationsTest.scala b/amf-cli/shared/src/test/scala/amf/validation/Async20UniquePlatformUnitValidationsTest.scala index 8d9b4c11b8..8b48285c05 100644 --- a/amf-cli/shared/src/test/scala/amf/validation/Async20UniquePlatformUnitValidationsTest.scala +++ b/amf-cli/shared/src/test/scala/amf/validation/Async20UniquePlatformUnitValidationsTest.scala @@ -1,6 +1,5 @@ package amf.validation -import amf.core.internal.remote.{Async20JsonHint, Async20YamlHint, Hint} import org.scalatest.matchers.should.Matchers class Async20UniquePlatformUnitValidationsTest extends UniquePlatformReportGenTest with Matchers { From 9f65a3ff3cf419b317885780b6b043976e5e8991 Mon Sep 17 00:00:00 2001 From: arielmirra Date: Wed, 31 Jan 2024 18:07:50 -0300 Subject: [PATCH 2/2] W-12689951: add mercure binding in async21+ --- .../parser/bindings/AsyncBindingsParser.scala | 6 +---- .../parser/context/AsyncValidBindingSet.scala | 2 +- .../parser/context/syntax/Async21Syntax.scala | 3 ++- .../async20/bindings/mercure-binding.yaml | 23 +++++++++++++++++++ .../scala/amf/emit/Async20CycleTest.scala | 8 ++++++- 5 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 amf-cli/shared/src/test/resources/upanddown/cycle/async20/bindings/mercure-binding.yaml diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/bindings/AsyncBindingsParser.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/bindings/AsyncBindingsParser.scala index 993608bb1d..e430d9eb34 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/bindings/AsyncBindingsParser.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/bindings/AsyncBindingsParser.scala @@ -1,19 +1,14 @@ package amf.apicontract.internal.spec.async.parser.bindings -import amf.apicontract.internal.spec.async.parser.bindings.Bindings._ import amf.core.client.scala.model.domain._ import amf.core.internal.metamodel.Field import amf.core.internal.parser.YMapOps import amf.core.internal.parser.domain.{Annotations, ScalarNode} import amf.core.internal.validation.CoreValidations import amf.apicontract.internal.metamodel.domain.bindings.BindingType -import amf.apicontract.client.scala.model.domain.bindings._ import amf.apicontract.internal.spec.async.parser.context.AsyncWebApiContext import amf.apicontract.internal.spec.common.parser.SpecParserOps -import amf.apicontract.internal.validation.definitions.ParserSideValidations -import amf.shapes.internal.spec.common.JSONSchemaDraft7SchemaVersion import amf.shapes.internal.spec.common.parser.YMapEntryLike -import amf.shapes.internal.spec.oas.parser.OasTypeParser import org.yaml.model.{YMap, YMapEntry, YNode, YScalar} abstract class AsyncBindingsParser(entryLike: YMapEntryLike)(implicit ctx: AsyncWebApiContext) extends SpecParserOps { @@ -121,4 +116,5 @@ object Bindings { val Sqs = "sqs" val Stomp = "stomp" val Redis = "redis" + val Mercure = "mercure" } diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/AsyncValidBindingSet.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/AsyncValidBindingSet.scala index fc9069d08f..00323de96a 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/AsyncValidBindingSet.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/AsyncValidBindingSet.scala @@ -11,7 +11,7 @@ object AsyncValidBindingSet { private val basic = Set(Http, WebSockets, Kafka, Amqp, Amqp1, Mqtt, Mqtt5, Nats, Jms, Sns, Sqs, Stomp, Redis) val async20: AsyncValidBindingSet = AsyncValidBindingSet(basic) - val async21: AsyncValidBindingSet = async20 + val async21: AsyncValidBindingSet = async20.add(Mercure) val async22: AsyncValidBindingSet = async21 val async23: AsyncValidBindingSet = async22 val async24: AsyncValidBindingSet = async23 diff --git a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/syntax/Async21Syntax.scala b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/syntax/Async21Syntax.scala index 7d056ab879..9977ef0caa 100644 --- a/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/syntax/Async21Syntax.scala +++ b/amf-api-contract/shared/src/main/scala/amf/apicontract/internal/spec/async/parser/context/syntax/Async21Syntax.scala @@ -1,7 +1,8 @@ package amf.apicontract.internal.spec.async.parser.context.syntax +import amf.apicontract.internal.spec.async.parser.bindings.Bindings.Mercure import amf.shapes.internal.spec.common.parser.SpecSyntax object Async21Syntax extends SpecSyntax { - override val nodes: Map[String, Set[String]] = Async20Syntax.nodes + override val nodes: Map[String, Set[String]] = add(Async20Syntax.nodes, "bindings", Set(Mercure)) } diff --git a/amf-cli/shared/src/test/resources/upanddown/cycle/async20/bindings/mercure-binding.yaml b/amf-cli/shared/src/test/resources/upanddown/cycle/async20/bindings/mercure-binding.yaml new file mode 100644 index 0000000000..5ebda69016 --- /dev/null +++ b/amf-cli/shared/src/test/resources/upanddown/cycle/async20/bindings/mercure-binding.yaml @@ -0,0 +1,23 @@ +asyncapi: 2.1.0 +info: + title: test mercure binding + version: 1.0.0 +servers: + theName: + url: some.com + protocol: mercure + bindings: + mercure: {} +channels: + some-channel: + bindings: + mercure: {} + description: some channel + publish: + bindings: + mercure: {} + message: + bindings: + mercure: {} + payload: + type: string diff --git a/amf-cli/shared/src/test/scala/amf/emit/Async20CycleTest.scala b/amf-cli/shared/src/test/scala/amf/emit/Async20CycleTest.scala index dec6c1f763..e199706bc7 100644 --- a/amf-cli/shared/src/test/scala/amf/emit/Async20CycleTest.scala +++ b/amf-cli/shared/src/test/scala/amf/emit/Async20CycleTest.scala @@ -125,12 +125,18 @@ class Async20CycleTest extends FunSuiteCycleTests { FixtureData("Security schemes", "security-schemes.yaml", "security-schemes.yaml"), FixtureData("Operation and message traits", "operation-message-traits.yaml", "operation-message-traits.yaml"), FixtureData("components emission", "components-cycle.yaml", "components-cycle.yaml"), + // TODO: fill async 2.x with each spec new features FixtureData("Async 2.1 doc - empty", "empty-async21.yaml", "empty-async21.yaml"), FixtureData("Async 2.2 doc - empty", "empty-async22.yaml", "empty-async22.yaml"), FixtureData("Async 2.3 doc - empty", "empty-async23.yaml", "empty-async23.yaml"), FixtureData("Async 2.4 doc - empty", "empty-async24.yaml", "empty-async24.yaml"), FixtureData("Async 2.5 doc - empty", "empty-async25.yaml", "empty-async25.yaml"), - FixtureData("Async 2.6 doc - empty", "empty-async26.yaml", "empty-async26.yaml") + FixtureData("Async 2.6 doc - empty", "empty-async26.yaml", "empty-async26.yaml"), + FixtureData( + "mercure binding", + "bindings/mercure-binding.yaml", + "bindings/mercure-binding.yaml" + ) // TODO: figure out why this test is commented out // FixtureData("Channel params with refs", "references/channel-params.yaml", "references/channel-params.yaml"),