You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From the documentation https://www.asyncapi.com/docs/reference/specification/v3.0.0#channelBindingsObject - it appears that the Binding Object should be extendable.
When deserializing a specification the map contains a null Object in the getBindings map which, as someone wanting to produce a custom binding, makes life a bit more difficult.
How will this change help?
A user of the library will be able to access their binding extensions, and deserialize them to the appropriate type more simply.
Screenshots
channels:
fxConfig:
address: /PRIVATE/FX/CONFIGbindings:
x-datasource:
map:
- value: "%u"position: 2description: Channel for FX user configmessages:
FXConfigMessage:
$ref: "#/components/messages/FXConfig"
funmain() {
val objectMapper =ObjectMapper(YAMLFactory())
val api = objectMapper.readValue<AsyncAPI>(object {}::class.java.getResourceAsStream("/userconfig/asyncapi.yaml"))
api.channels?.forEach { (channelName, channel) ->
check(channel isChannel)
println(channel.bindings)
}
}
outputs:
{x-datasource=null}
How could it be implemented/designed?
It would be nice if it provided a JsonNode, or a Map like Channel#getExtensionFields in the case where it encounters an extension? It looks like this might be a simple change to ChannelBindingsDeserializer (and likely the other binding deserializers).
Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our contributors guide and the instructions about a basic recommended setup useful for opening a pull request. Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.
Why do we need this improvement?
From the documentation https://www.asyncapi.com/docs/reference/specification/v3.0.0#channelBindingsObject - it appears that the Binding Object should be extendable.
When deserializing a specification the map contains a
null
Object in thegetBindings
map which, as someone wanting to produce a custom binding, makes life a bit more difficult.How will this change help?
A user of the library will be able to access their binding extensions, and deserialize them to the appropriate type more simply.
Screenshots
outputs:
How could it be implemented/designed?
It would be nice if it provided a
JsonNode
, or aMap
likeChannel#getExtensionFields
in the case where it encounters an extension? It looks like this might be a simple change toChannelBindingsDeserializer
(and likely the other binding deserializers).I do not know if this is a breaking change or not as there may be code that depends on binding extensions being null in order to ignore them.
🚧 Breaking changes
Yes
👀 Have you checked for similar open issues?
🏢 Have you read the Contributing Guidelines?
Are you willing to work on this issue?
Yes I am willing to submit a PR!
The text was updated successfully, but these errors were encountered: