diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/ChannelBindingsDeserializer.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/ChannelBindingsDeserializer.java
index ec7a235b..4f9f317f 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/ChannelBindingsDeserializer.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/ChannelBindingsDeserializer.java
@@ -1,6 +1,6 @@
package com.asyncapi.bindings;
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding;
+import com.asyncapi.bindings.amqp.AMQPChannelBinding;
import com.asyncapi.bindings.amqp1.v0._1_0.channel.AMQP1ChannelBinding;
import com.asyncapi.bindings.anypointmq.v0._0_1.channel.AnypointMQChannelBinding;
import com.asyncapi.bindings.googlepubsub.v0._1_0.channel.GooglePubSubChannelBinding;
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/MessageBindingsDeserializer.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/MessageBindingsDeserializer.java
index f817f2fb..4c5e9b4d 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/MessageBindingsDeserializer.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/MessageBindingsDeserializer.java
@@ -1,6 +1,6 @@
package com.asyncapi.bindings;
-import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBinding;
+import com.asyncapi.bindings.amqp.AMQPMessageBinding;
import com.asyncapi.bindings.amqp1.v0._1_0.message.AMQP1MessageBinding;
import com.asyncapi.bindings.anypointmq.v0._0_1.message.AnypointMQMessageBinding;
import com.asyncapi.bindings.googlepubsub.v0._1_0.message.GooglePubSubMessageBinding;
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/OperationBindingsDeserializer.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/OperationBindingsDeserializer.java
index 4a0b19ab..931fcb31 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/OperationBindingsDeserializer.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/OperationBindingsDeserializer.java
@@ -1,6 +1,6 @@
package com.asyncapi.bindings;
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding;
+import com.asyncapi.bindings.amqp.AMQPOperationBinding;
import com.asyncapi.bindings.amqp1.v0._1_0.operation.AMQP1OperationBinding;
import com.asyncapi.bindings.anypointmq.v0._0_1.operation.AnypointMQOperationBinding;
import com.asyncapi.bindings.googlepubsub.v0._1_0.operation.GooglePubSubOperationBinding;
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/ServerBindingsDeserializer.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/ServerBindingsDeserializer.java
index 142818a4..ef39d492 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/ServerBindingsDeserializer.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/ServerBindingsDeserializer.java
@@ -1,6 +1,6 @@
package com.asyncapi.bindings;
-import com.asyncapi.bindings.amqp.v0._2_0.server.AMQPServerBinding;
+import com.asyncapi.bindings.amqp.AMQPServerBinding;
import com.asyncapi.bindings.amqp1.v0._1_0.server.AMQP1ServerBinding;
import com.asyncapi.bindings.anypointmq.v0._0_1.server.AnypointMQServerBinding;
import com.asyncapi.bindings.googlepubsub.v0._1_0.server.GooglePubSubServerBinding;
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPChannelBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPChannelBinding.java
new file mode 100644
index 00000000..eedcef70
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPChannelBinding.java
@@ -0,0 +1,35 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.ChannelBinding;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Describes AMQP 0-9-1 channel binding.
+ *
+ * Contains information about the channel representation in AMQP.
+ *
+ * @since 1.0.0-RC2
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.NAME,
+ include = JsonTypeInfo.As.EXISTING_PROPERTY,
+ defaultImpl = com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding.class,
+ property = "bindingVersion",
+ visible = true
+)
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._1_0.channel.AMQPChannelBinding.class, name = "0.1.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding.class, name = "0.2.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding.class, names = {
+ "0.3.0",
+ "latest"
+ }),
+})
+@Data
+@EqualsAndHashCode(callSuper = true)
+public abstract class AMQPChannelBinding extends ChannelBinding {}
\ No newline at end of file
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPMessageBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPMessageBinding.java
new file mode 100644
index 00000000..6dfa065f
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPMessageBinding.java
@@ -0,0 +1,35 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.MessageBinding;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Describes AMQP 0-9-1 message binding.
+ *
+ * Contains information about the message representation in AMQP.
+ *
+ * @since 1.0.0-RC2
+ * @see AMQP message binding
+ * @author Pavel Bodiachevskii
+ */
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.NAME,
+ include = JsonTypeInfo.As.EXISTING_PROPERTY,
+ defaultImpl = com.asyncapi.bindings.amqp.v0._3_0.message.AMQPMessageBinding.class,
+ property = "bindingVersion",
+ visible = true
+)
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._1_0.message.AMQPMessageBinding.class, name = "0.1.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBinding.class, name = "0.2.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._3_0.message.AMQPMessageBinding.class, names = {
+ "0.3.0",
+ "latest"
+ }),
+})
+@Data
+@EqualsAndHashCode(callSuper = true)
+public abstract class AMQPMessageBinding extends MessageBinding {}
\ No newline at end of file
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPOperationBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPOperationBinding.java
new file mode 100644
index 00000000..a6b18f00
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPOperationBinding.java
@@ -0,0 +1,35 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.OperationBinding;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Describes AMQP 0-9-1 operation binding.
+ *
+ * Contains information about the operation representation in AMQP.
+ *
+ * @since 1.0.0-RC2
+ * @see AMQP operation binding
+ * @author Pavel Bodiachevskii
+ */
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.NAME,
+ include = JsonTypeInfo.As.EXISTING_PROPERTY,
+ defaultImpl = com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding.class,
+ property = "bindingVersion",
+ visible = true
+)
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._1_0.operation.AMQPOperationBinding.class, name = "0.1.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding.class, name = "0.2.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding.class, names = {
+ "0.3.0",
+ "latest"
+ }),
+})
+@Data
+@EqualsAndHashCode(callSuper = true)
+public abstract class AMQPOperationBinding extends OperationBinding {}
\ No newline at end of file
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPServerBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPServerBinding.java
new file mode 100644
index 00000000..ffca0b47
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/AMQPServerBinding.java
@@ -0,0 +1,35 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.ServerBinding;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * Describes AMQP 0-9-1 server binding.
+ *
+ * Contains information about the server representation in AMQP.
+ *
+ * @since 1.0.0-RC2
+ * @see AMQP server binding
+ * @author Pavel Bodiachevskii
+ */
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.NAME,
+ include = JsonTypeInfo.As.EXISTING_PROPERTY,
+ defaultImpl = com.asyncapi.bindings.amqp.v0._3_0.server.AMQPServerBinding.class,
+ property = "bindingVersion",
+ visible = true
+)
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._1_0.server.AMQPServerBinding.class, name = "0.1.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._2_0.server.AMQPServerBinding.class, name = "0.2.0"),
+ @JsonSubTypes.Type(value = com.asyncapi.bindings.amqp.v0._3_0.server.AMQPServerBinding.class, names = {
+ "0.3.0",
+ "latest"
+ }),
+})
+@Data
+@EqualsAndHashCode(callSuper = true)
+public abstract class AMQPServerBinding extends ServerBinding {}
\ No newline at end of file
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/AMQPChannelBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/AMQPChannelBinding.java
new file mode 100644
index 00000000..2e785b2e
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/AMQPChannelBinding.java
@@ -0,0 +1,65 @@
+package com.asyncapi.bindings.amqp.v0._1_0.channel;
+
+import com.asyncapi.bindings.amqp.v0._1_0.channel.exchange.AMQPChannelExchangeProperties;
+import com.asyncapi.bindings.amqp.v0._1_0.channel.queue.AMQPChannelQueueProperties;
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 channel binding.
+ *
+ * Contains information about the channel representation in AMQP.
+ *
+ * @version 0.1.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonClassDescription("Describes AMQP 0-9-1 channel binding.")
+public class AMQPChannelBinding extends com.asyncapi.bindings.amqp.AMQPChannelBinding {
+
+ /**
+ * Defines what type of channel is it. Can be either queue or routingKey (default).
+ */
+ @NotNull
+ @Builder.Default
+ @javax.validation.constraints.NotNull
+ @JsonProperty(value = "is", required = true, defaultValue = "routingKey")
+ @JsonPropertyDescription("Defines what type of channel is it. Can be either queue or routingKey (default).")
+ private AMQPChannelType is = AMQPChannelType.ROUTING_KEY;
+
+ /**
+ * When is=routingKey, this object defines the exchange properties.
+ */
+ @Nullable
+ @JsonProperty("exchange")
+ @JsonPropertyDescription("When is=routingKey, this object defines the exchange properties.")
+ private AMQPChannelExchangeProperties exchange;
+
+ /**
+ * When is=queue, this object defines the queue properties.
+ */
+ @Nullable
+ @JsonProperty("queue")
+ @JsonPropertyDescription("When is=queue, this object defines the queue properties.")
+ private AMQPChannelQueueProperties queue;
+
+ @Override
+ public String getBindingVersion() {
+ return "0.1.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.1.0");
+ }
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/AMQPChannelType.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/AMQPChannelType.java
new file mode 100644
index 00000000..3bca793b
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/AMQPChannelType.java
@@ -0,0 +1,24 @@
+package com.asyncapi.bindings.amqp.v0._1_0.channel;
+
+import com.fasterxml.jackson.annotation.JsonAlias;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes AMQP 0-9-1 channel type.
+ *
+ * Contains information about the type of channel in AMQP.
+ *
+ * @version 0.1.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+public enum AMQPChannelType {
+
+ @JsonProperty("queue")
+ QUEUE,
+
+ @JsonProperty("routingKey")
+ @JsonAlias("routingKey")
+ ROUTING_KEY
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/exchange/AMQPChannelExchangeProperties.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/exchange/AMQPChannelExchangeProperties.java
new file mode 100644
index 00000000..16aa431e
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/exchange/AMQPChannelExchangeProperties.java
@@ -0,0 +1,62 @@
+package com.asyncapi.bindings.amqp.v0._1_0.channel.exchange;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 channel exchange properties.
+ *
+ * Contains information about the channel exchange properties in AMQP.
+ *
+ * @version 0.1.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode
+@JsonClassDescription("Describes AMQP 0-9-1 channel exchange properties.")
+public class AMQPChannelExchangeProperties {
+
+ /**
+ * The name of the exchange. It MUST NOT exceed 255 characters long.
+ */
+ @Nullable
+ @javax.validation.constraints.Size(
+ max = 255,
+ message = "Exchange name must not exceed 255 characters long."
+ )
+ @JsonProperty("name")
+ @JsonPropertyDescription("The name of the exchange. It MUST NOT exceed 255 characters long.")
+ private String name;
+
+ /**
+ * The type of the exchange. Can be either topic, direct, fanout, default or headers.
+ */
+ @Nullable
+ @JsonProperty("type")
+ @JsonPropertyDescription("The type of the exchange. Can be either topic, direct, fanout, default or headers.")
+ private AMQPChannelExchangeType type;
+
+ /**
+ * Whether the exchange should survive broker restarts or not.
+ */
+ @Nullable
+ @JsonProperty("durable")
+ @JsonPropertyDescription("Whether the exchange should survive broker restarts or not.")
+ private Boolean durable;
+
+ /**
+ * Whether the exchange should be deleted when the last queue is unbound from it.
+ */
+ @Nullable
+ @JsonProperty("autoDelete")
+ @JsonPropertyDescription("Whether the exchange should be deleted when the last queue is unbound from it.")
+ private Boolean autoDelete;
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/exchange/AMQPChannelExchangeType.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/exchange/AMQPChannelExchangeType.java
new file mode 100644
index 00000000..8531ba38
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/exchange/AMQPChannelExchangeType.java
@@ -0,0 +1,33 @@
+package com.asyncapi.bindings.amqp.v0._1_0.channel.exchange;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes AMQP 0-9-1 channel exchange type.
+ *
+ * Contains information about the channel exchange type in AMQP.
+ *
+ * @version 0.1.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@JsonClassDescription("Describes AMQP 0-9-1 channel exchange type.")
+public enum AMQPChannelExchangeType {
+
+ @JsonProperty("topic")
+ TOPIC,
+
+ @JsonProperty("direct")
+ DIRECT,
+
+ @JsonProperty("fanout")
+ FANOUT,
+
+ @JsonProperty("default")
+ DEFAULT,
+
+ @JsonProperty("headers")
+ HEADERS
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/queue/AMQPChannelQueueProperties.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/queue/AMQPChannelQueueProperties.java
new file mode 100644
index 00000000..fc2d602b
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/channel/queue/AMQPChannelQueueProperties.java
@@ -0,0 +1,62 @@
+package com.asyncapi.bindings.amqp.v0._1_0.channel.queue;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 channel queue properties.
+ *
+ * Contains information about the queue exchange properties in AMQP.
+ *
+ * @version 0.1.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode
+@JsonClassDescription("Describes AMQP 0-9-1 channel queue properties.")
+public class AMQPChannelQueueProperties {
+
+ /**
+ * The name of the queue. It MUST NOT exceed 255 characters long.
+ */
+ @Nullable
+ @javax.validation.constraints.Size(
+ max = 255,
+ message = "Queue name must not exceed 255 characters long."
+ )
+ @JsonProperty("name")
+ @JsonPropertyDescription("The name of the queue. It MUST NOT exceed 255 characters long.")
+ private String name;
+
+ /**
+ * Whether the queue should survive broker restarts or not.
+ */
+ @Nullable
+ @JsonProperty("durable")
+ @JsonPropertyDescription("Whether the queue should survive broker restarts or not.")
+ private Boolean durable;
+
+ /**
+ * Whether the queue should be used only by one connection or not.
+ */
+ @Nullable
+ @JsonProperty("exclusive")
+ @JsonPropertyDescription("Whether the queue should be used only by one connection or not.")
+ private Boolean exclusive;
+
+ /**
+ * Whether the queue should be deleted when the last consumer unsubscribes.
+ */
+ @Nullable
+ @JsonProperty("autoDelete")
+ @JsonPropertyDescription("Whether the queue should be deleted when the last consumer unsubscribes.")
+ private Boolean autoDelete;
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/message/AMQPMessageBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/message/AMQPMessageBinding.java
new file mode 100644
index 00000000..64f69ad0
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/message/AMQPMessageBinding.java
@@ -0,0 +1,52 @@
+package com.asyncapi.bindings.amqp.v0._1_0.message;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 message binding.
+ *
+ * Contains information about the message representation in AMQP.
+ *
+ * @version 0.1.0
+ * @see AMQP message binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonClassDescription("Describes AMQP 0-9-1 message binding.")
+public class AMQPMessageBinding extends com.asyncapi.bindings.amqp.AMQPMessageBinding {
+
+ /**
+ * A MIME encoding for the message content.
+ */
+ @Nullable
+ @JsonProperty("contentEncoding")
+ @JsonPropertyDescription("A MIME encoding for the message content.")
+ private String contentEncoding;
+
+ /**
+ * Application-specific message type.
+ */
+ @Nullable
+ @JsonProperty("messageType")
+ @JsonPropertyDescription("Application-specific message type.")
+ private String messageType;
+
+ @Override
+ public String getBindingVersion() {
+ return "0.1.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.1.0");
+ }
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/operation/AMQPOperationBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/operation/AMQPOperationBinding.java
new file mode 100644
index 00000000..46c6ea54
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/operation/AMQPOperationBinding.java
@@ -0,0 +1,150 @@
+package com.asyncapi.bindings.amqp.v0._1_0.operation;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+/**
+ * Describes AMQP 0-9-1 operation binding.
+ *
+ * Contains information about the operation representation in AMQP.
+ *
+ * @version 0.1.0
+ * @see AMQP operation binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonClassDescription("Describes AMQP 0-9-1 operation binding.")
+public class AMQPOperationBinding extends com.asyncapi.bindings.amqp.AMQPOperationBinding {
+
+ /**
+ * TTL (Time-To-Live) for the message. It MUST be greater than or equal to zero.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @javax.validation.constraints.Min(
+ value = 0,
+ message = "TTL (Time-To-Live) for the message must be greater than or equal to zero"
+ )
+ @JsonProperty("expiration")
+ @JsonPropertyDescription("TTL (Time-To-Live) for the message. It MUST be greater than or equal to zero.")
+ private Integer expiration;
+
+ /**
+ * Identifies the user who has sent the message.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("userId")
+ @JsonPropertyDescription("Identifies the user who has sent the message.")
+ private String userId;
+
+ /**
+ * The routing keys the message should be routed to at the time of publishing.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("cc")
+ @JsonPropertyDescription("The routing keys the message should be routed to at the time of publishing.")
+ private List cc;
+
+ /**
+ * A priority for the message.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("priority")
+ @JsonPropertyDescription("A priority for the message.")
+ private Integer priority;
+
+ /**
+ * Delivery mode of the message. Its value MUST be either 1 (transient) or 2 (persistent).
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @javax.validation.constraints.Min(
+ value = 1,
+ message = "Delivery mode of the message must be either 1 (transient) or 2 (persistent)"
+ )
+ @javax.validation.constraints.Max(
+ value = 2,
+ message = "Delivery mode of the message must be either 1 (transient) or 2 (persistent)"
+ )
+ @JsonProperty("deliveryMode")
+ @JsonPropertyDescription("Delivery mode of the message. Its value MUST be either 1 (transient) or 2 (persistent).")
+ private Integer deliveryMode;
+
+ /**
+ * Whether the message is mandatory or not.
+ *
+ * Applies to: publish
+ */
+ @Nullable
+ @JsonProperty("mandatory")
+ @JsonPropertyDescription("Whether the message is mandatory or not.")
+ private Boolean mandatory;
+
+ /**
+ * Like {@link #cc} but consumers will not receive this information.
+ *
+ * Applies to: publish
+ */
+ @Nullable
+ @JsonProperty("bcc")
+ @JsonPropertyDescription("Like cc but consumers will not receive this information.")
+ private List bcc;
+
+ /**
+ * Name of the queue where the consumer should send the response.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("replyTo")
+ @JsonPropertyDescription("Name of the queue where the consumer should send the response.")
+ private String replyTo;
+
+ /**
+ * Whether the message should include a timestamp or not.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("timestamp")
+ @JsonPropertyDescription("Whether the message should include a timestamp or not.")
+ private Boolean timestamp;
+
+ /**
+ * Whether the consumer should ack the message or not.
+ *
+ * Applies to: subscribe
+ */
+ @Nullable
+ @JsonProperty("ack")
+ @JsonPropertyDescription("Whether the consumer should ack the message or not.")
+ private Boolean ack;
+
+ @Override
+ public String getBindingVersion() {
+ return "0.1.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.1.0");
+ }
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/server/AMQPServerBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/server/AMQPServerBinding.java
new file mode 100644
index 00000000..735e4271
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_1_0/server/AMQPServerBinding.java
@@ -0,0 +1,32 @@
+package com.asyncapi.bindings.amqp.v0._1_0.server;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * This class MUST NOT contain any properties. Its name is reserved for future use.
+ *
+ * Describes AMQP 0-9-1 server binding.
+ *
+ * @version 0.1.0
+ * @see AMQP server binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AMQPServerBinding extends com.asyncapi.bindings.amqp.AMQPServerBinding {
+
+ @Override
+ public String getBindingVersion() {
+ return "0.1.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.1.0");
+ }
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/channel/AMQPChannelBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/channel/AMQPChannelBinding.java
index f25da590..5f5c552e 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/channel/AMQPChannelBinding.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/channel/AMQPChannelBinding.java
@@ -1,6 +1,5 @@
package com.asyncapi.bindings.amqp.v0._2_0.channel;
-import com.asyncapi.bindings.ChannelBinding;
import com.asyncapi.bindings.amqp.v0._2_0.channel.exchange.AMQPChannelExchangeProperties;
import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties;
import com.fasterxml.jackson.annotation.JsonClassDescription;
@@ -25,7 +24,7 @@
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonClassDescription("Describes AMQP 0-9-1 channel binding.")
-public class AMQPChannelBinding extends ChannelBinding {
+public class AMQPChannelBinding extends com.asyncapi.bindings.amqp.AMQPChannelBinding {
/**
* Defines what type of channel is it. Can be either queue or routingKey (default).
@@ -53,10 +52,14 @@ public class AMQPChannelBinding extends ChannelBinding {
@JsonPropertyDescription("When is=queue, this object defines the queue properties.")
private AMQPChannelQueueProperties queue;
- @Nullable
- @Builder.Default
- @JsonProperty(value = "bindingVersion")
- @JsonPropertyDescription("The version of this binding.")
- private final String bindingVersion = "0.2.0";
+ @Override
+ public String getBindingVersion() {
+ return "0.2.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.2.0");
+ }
}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/message/AMQPMessageBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/message/AMQPMessageBinding.java
index 0fcb70e8..fcc8e2c0 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/message/AMQPMessageBinding.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/message/AMQPMessageBinding.java
@@ -1,6 +1,5 @@
package com.asyncapi.bindings.amqp.v0._2_0.message;
-import com.asyncapi.bindings.MessageBinding;
import com.fasterxml.jackson.annotation.JsonClassDescription;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
@@ -22,7 +21,7 @@
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonClassDescription("Describes AMQP 0-9-1 message binding.")
-public class AMQPMessageBinding extends MessageBinding {
+public class AMQPMessageBinding extends com.asyncapi.bindings.amqp.AMQPMessageBinding {
/**
* A MIME encoding for the message content.
@@ -40,13 +39,14 @@ public class AMQPMessageBinding extends MessageBinding {
@JsonPropertyDescription("Application-specific message type.")
private String messageType;
- /**
- * The version of this binding. If omitted, "latest" MUST be assumed.
- */
- @Nullable
- @Builder.Default
- @JsonProperty(value = "bindingVersion")
- @JsonPropertyDescription("The version of this binding.")
- private String bindingVersion = "0.2.0";
+ @Override
+ public String getBindingVersion() {
+ return "0.2.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.2.0");
+ }
}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/operation/AMQPOperationBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/operation/AMQPOperationBinding.java
index 54121114..a2e479fd 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/operation/AMQPOperationBinding.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/operation/AMQPOperationBinding.java
@@ -1,6 +1,5 @@
package com.asyncapi.bindings.amqp.v0._2_0.operation;
-import com.asyncapi.bindings.OperationBinding;
import com.fasterxml.jackson.annotation.JsonClassDescription;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
@@ -24,7 +23,7 @@
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@JsonClassDescription("Describes AMQP 0-9-1 operation binding.")
-public class AMQPOperationBinding extends OperationBinding {
+public class AMQPOperationBinding extends com.asyncapi.bindings.amqp.AMQPOperationBinding {
/**
* TTL (Time-To-Live) for the message. It MUST be greater than or equal to zero.
@@ -138,13 +137,14 @@ public class AMQPOperationBinding extends OperationBinding {
@JsonPropertyDescription("Whether the consumer should ack the message or not.")
private Boolean ack;
- /**
- * The version of this binding. If omitted, "latest" MUST be assumed.
- */
- @Nullable
- @Builder.Default
- @JsonProperty(value = "bindingVersion")
- @JsonPropertyDescription("The version of this binding.")
- private String bindingVersion = "0.2.0";
+ @Override
+ public String getBindingVersion() {
+ return "0.2.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.2.0");
+ }
}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/server/AMQPServerBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/server/AMQPServerBinding.java
index a14af6ed..868088a0 100644
--- a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/server/AMQPServerBinding.java
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_2_0/server/AMQPServerBinding.java
@@ -1,9 +1,9 @@
package com.asyncapi.bindings.amqp.v0._2_0.server;
-import com.asyncapi.bindings.ServerBinding;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import org.jetbrains.annotations.Nullable;
/**
* This class MUST NOT contain any properties. Its name is reserved for future use.
@@ -17,5 +17,16 @@
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
-public class AMQPServerBinding extends ServerBinding {
+public class AMQPServerBinding extends com.asyncapi.bindings.amqp.AMQPServerBinding {
+
+ @Override
+ public String getBindingVersion() {
+ return "0.2.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.2.0");
+ }
+
}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/AMQPChannelBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/AMQPChannelBinding.java
new file mode 100644
index 00000000..d1925075
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/AMQPChannelBinding.java
@@ -0,0 +1,65 @@
+package com.asyncapi.bindings.amqp.v0._3_0.channel;
+
+import com.asyncapi.bindings.amqp.v0._3_0.channel.exchange.AMQPChannelExchangeProperties;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties;
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 channel binding.
+ *
+ * Contains information about the channel representation in AMQP.
+ *
+ * @version 0.3.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonClassDescription("Describes AMQP 0-9-1 channel binding.")
+public class AMQPChannelBinding extends com.asyncapi.bindings.amqp.AMQPChannelBinding {
+
+ /**
+ * Defines what type of channel is it. Can be either queue or routingKey (default).
+ */
+ @NotNull
+ @Builder.Default
+ @javax.validation.constraints.NotNull
+ @JsonProperty(value = "is", required = true, defaultValue = "routingKey")
+ @JsonPropertyDescription("Defines what type of channel is it. Can be either queue or routingKey (default).")
+ private AMQPChannelType is = AMQPChannelType.ROUTING_KEY;
+
+ /**
+ * When is=routingKey, this object defines the exchange properties.
+ */
+ @Nullable
+ @JsonProperty("exchange")
+ @JsonPropertyDescription("When is=routingKey, this object defines the exchange properties.")
+ private AMQPChannelExchangeProperties exchange;
+
+ /**
+ * When is=queue, this object defines the queue properties.
+ */
+ @Nullable
+ @JsonProperty("queue")
+ @JsonPropertyDescription("When is=queue, this object defines the queue properties.")
+ private AMQPChannelQueueProperties queue;
+
+ @Override
+ public String getBindingVersion() {
+ return "0.3.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.3.0");
+ }
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/AMQPChannelType.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/AMQPChannelType.java
new file mode 100644
index 00000000..a270537d
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/AMQPChannelType.java
@@ -0,0 +1,24 @@
+package com.asyncapi.bindings.amqp.v0._3_0.channel;
+
+import com.fasterxml.jackson.annotation.JsonAlias;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes AMQP 0-9-1 channel type.
+ *
+ * Contains information about the type of channel in AMQP.
+ *
+ * @version 0.3.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+public enum AMQPChannelType {
+
+ @JsonProperty("queue")
+ QUEUE,
+
+ @JsonProperty("routingKey")
+ @JsonAlias("routingKey")
+ ROUTING_KEY
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/exchange/AMQPChannelExchangeProperties.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/exchange/AMQPChannelExchangeProperties.java
new file mode 100644
index 00000000..aa0476ba
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/exchange/AMQPChannelExchangeProperties.java
@@ -0,0 +1,71 @@
+package com.asyncapi.bindings.amqp.v0._3_0.channel.exchange;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 channel exchange properties.
+ *
+ * Contains information about the channel exchange properties in AMQP.
+ *
+ * @version 0.3.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode
+@JsonClassDescription("Describes AMQP 0-9-1 channel exchange properties.")
+public class AMQPChannelExchangeProperties {
+
+ /**
+ * The name of the exchange. It MUST NOT exceed 255 characters long.
+ */
+ @Nullable
+ @javax.validation.constraints.Size(
+ max = 255,
+ message = "Exchange name must not exceed 255 characters long."
+ )
+ @JsonProperty("name")
+ @JsonPropertyDescription("The name of the exchange. It MUST NOT exceed 255 characters long.")
+ private String name;
+
+ /**
+ * The type of the exchange. Can be either topic, direct, fanout, default or headers.
+ */
+ @Nullable
+ @JsonProperty("type")
+ @JsonPropertyDescription("The type of the exchange. Can be either topic, direct, fanout, default or headers.")
+ private AMQPChannelExchangeType type;
+
+ /**
+ * Whether the exchange should survive broker restarts or not.
+ */
+ @Nullable
+ @JsonProperty("durable")
+ @JsonPropertyDescription("Whether the exchange should survive broker restarts or not.")
+ private Boolean durable;
+
+ /**
+ * Whether the exchange should be deleted when the last queue is unbound from it.
+ */
+ @Nullable
+ @JsonProperty("autoDelete")
+ @JsonPropertyDescription("Whether the exchange should be deleted when the last queue is unbound from it.")
+ private Boolean autoDelete;
+
+ /**
+ * The virtual host of the exchange. Defaults to /.
+ */
+ @Nullable
+ @Builder.Default
+ @JsonProperty(value = "vhost", defaultValue = "/")
+ @JsonPropertyDescription("The virtual host of the exchange. Defaults to /.")
+ private String vhost = "/";
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/exchange/AMQPChannelExchangeType.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/exchange/AMQPChannelExchangeType.java
new file mode 100644
index 00000000..7abf4fc8
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/exchange/AMQPChannelExchangeType.java
@@ -0,0 +1,33 @@
+package com.asyncapi.bindings.amqp.v0._3_0.channel.exchange;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes AMQP 0-9-1 channel exchange type.
+ *
+ * Contains information about the channel exchange type in AMQP.
+ *
+ * @version 0.3.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@JsonClassDescription("Describes AMQP 0-9-1 channel exchange type.")
+public enum AMQPChannelExchangeType {
+
+ @JsonProperty("topic")
+ TOPIC,
+
+ @JsonProperty("direct")
+ DIRECT,
+
+ @JsonProperty("fanout")
+ FANOUT,
+
+ @JsonProperty("default")
+ DEFAULT,
+
+ @JsonProperty("headers")
+ HEADERS
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/queue/AMQPChannelQueueProperties.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/queue/AMQPChannelQueueProperties.java
new file mode 100644
index 00000000..e67c88a7
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/channel/queue/AMQPChannelQueueProperties.java
@@ -0,0 +1,71 @@
+package com.asyncapi.bindings.amqp.v0._3_0.channel.queue;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 channel queue properties.
+ *
+ * Contains information about the queue exchange properties in AMQP.
+ *
+ * @version 0.3.0
+ * @see AMQP channel binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode
+@JsonClassDescription("Describes AMQP 0-9-1 channel queue properties.")
+public class AMQPChannelQueueProperties {
+
+ /**
+ * The name of the queue. It MUST NOT exceed 255 characters long.
+ */
+ @Nullable
+ @javax.validation.constraints.Size(
+ max = 255,
+ message = "Queue name must not exceed 255 characters long."
+ )
+ @JsonProperty("name")
+ @JsonPropertyDescription("The name of the queue. It MUST NOT exceed 255 characters long.")
+ private String name;
+
+ /**
+ * Whether the queue should survive broker restarts or not.
+ */
+ @Nullable
+ @JsonProperty("durable")
+ @JsonPropertyDescription("Whether the queue should survive broker restarts or not.")
+ private Boolean durable;
+
+ /**
+ * Whether the queue should be used only by one connection or not.
+ */
+ @Nullable
+ @JsonProperty("exclusive")
+ @JsonPropertyDescription("Whether the queue should be used only by one connection or not.")
+ private Boolean exclusive;
+
+ /**
+ * Whether the queue should be deleted when the last consumer unsubscribes.
+ */
+ @Nullable
+ @JsonProperty("autoDelete")
+ @JsonPropertyDescription("Whether the queue should be deleted when the last consumer unsubscribes.")
+ private Boolean autoDelete;
+
+ /**
+ * The virtual host of the queue. Defaults to /.
+ */
+ @Nullable
+ @Builder.Default
+ @JsonProperty(value = "vhost", defaultValue = "/")
+ @JsonPropertyDescription("The virtual host of the queue. Defaults to /.")
+ private String vhost = "/";
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/message/AMQPMessageBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/message/AMQPMessageBinding.java
new file mode 100644
index 00000000..199cee94
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/message/AMQPMessageBinding.java
@@ -0,0 +1,52 @@
+package com.asyncapi.bindings.amqp.v0._3_0.message;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Describes AMQP 0-9-1 message binding.
+ *
+ * Contains information about the message representation in AMQP.
+ *
+ * @version 0.3.0
+ * @see AMQP message binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonClassDescription("Describes AMQP 0-9-1 message binding.")
+public class AMQPMessageBinding extends com.asyncapi.bindings.amqp.AMQPMessageBinding {
+
+ /**
+ * A MIME encoding for the message content.
+ */
+ @Nullable
+ @JsonProperty("contentEncoding")
+ @JsonPropertyDescription("A MIME encoding for the message content.")
+ private String contentEncoding;
+
+ /**
+ * Application-specific message type.
+ */
+ @Nullable
+ @JsonProperty("messageType")
+ @JsonPropertyDescription("Application-specific message type.")
+ private String messageType;
+
+ @Override
+ public String getBindingVersion() {
+ return "0.3.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.3.0");
+ }
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/operation/AMQPOperationBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/operation/AMQPOperationBinding.java
new file mode 100644
index 00000000..e49efe4b
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/operation/AMQPOperationBinding.java
@@ -0,0 +1,140 @@
+package com.asyncapi.bindings.amqp.v0._3_0.operation;
+
+import com.fasterxml.jackson.annotation.JsonClassDescription;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import lombok.*;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+/**
+ * Describes AMQP 0-9-1 operation binding.
+ *
+ * Contains information about the operation representation in AMQP.
+ *
+ * @version 0.3.0
+ * @see AMQP operation binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonClassDescription("Describes AMQP 0-9-1 operation binding.")
+public class AMQPOperationBinding extends com.asyncapi.bindings.amqp.AMQPOperationBinding {
+
+ /**
+ * TTL (Time-To-Live) for the message. It MUST be greater than or equal to zero.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @javax.validation.constraints.Min(
+ value = 0,
+ message = "TTL (Time-To-Live) for the message must be greater than or equal to zero"
+ )
+ @JsonProperty("expiration")
+ @JsonPropertyDescription("TTL (Time-To-Live) for the message. It MUST be greater than or equal to zero.")
+ private Integer expiration;
+
+ /**
+ * Identifies the user who has sent the message.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("userId")
+ @JsonPropertyDescription("Identifies the user who has sent the message.")
+ private String userId;
+
+ /**
+ * The routing keys the message should be routed to at the time of publishing.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("cc")
+ @JsonPropertyDescription("The routing keys the message should be routed to at the time of publishing.")
+ private List cc;
+
+ /**
+ * A priority for the message.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("priority")
+ @JsonPropertyDescription("A priority for the message.")
+ private Integer priority;
+
+ /**
+ * Delivery mode of the message. Its value MUST be either 1 (transient) or 2 (persistent).
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @javax.validation.constraints.Min(
+ value = 1,
+ message = "Delivery mode of the message must be either 1 (transient) or 2 (persistent)"
+ )
+ @javax.validation.constraints.Max(
+ value = 2,
+ message = "Delivery mode of the message must be either 1 (transient) or 2 (persistent)"
+ )
+ @JsonProperty("deliveryMode")
+ @JsonPropertyDescription("Delivery mode of the message. Its value MUST be either 1 (transient) or 2 (persistent).")
+ private Integer deliveryMode;
+
+ /**
+ * Whether the message is mandatory or not.
+ *
+ * Applies to: publish
+ */
+ @Nullable
+ @JsonProperty("mandatory")
+ @JsonPropertyDescription("Whether the message is mandatory or not.")
+ private Boolean mandatory;
+
+ /**
+ * Like {@link #cc} but consumers will not receive this information.
+ *
+ * Applies to: publish
+ */
+ @Nullable
+ @JsonProperty("bcc")
+ @JsonPropertyDescription("Like cc but consumers will not receive this information.")
+ private List bcc;
+
+ /**
+ * Whether the message should include a timestamp or not.
+ *
+ * Applies to: publish, subscribe
+ */
+ @Nullable
+ @JsonProperty("timestamp")
+ @JsonPropertyDescription("Whether the message should include a timestamp or not.")
+ private Boolean timestamp;
+
+ /**
+ * Whether the consumer should ack the message or not.
+ *
+ * Applies to: subscribe
+ */
+ @Nullable
+ @JsonProperty("ack")
+ @JsonPropertyDescription("Whether the consumer should ack the message or not.")
+ private Boolean ack;
+
+ @Override
+ public String getBindingVersion() {
+ return "0.3.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.3.0");
+ }
+
+}
diff --git a/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/server/AMQPServerBinding.java b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/server/AMQPServerBinding.java
new file mode 100644
index 00000000..c358e110
--- /dev/null
+++ b/asyncapi-core/src/main/java/com/asyncapi/bindings/amqp/v0/_3_0/server/AMQPServerBinding.java
@@ -0,0 +1,32 @@
+package com.asyncapi.bindings.amqp.v0._3_0.server;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * This class MUST NOT contain any properties. Its name is reserved for future use.
+ *
+ * Describes AMQP 0-9-1 server binding.
+ *
+ * @version 0.3.0
+ * @see AMQP server binding
+ * @author Pavel Bodiachevskii
+ */
+@Data
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AMQPServerBinding extends com.asyncapi.bindings.amqp.AMQPServerBinding {
+
+ @Override
+ public String getBindingVersion() {
+ return "0.3.0";
+ }
+
+ @Override
+ public void setBindingVersion(@Nullable String bindingVersion) {
+ super.setBindingVersion("0.3.0");
+ }
+
+}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQP.java b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQP.java
new file mode 100644
index 00000000..96fcda09
--- /dev/null
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQP.java
@@ -0,0 +1,10 @@
+package com.asyncapi.bindings.amqp;
+
+import org.junit.platform.suite.api.SelectPackages;
+import org.junit.platform.suite.api.Suite;
+import org.junit.platform.suite.api.SuiteDisplayName;
+
+@Suite
+@SuiteDisplayName("AMQP")
+@SelectPackages("com.asyncapi.bindings.amqp")
+public class AMQP {}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPLatestTest.java b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPLatestTest.java
new file mode 100644
index 00000000..c0ae94ed
--- /dev/null
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPLatestTest.java
@@ -0,0 +1,54 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.BindingTest;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.message.AMQPMessageBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.server.AMQPServerBinding;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+
+@DisplayName("latest")
+public class AMQPLatestTest {
+
+ @Nested
+ @DisplayName("channel")
+ class ChannelTest extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.channelBinding();;
+ super.bindingTypeClass = AMQPChannelBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/latest/channel/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/latest/channel/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/latest/channel/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("message")
+ class Message extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.messageBinding();;
+ super.bindingTypeClass = AMQPMessageBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/latest/message/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/latest/message/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/latest/message/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("operation")
+ class Operation extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.operationBinding();;
+ super.bindingTypeClass = AMQPOperationBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/latest/operation/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/latest/operation/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/latest/operation/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("server")
+ class Server extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.serverBinding();;
+ super.bindingTypeClass = AMQPServerBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/latest/server/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/latest/server/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/latest/server/binding - wrongly extended.json";
+ }}
+
+}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPUnknownVersionTest.java b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPUnknownVersionTest.java
new file mode 100644
index 00000000..b6e1de19
--- /dev/null
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPUnknownVersionTest.java
@@ -0,0 +1,54 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.BindingTest;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.message.AMQPMessageBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.server.AMQPServerBinding;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+
+@DisplayName("unknown version")
+public class AMQPUnknownVersionTest {
+
+ @Nested
+ @DisplayName("channel")
+ class ChannelTest extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.channelBinding();
+ super.bindingTypeClass = AMQPChannelBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/unknown version/channel/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/unknown version/channel/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/unknown version/channel/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("message")
+ class Message extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.messageBinding();
+ super.bindingTypeClass = AMQPMessageBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/unknown version/message/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/unknown version/message/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/unknown version/message/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("operation")
+ class Operation extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.operationBinding();
+ super.bindingTypeClass = AMQPOperationBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/unknown version/operation/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/unknown version/operation/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/unknown version/operation/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("server")
+ class Server extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.serverBinding();
+ super.bindingTypeClass = AMQPServerBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/unknown version/server/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/unknown version/server/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/unknown version/server/binding - wrongly extended.json";
+ }}
+
+}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_1_0Test.java b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_1_0Test.java
new file mode 100644
index 00000000..9cb3fea7
--- /dev/null
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_1_0Test.java
@@ -0,0 +1,106 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.BindingTest;
+import com.asyncapi.bindings.amqp.v0._1_0.channel.AMQPChannelBinding;
+import com.asyncapi.bindings.amqp.v0._1_0.channel.AMQPChannelType;
+import com.asyncapi.bindings.amqp.v0._1_0.channel.exchange.AMQPChannelExchangeProperties;
+import com.asyncapi.bindings.amqp.v0._1_0.channel.exchange.AMQPChannelExchangeType;
+import com.asyncapi.bindings.amqp.v0._1_0.channel.queue.AMQPChannelQueueProperties;
+import com.asyncapi.bindings.amqp.v0._1_0.message.AMQPMessageBinding;
+import com.asyncapi.bindings.amqp.v0._1_0.operation.AMQPOperationBinding;
+import com.asyncapi.bindings.amqp.v0._1_0.server.AMQPServerBinding;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+
+import java.util.List;
+
+@DisplayName("0.1.0")
+public class AMQPV0_1_0Test {
+
+ public static AMQPChannelBinding channelBinding () {
+ return AMQPChannelBinding.builder()
+ .is(AMQPChannelType.ROUTING_KEY)
+ .queue(AMQPChannelQueueProperties.builder()
+ .name("my-queue-name")
+ .durable(true)
+ .exclusive(true)
+ .autoDelete(false)
+ .build()
+ )
+ .exchange(AMQPChannelExchangeProperties.builder()
+ .name("myExchange")
+ .type(AMQPChannelExchangeType.TOPIC)
+ .durable(true)
+ .autoDelete(false)
+ .build()
+ )
+ .build();
+ }
+
+ public static AMQPMessageBinding messageBinding () {
+ return AMQPMessageBinding.builder()
+ .contentEncoding("gzip")
+ .messageType("user.signup")
+ .build();
+ }
+
+ public static AMQPOperationBinding operationBinding () {
+ return AMQPOperationBinding.builder()
+ .expiration(100_000)
+ .userId("guest")
+ .cc(List.of("user.logs"))
+ .priority(10)
+ .deliveryMode(2)
+ .mandatory(false)
+ .bcc(List.of("external.audit"))
+ .replyTo("user.signedup")
+ .timestamp(true)
+ .ack(false)
+ .build();
+ }
+
+ public static AMQPServerBinding serverBinding () {
+ return new AMQPServerBinding();
+ }
+
+ @Nested
+ @DisplayName("channel")
+ class ChannelTest extends BindingTest {{
+ super.binding = channelBinding();
+ super.bindingTypeClass = AMQPChannelBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.1.0/channel/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.1.0/channel/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.1.0/channel/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("message")
+ class Message extends BindingTest {{
+ super.binding = messageBinding();
+ super.bindingTypeClass = AMQPMessageBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.1.0/message/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.1.0/message/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.1.0/message/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("operation")
+ class Operation extends BindingTest {{
+ super.binding = operationBinding();
+ super.bindingTypeClass = AMQPOperationBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.1.0/operation/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.1.0/operation/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.1.0/operation/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("server")
+ class Server extends BindingTest {{
+ super.binding = serverBinding();
+ super.bindingTypeClass = AMQPServerBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.1.0/server/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.1.0/server/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.1.0/server/binding - wrongly extended.json";
+ }}
+
+}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_2_0Test.java b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_2_0Test.java
new file mode 100644
index 00000000..4c561fcc
--- /dev/null
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_2_0Test.java
@@ -0,0 +1,106 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.BindingTest;
+import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding;
+import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelType;
+import com.asyncapi.bindings.amqp.v0._2_0.channel.exchange.AMQPChannelExchangeProperties;
+import com.asyncapi.bindings.amqp.v0._2_0.channel.exchange.AMQPChannelExchangeType;
+import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties;
+import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBinding;
+import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding;
+import com.asyncapi.bindings.amqp.v0._2_0.server.AMQPServerBinding;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+
+import java.util.List;
+
+@DisplayName("0.2.0")
+public class AMQPV0_2_0Test {
+
+ public static AMQPChannelBinding channelBinding () {
+ return AMQPChannelBinding.builder()
+ .is(AMQPChannelType.ROUTING_KEY)
+ .queue(AMQPChannelQueueProperties.builder()
+ .name("my-queue-name")
+ .durable(true)
+ .exclusive(true)
+ .autoDelete(false)
+ .build()
+ )
+ .exchange(AMQPChannelExchangeProperties.builder()
+ .name("myExchange")
+ .type(AMQPChannelExchangeType.TOPIC)
+ .durable(true)
+ .autoDelete(false)
+ .build()
+ )
+ .build();
+ }
+
+ public static AMQPMessageBinding messageBinding () {
+ return AMQPMessageBinding.builder()
+ .contentEncoding("gzip")
+ .messageType("user.signup")
+ .build();
+ }
+
+ public static AMQPOperationBinding operationBinding () {
+ return AMQPOperationBinding.builder()
+ .expiration(100_000)
+ .userId("guest")
+ .cc(List.of("user.logs"))
+ .priority(10)
+ .deliveryMode(2)
+ .mandatory(false)
+ .bcc(List.of("external.audit"))
+ .replyTo("user.signedup")
+ .timestamp(true)
+ .ack(false)
+ .build();
+ }
+
+ public static AMQPServerBinding serverBinding () {
+ return new AMQPServerBinding();
+ }
+
+ @Nested
+ @DisplayName("channel")
+ class ChannelTest extends BindingTest {{
+ super.binding = channelBinding();
+ super.bindingTypeClass = AMQPChannelBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.2.0/channel/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.2.0/channel/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.2.0/channel/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("message")
+ class Message extends BindingTest {{
+ super.binding = messageBinding();
+ super.bindingTypeClass = AMQPMessageBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.2.0/message/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.2.0/message/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.2.0/message/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("operation")
+ class Operation extends BindingTest {{
+ super.binding = operationBinding();
+ super.bindingTypeClass = AMQPOperationBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.2.0/operation/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.2.0/operation/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.2.0/operation/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("server")
+ class Server extends BindingTest {{
+ super.binding = serverBinding();
+ super.bindingTypeClass = AMQPServerBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.2.0/server/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.2.0/server/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.2.0/server/binding - wrongly extended.json";
+ }}
+
+}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_3_0Test.java b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_3_0Test.java
new file mode 100644
index 00000000..8f11a12a
--- /dev/null
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPV0_3_0Test.java
@@ -0,0 +1,105 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.BindingTest;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelType;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.exchange.AMQPChannelExchangeProperties;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.exchange.AMQPChannelExchangeType;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties;
+import com.asyncapi.bindings.amqp.v0._3_0.message.AMQPMessageBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.server.AMQPServerBinding;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+
+import java.util.List;
+
+@DisplayName("0.3.0")
+public class AMQPV0_3_0Test {
+
+ public static AMQPChannelBinding channelBinding () {
+ return AMQPChannelBinding.builder()
+ .is(AMQPChannelType.ROUTING_KEY)
+ .queue(AMQPChannelQueueProperties.builder()
+ .name("my-queue-name")
+ .durable(true)
+ .exclusive(true)
+ .autoDelete(false)
+ .build()
+ )
+ .exchange(AMQPChannelExchangeProperties.builder()
+ .name("myExchange")
+ .type(AMQPChannelExchangeType.TOPIC)
+ .durable(true)
+ .autoDelete(false)
+ .build()
+ )
+ .build();
+ }
+
+ public static AMQPMessageBinding messageBinding () {
+ return AMQPMessageBinding.builder()
+ .contentEncoding("gzip")
+ .messageType("user.signup")
+ .build();
+ }
+
+ public static AMQPOperationBinding operationBinding () {
+ return AMQPOperationBinding.builder()
+ .expiration(100_000)
+ .userId("guest")
+ .cc(List.of("user.logs"))
+ .priority(10)
+ .deliveryMode(2)
+ .mandatory(false)
+ .bcc(List.of("external.audit"))
+ .timestamp(true)
+ .ack(false)
+ .build();
+ }
+
+ public static AMQPServerBinding serverBinding () {
+ return new AMQPServerBinding();
+ }
+
+ @Nested
+ @DisplayName("channel")
+ class ChannelTest extends BindingTest {{
+ super.binding = channelBinding();
+ super.bindingTypeClass = AMQPChannelBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.3.0/channel/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.3.0/channel/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.3.0/channel/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("message")
+ class Message extends BindingTest {{
+ super.binding = messageBinding();
+ super.bindingTypeClass = AMQPMessageBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.3.0/message/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.3.0/message/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.3.0/message/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("operation")
+ class Operation extends BindingTest {{
+ super.binding = operationBinding();
+ super.bindingTypeClass = AMQPOperationBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.3.0/operation/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.3.0/operation/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.3.0/operation/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("server")
+ class Server extends BindingTest {{
+ super.binding = serverBinding();
+ super.bindingTypeClass = AMQPServerBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/0.3.0/server/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/0.3.0/server/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/0.3.0/server/binding - wrongly extended.json";
+ }}
+
+}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPWithoutVersionTest.java b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPWithoutVersionTest.java
new file mode 100644
index 00000000..62ac530c
--- /dev/null
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/AMQPWithoutVersionTest.java
@@ -0,0 +1,54 @@
+package com.asyncapi.bindings.amqp;
+
+import com.asyncapi.bindings.BindingTest;
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.message.AMQPMessageBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding;
+import com.asyncapi.bindings.amqp.v0._3_0.server.AMQPServerBinding;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+
+@DisplayName("without version")
+public class AMQPWithoutVersionTest {
+
+ @Nested
+ @DisplayName("channel")
+ class ChannelTest extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.channelBinding();
+ super.bindingTypeClass = AMQPChannelBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/without version/channel/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/without version/channel/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/without version/channel/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("message")
+ class Message extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.messageBinding();
+ super.bindingTypeClass = AMQPMessageBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/without version/message/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/without version/message/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/without version/message/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("operation")
+ class Operation extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.operationBinding();
+ super.bindingTypeClass = AMQPOperationBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/without version/operation/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/without version/operation/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/without version/operation/binding - wrongly extended.json";
+ }}
+
+ @Nested
+ @DisplayName("server")
+ class Server extends BindingTest {{
+ super.binding = AMQPV0_3_0Test.serverBinding();
+ super.bindingTypeClass = AMQPServerBinding.class;
+ super.pathToBindingJson = "/bindings/amqp/without version/server/binding.json";
+ super.pathToExtendedBindingJson = "/bindings/amqp/without version/server/binding - extended.json";
+ super.pathToWronglyExtendedBindingJson = "/bindings/amqp/without version/server/binding - wrongly extended.json";
+ }}
+
+}
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/channel/AMQPChannelBindingTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/channel/AMQPChannelBindingTest.kt
deleted file mode 100644
index 26396c43..00000000
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/channel/AMQPChannelBindingTest.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.asyncapi.bindings.amqp.v0._2_0.channel
-
-import com.asyncapi.v3.SerDeTest
-import com.asyncapi.bindings.amqp.v0._2_0.channel.exchange.AMQPChannelExchangeProperties
-import com.asyncapi.bindings.amqp.v0._2_0.channel.exchange.AMQPChannelExchangeType
-import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties
-
-/**
- * @version 3.0.0
- * @author Pavel Bodiachevskii
- */
-class AMQPChannelBindingTest: SerDeTest() {
-
- override fun objectClass() = AMQPChannelBinding::class.java
-
- override fun baseObjectJson() = "/bindings/amqp/channel/amqpChannelBinding.json"
-
- override fun extendedObjectJson() = "/bindings/amqp/channel/amqpChannelBinding - extended.json"
-
- override fun wronglyExtendedObjectJson() = "/bindings/amqp/channel/amqpChannelBinding - wrongly extended.json"
-
- override fun build(): AMQPChannelBinding {
- return AMQPChannelBinding.builder()
- .`is`(AMQPChannelType.ROUTING_KEY)
- .queue(AMQPChannelQueueProperties.builder()
- .name("my-queue-name")
- .durable(true)
- .exclusive(true)
- .autoDelete(false)
- .build()
- )
- .exchange(AMQPChannelExchangeProperties.builder()
- .name("myExchange")
- .type(AMQPChannelExchangeType.TOPIC)
- .durable(true)
- .autoDelete(false)
- .build()
- )
- .build()
- }
-
-}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/message/AMQPMessageBindingTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/message/AMQPMessageBindingTest.kt
deleted file mode 100644
index 2191fe00..00000000
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/message/AMQPMessageBindingTest.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.asyncapi.bindings.amqp.v0._2_0.message
-
-import com.asyncapi.v3.SerDeTest
-
-class AMQPMessageBindingTest: SerDeTest() {
-
- override fun objectClass() = AMQPMessageBinding::class.java
-
- override fun baseObjectJson() = "/bindings/amqp/message/amqpMessageBinding.json"
-
- override fun extendedObjectJson() = "/bindings/amqp/message/amqpMessageBinding - extended.json"
-
- override fun wronglyExtendedObjectJson() = "/bindings/amqp/message/amqpMessageBinding - wrongly extended.json"
-
- override fun build(): AMQPMessageBinding {
- return AMQPMessageBinding.builder()
- .contentEncoding("gzip")
- .messageType("user.signup")
- .build()
- }
-
-}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/operation/AMQPOperationBindingTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/operation/AMQPOperationBindingTest.kt
deleted file mode 100644
index 356e0a0c..00000000
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/bindings/amqp/v0/_2_0/operation/AMQPOperationBindingTest.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.asyncapi.bindings.amqp.v0._2_0.operation
-
-import com.asyncapi.v3.SerDeTest
-
-class AMQPOperationBindingTest: SerDeTest() {
-
- override fun objectClass() = AMQPOperationBinding::class.java
-
- override fun baseObjectJson() = "/bindings/amqp/operation/amqpOperationBinding.json"
-
- override fun extendedObjectJson() = "/bindings/amqp/operation/amqpOperationBinding - extended.json"
-
- override fun wronglyExtendedObjectJson() = "/bindings/amqp/operation/amqpOperationBinding - wrongly extended.json"
-
- override fun build(): AMQPOperationBinding {
- return AMQPOperationBinding.builder()
- .expiration(100_000)
- .userId("guest")
- .cc(listOf("user.logs"))
- .priority(10)
- .deliveryMode(2)
- .mandatory(false)
- .bcc(listOf("external.audit"))
- .replyTo("user.signedup")
- .timestamp(true)
- .ack(false)
- .build()
- }
-
-}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcClient.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcClient.kt
index 669644e0..f406d78b 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcClient.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcClient.kt
@@ -8,10 +8,10 @@ import com.asyncapi.v2._0_0.model.channel.operation.Operation
import com.asyncapi.v2._0_0.model.component.Components
import com.asyncapi.v2._0_0.model.info.Info
import com.asyncapi.v2._0_0.model.server.Server
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelType
-import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelType
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding
import com.asyncapi.v2.schema.Schema
class RpcClient: AbstractExampleValidationTest() {
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcServer.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcServer.kt
index 20fd2450..7f266767 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcServer.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/RpcServer.kt
@@ -8,10 +8,10 @@ import com.asyncapi.v2._0_0.model.channel.operation.Operation
import com.asyncapi.v2._0_0.model.component.Components
import com.asyncapi.v2._0_0.model.info.Info
import com.asyncapi.v2._0_0.model.server.Server
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelType
-import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelType
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding
import com.asyncapi.v2.schema.Schema
class RpcServer: AbstractExampleValidationTest() {
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcClient.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcClient.kt
index 2b2abed8..17f6f40a 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcClient.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcClient.kt
@@ -8,10 +8,10 @@ import com.asyncapi.v2._6_0.model.channel.operation.Operation
import com.asyncapi.v2._6_0.model.component.Components
import com.asyncapi.v2._6_0.model.info.Info
import com.asyncapi.v2._6_0.model.server.Server
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelType
-import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelType
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding
import com.asyncapi.v2.schema.Schema
class RpcClient: AbstractExampleValidationTest() {
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcServer.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcServer.kt
index a25c741f..a62ee78e 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcServer.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_6_0/RpcServer.kt
@@ -8,10 +8,10 @@ import com.asyncapi.v2._6_0.model.channel.operation.Operation
import com.asyncapi.v2._6_0.model.component.Components
import com.asyncapi.v2._6_0.model.info.Info
import com.asyncapi.v2._6_0.model.server.Server
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelType
-import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelType
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding
import com.asyncapi.v2.schema.Schema
class RpcServer: AbstractExampleValidationTest() {
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcClientAsyncAPI.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcClientAsyncAPI.kt
index 56e2cd70..1d0a514a 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcClientAsyncAPI.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcClientAsyncAPI.kt
@@ -10,10 +10,10 @@ import com.asyncapi.v3._0_0.model.info.Info
import com.asyncapi.v3._0_0.model.operation.Operation
import com.asyncapi.v3._0_0.model.operation.OperationAction
import com.asyncapi.v3._0_0.model.server.Server
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelType
-import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelType
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding
import com.asyncapi.v3.schema.AsyncAPISchema
class RpcClientAsyncAPI: AbstractExampleValidationTest() {
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcServerAsyncAPI.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcServerAsyncAPI.kt
index c84361a5..efc3e077 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcServerAsyncAPI.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/examples/v3/_0_0/RpcServerAsyncAPI.kt
@@ -10,10 +10,10 @@ import com.asyncapi.v3._0_0.model.info.Info
import com.asyncapi.v3._0_0.model.operation.Operation
import com.asyncapi.v3._0_0.model.operation.OperationAction
import com.asyncapi.v3._0_0.model.server.Server
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBinding
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelType
-import com.asyncapi.bindings.amqp.v0._2_0.channel.queue.AMQPChannelQueueProperties
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelBinding
+import com.asyncapi.bindings.amqp.v0._3_0.channel.AMQPChannelType
+import com.asyncapi.bindings.amqp.v0._3_0.channel.queue.AMQPChannelQueueProperties
+import com.asyncapi.bindings.amqp.v0._3_0.operation.AMQPOperationBinding
import com.asyncapi.v3.schema.AsyncAPISchema
class RpcServerAsyncAPI: AbstractExampleValidationTest() {
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/ChannelItemTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/ChannelItemTest.kt
index d4d4b595..74bcd332 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/ChannelItemTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/ChannelItemTest.kt
@@ -5,7 +5,7 @@ import com.asyncapi.v2._0_0.model.channel.operation.OperationWithMessageTest
import com.asyncapi.v2._0_0.model.channel.operation.OperationWithReferenceToMessageTest
import com.asyncapi.v2.schema.Schema
import com.asyncapi.bindings.ChannelBinding
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.amqp1.v0._1_0.channel.AMQP1ChannelBinding
import com.asyncapi.bindings.anypointmq.v0._0_1.channel.AnypointMQChannelBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.channel.GooglePubSubChannelBindingTest
@@ -55,7 +55,7 @@ class ChannelItemTest: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPChannelBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.channelBinding()),
Pair("amqp1", AMQP1ChannelBinding()),
Pair("anypointmq", AnypointMQChannelBindingTest().build()),
Pair("googlepubsub", GooglePubSubChannelBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTest.kt
index 1482e4a9..1bc03805 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTest.kt
@@ -6,7 +6,7 @@ import com.asyncapi.Reference
import com.asyncapi.v2._0_0.model.Tag
import com.asyncapi.v2.schema.Schema
import com.asyncapi.bindings.MessageBinding
-import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.amqp1.v0._1_0.message.AMQP1MessageBinding
import com.asyncapi.bindings.anypointmq.v0._0_1.message.AnypointMQMessageBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.message.GooglePubSubMessageBindingTest
@@ -114,7 +114,7 @@ class MessageTest: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", AMQP1MessageBinding()),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTraitTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTraitTest.kt
index 5ba3cd3d..a6b382cf 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTraitTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/message/MessageTraitTest.kt
@@ -4,7 +4,7 @@ import com.asyncapi.v2.SerDeTest
import com.asyncapi.v2._0_0.model.ExternalDocumentation
import com.asyncapi.v2._0_0.model.Tag
import com.asyncapi.v2.schema.Schema
-import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.amqp1.v0._1_0.message.AMQP1MessageBinding
import com.asyncapi.bindings.anypointmq.v0._0_1.message.AnypointMQMessageBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.message.GooglePubSubMessageBindingTest
@@ -73,7 +73,7 @@ class MessageTraitTest: SerDeTest() {
))
.externalDocs(ExternalDocumentation("User sign up rules", "messages/sign-up-rules"))
.bindings(mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", AMQP1MessageBinding()),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTest.kt
index a7865936..5ae29c36 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTest.kt
@@ -6,7 +6,7 @@ import com.asyncapi.Reference
import com.asyncapi.v2._0_0.model.Tag
import com.asyncapi.v2._0_0.model.channel.message.MessageTest
import com.asyncapi.bindings.OperationBinding
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.amqp1.v0._1_0.operation.AMQP1OperationBinding
import com.asyncapi.bindings.anypointmq.v0._0_1.operation.AnypointMQOperationBinding
import com.asyncapi.bindings.googlepubsub.v0._1_0.operation.GooglePubSubOperationBinding
@@ -101,7 +101,7 @@ class OperationTest {
@JvmStatic
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", AMQP1OperationBinding()),
Pair("anypointmq", AnypointMQOperationBinding()),
Pair("googlepubsub", GooglePubSubOperationBinding()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTraitTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTraitTest.kt
index edaaf32c..05a06df0 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTraitTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_0_0/model/channel/operation/OperationTraitTest.kt
@@ -3,7 +3,7 @@ package com.asyncapi.v2._0_0.model.channel.operation
import com.asyncapi.v2.SerDeTest
import com.asyncapi.v2._0_0.model.ExternalDocumentation
import com.asyncapi.v2._0_0.model.Tag
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.amqp1.v0._1_0.operation.AMQP1OperationBinding
import com.asyncapi.bindings.anypointmq.v0._0_1.operation.AnypointMQOperationBinding
import com.asyncapi.bindings.googlepubsub.v0._1_0.operation.GooglePubSubOperationBinding
@@ -50,7 +50,7 @@ class OperationTraitTest: SerDeTest() {
))
.externalDocs(ExternalDocumentation("Messages sending rules", "messages/sending-rules"))
.bindings(mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", AMQP1OperationBinding()),
Pair("anypointmq", AnypointMQOperationBinding()),
Pair("googlepubsub", GooglePubSubOperationBinding()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/ChannelItemTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/ChannelItemTest.kt
index babcdfdb..9ad25aad 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/ChannelItemTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/ChannelItemTest.kt
@@ -5,7 +5,7 @@ import com.asyncapi.v2.SerDeTest
import com.asyncapi.v2._6_0.model.channel.operation.OperationWithMessageTest
import com.asyncapi.v2._6_0.model.channel.operation.OperationWithOneOfMessageTest
import com.asyncapi.v2.schema.Schema
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.anypointmq.v0._0_1.channel.AnypointMQChannelBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.channel.GooglePubSubChannelBindingTest
import com.asyncapi.bindings.ibmmq.v0._1_0.channel.IBMMQChannelBindingTest
@@ -44,7 +44,7 @@ class ChannelItemTest: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPChannelBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.channelBinding()),
Pair("amqp1", Reference("#/components/channelBindings/amqp1")),
Pair("anypointmq", AnypointMQChannelBindingTest().build()),
Pair("googlepubsub", GooglePubSubChannelBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTest.kt
index e5cc196b..b36c738c 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTest.kt
@@ -5,7 +5,7 @@ import com.asyncapi.v2.SerDeTest
import com.asyncapi.v2._6_0.model.ExternalDocumentation
import com.asyncapi.v2._6_0.model.Tag
import com.asyncapi.v2.schema.Schema
-import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.anypointmq.v0._0_1.message.AnypointMQMessageBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.message.GooglePubSubMessageBindingTest
import com.asyncapi.bindings.http.v0._1_0.message.HTTPMessageBindingTest
@@ -88,7 +88,7 @@ class MessageTest: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTraitTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTraitTest.kt
index 8d818abf..4a570ef7 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTraitTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/message/MessageTraitTest.kt
@@ -5,7 +5,7 @@ import com.asyncapi.v2.SerDeTest
import com.asyncapi.v2._6_0.model.ExternalDocumentation
import com.asyncapi.v2._6_0.model.Tag
import com.asyncapi.v2.schema.Schema
-import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.anypointmq.v0._0_1.message.AnypointMQMessageBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.message.GooglePubSubMessageBindingTest
import com.asyncapi.bindings.http.v0._1_0.message.HTTPMessageBindingTest
@@ -60,7 +60,7 @@ class MessageTraitTest: SerDeTest() {
))
.externalDocs(ExternalDocumentation("User sign up rules", "messages/sign-up-rules"))
.bindings(mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTest.kt
index 91129647..52240074 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTest.kt
@@ -6,7 +6,7 @@ import com.asyncapi.v2._6_0.model.ExternalDocumentation
import com.asyncapi.v2._6_0.model.Tag
import com.asyncapi.v2._6_0.model.channel.message.MessageTest
import com.asyncapi.v2._6_0.model.channel.message.OneOfMessages
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.http.v0._1_0.operation.HTTPOperationBindingTest
import com.asyncapi.bindings.kafka.v0._4_0.operation.KafkaOperationBindingTest
import com.asyncapi.bindings.mqtt.v0._1_0.operation.MQTTOperationBindingTest
@@ -136,7 +136,7 @@ class OperationTest {
@JvmStatic
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", Reference("#/components/operationBindings/amqp1")),
Pair("anypointmq", Reference("#/components/operationBindings/anypointmq")),
Pair("googlepubsub", Reference("#/components/operationBindings/googlepubsub")),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTraitTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTraitTest.kt
index 93ad9962..519c679c 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTraitTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v2/_6_0/model/channel/operation/OperationTraitTest.kt
@@ -4,7 +4,7 @@ import com.asyncapi.Reference
import com.asyncapi.v2.SerDeTest
import com.asyncapi.v2._6_0.model.ExternalDocumentation
import com.asyncapi.v2._6_0.model.Tag
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.http.v0._1_0.operation.HTTPOperationBindingTest
import com.asyncapi.bindings.kafka.v0._4_0.operation.KafkaOperationBindingTest
import com.asyncapi.bindings.mqtt.v0._1_0.operation.MQTTOperationBindingTest
@@ -40,7 +40,7 @@ class OperationTraitTest: SerDeTest() {
))
.externalDocs(ExternalDocumentation("Messages sending rules", "messages/sending-rules"))
.bindings(mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", Reference("#/components/operationBindings/amqp1")),
Pair("anypointmq", Reference("#/components/operationBindings/anypointmq")),
Pair("googlepubsub", Reference("#/components/operationBindings/googlepubsub")),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/ChannelTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/ChannelTest.kt
index cbdda007..69714add 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/ChannelTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/ChannelTest.kt
@@ -8,7 +8,7 @@ import com.asyncapi.v3._0_0.model.TagTestWithReferenceToExternalDocs
import com.asyncapi.v3._0_0.model.channel.message.MessageTestWithMultiFormatSchema
import com.asyncapi.v3._0_0.model.channel.message.MessageTestWithReference
import com.asyncapi.v3._0_0.model.channel.message.MessageTestWithSchema
-import com.asyncapi.bindings.amqp.v0._2_0.channel.AMQPChannelBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.anypointmq.v0._0_1.channel.AnypointMQChannelBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.channel.GooglePubSubChannelBindingTest
import com.asyncapi.bindings.ibmmq.v0._1_0.channel.IBMMQChannelBindingTest
@@ -64,7 +64,7 @@ class ChannelTest: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPChannelBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.channelBinding()),
Pair("amqp1", Reference("#/components/channelBindings/amqp1")),
Pair("anypointmq", AnypointMQChannelBindingTest().build()),
Pair("googlepubsub", GooglePubSubChannelBindingTest().build()),
@@ -137,7 +137,7 @@ class ChannelTestWithReference: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPChannelBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.channelBinding()),
Pair("amqp1", Reference("#/components/channelBindings/amqp1")),
Pair("anypointmq", AnypointMQChannelBindingTest().build()),
Pair("googlepubsub", GooglePubSubChannelBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTest.kt
index 40b353fb..74d57c49 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTest.kt
@@ -4,7 +4,7 @@ import com.asyncapi.Reference
import com.asyncapi.v3.SerDeTest
import com.asyncapi.v3._0_0.model.ExternalDocumentation
import com.asyncapi.v3._0_0.model.Tag
-import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.anypointmq.v0._0_1.message.AnypointMQMessageBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.message.GooglePubSubMessageBindingTest
import com.asyncapi.bindings.http.v0._1_0.message.HTTPMessageBindingTest
@@ -84,7 +84,7 @@ class MessageTestWithSchema: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
@@ -137,7 +137,7 @@ class MessageTestWithReference: SerDeTest() {
))
.externalDocs(Reference("#/components/externalDocs/external-doc"))
.bindings(mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
@@ -227,7 +227,7 @@ class MessageTestWithMultiFormatSchema: SerDeTest() {
))
.externalDocs(Reference("#/components/externalDocs/external-doc"))
.bindings(mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTraitTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTraitTest.kt
index 4e0a823c..7afb32c1 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTraitTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/channel/message/MessageTraitTest.kt
@@ -5,7 +5,7 @@ import com.asyncapi.v3.SerDeTest
import com.asyncapi.v3._0_0.model.ExternalDocumentation
import com.asyncapi.v3._0_0.model.Tag
import com.asyncapi.v3.schema.AsyncAPISchema
-import com.asyncapi.bindings.amqp.v0._2_0.message.AMQPMessageBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.anypointmq.v0._0_1.message.AnypointMQMessageBindingTest
import com.asyncapi.bindings.googlepubsub.v0._1_0.message.GooglePubSubMessageBindingTest
import com.asyncapi.bindings.http.v0._1_0.message.HTTPMessageBindingTest
@@ -59,7 +59,7 @@ class MessageTraitTestWithSchema: SerDeTest() {
))
.externalDocs(ExternalDocumentation("User sign up rules", "messages/sign-up-rules"))
.bindings(mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
@@ -114,7 +114,7 @@ class MessageTraitTestWithReference: SerDeTest() {
))
.externalDocs(Reference("#/components/externalDocs/external-doc"))
.bindings(mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
@@ -186,7 +186,7 @@ class MessageTraitTestWithMultiFormatSchema: SerDeTest() {
))
.externalDocs(Reference("#/components/externalDocs/external-doc"))
.bindings(mapOf(
- Pair("amqp", AMQPMessageBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.messageBinding()),
Pair("amqp1", Reference("#/components/messageBindings/amqp1")),
Pair("anypointmq", AnypointMQMessageBindingTest().build()),
Pair("googlepubsub", GooglePubSubMessageBindingTest().build()),
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTest.kt
index 94ff2dbd..5d1ac7c9 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTest.kt
@@ -1,6 +1,6 @@
package com.asyncapi.v3._0_0.model.operation
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.http.v0._1_0.operation.HTTPOperationBindingTest
import com.asyncapi.bindings.kafka.v0._4_0.operation.KafkaOperationBindingTest
import com.asyncapi.bindings.mqtt.v0._1_0.operation.MQTTOperationBindingTest
@@ -63,7 +63,7 @@ class OperationTest: SerDeTest() {
companion object {
fun bindings(): Map {
return mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", Reference("#/components/operationBindings/amqp1")),
Pair("anypointmq",
Reference("#/components/operationBindings/anypointmq")
@@ -121,7 +121,7 @@ class OperationTestWithReference: SerDeTest() {
))
.externalDocs(Reference("#/components/externalDocs/external-doc"))
.bindings(mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", Reference("#/components/operationBindings/amqp1")),
Pair("anypointmq",
Reference("#/components/operationBindings/anypointmq")
diff --git a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTraitTest.kt b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTraitTest.kt
index b477904e..4b643d7c 100644
--- a/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTraitTest.kt
+++ b/asyncapi-core/src/test/kotlin/com/asyncapi/v3/_0_0/model/operation/OperationTraitTest.kt
@@ -1,6 +1,6 @@
package com.asyncapi.v3._0_0.model.operation
-import com.asyncapi.bindings.amqp.v0._2_0.operation.AMQPOperationBindingTest
+import com.asyncapi.bindings.amqp.AMQPV0_2_0Test
import com.asyncapi.bindings.http.v0._1_0.operation.HTTPOperationBindingTest
import com.asyncapi.bindings.kafka.v0._4_0.operation.KafkaOperationBindingTest
import com.asyncapi.bindings.mqtt.v0._1_0.operation.MQTTOperationBindingTest
@@ -43,7 +43,7 @@ class OperationTraitTest: SerDeTest() {
))
.externalDocs(ExternalDocumentation("Messages validation rules", "messages/validation-rules"))
.bindings(mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", Reference("#/components/operationBindings/amqp1")),
Pair("anypointmq",
Reference("#/components/operationBindings/anypointmq")
@@ -103,7 +103,7 @@ class OperationTraitTestWithReference: SerDeTest() {
))
.externalDocs(Reference("#/components/externalDocs/external-doc"))
.bindings(mapOf(
- Pair("amqp", AMQPOperationBindingTest().build()),
+ Pair("amqp", AMQPV0_2_0Test.operationBinding()),
Pair("amqp1", Reference("#/components/operationBindings/amqp1")),
Pair("anypointmq",
Reference("#/components/operationBindings/anypointmq")
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding - extended.json
new file mode 100644
index 00000000..1c659ddd
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding - extended.json
@@ -0,0 +1,21 @@
+{
+ "bindingVersion" : "0.1.0",
+ "is" : "routingKey",
+ "exchange" : {
+ "name" : "myExchange",
+ "type" : "topic",
+ "durable" : true,
+ "autoDelete" : false
+ },
+ "queue" : {
+ "name" : "my-queue-name",
+ "durable" : true,
+ "exclusive" : true,
+ "autoDelete" : false
+ },
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding - wrongly extended.json
new file mode 100644
index 00000000..111cd753
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding - wrongly extended.json
@@ -0,0 +1,22 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false
+ },
+ "bindingVersion": "0.1.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding.json
new file mode 100644
index 00000000..06ac7dda
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/channel/binding.json
@@ -0,0 +1,16 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false
+ },
+ "bindingVersion": "0.1.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding - extended.json
new file mode 100644
index 00000000..6673d9d8
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding - extended.json
@@ -0,0 +1,10 @@
+{
+ "bindingVersion" : "0.1.0",
+ "contentEncoding" : "gzip",
+ "messageType" : "user.signup",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding - wrongly extended.json
new file mode 100644
index 00000000..61f8b5f8
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding - wrongly extended.json
@@ -0,0 +1,11 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "0.1.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding.json
new file mode 100644
index 00000000..5e4323a4
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/message/binding.json
@@ -0,0 +1,5 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "0.1.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding - extended.json
new file mode 100644
index 00000000..0ad32381
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding - extended.json
@@ -0,0 +1,18 @@
+{
+ "bindingVersion" : "0.1.0",
+ "expiration" : 100000,
+ "userId" : "guest",
+ "cc" : [ "user.logs" ],
+ "priority" : 10,
+ "deliveryMode" : 2,
+ "mandatory" : false,
+ "bcc" : [ "external.audit" ],
+ "replyTo" : "user.signedup",
+ "timestamp" : true,
+ "ack" : false,
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding - wrongly extended.json
new file mode 100644
index 00000000..b965b215
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding - wrongly extended.json
@@ -0,0 +1,23 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "replyTo": "user.signedup",
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "0.1.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding.json
new file mode 100644
index 00000000..cac652d9
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/operation/binding.json
@@ -0,0 +1,17 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "replyTo": "user.signedup",
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "0.1.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding - extended.json
new file mode 100644
index 00000000..32459b79
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding - extended.json
@@ -0,0 +1,8 @@
+{
+ "bindingVersion" : "0.1.0",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding - wrongly extended.json
new file mode 100644
index 00000000..a1ecfd51
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding - wrongly extended.json
@@ -0,0 +1,9 @@
+{
+ "bindingVersion": "0.1.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding.json
new file mode 100644
index 00000000..04dbf945
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.1.0/server/binding.json
@@ -0,0 +1,3 @@
+{
+ "bindingVersion": "0.1.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/channel/amqpChannelBinding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/channel/binding - extended.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/channel/amqpChannelBinding - extended.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/channel/binding - extended.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/channel/amqpChannelBinding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/channel/binding - wrongly extended.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/channel/amqpChannelBinding - wrongly extended.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/channel/binding - wrongly extended.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/channel/amqpChannelBinding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/channel/binding.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/channel/amqpChannelBinding.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/channel/binding.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/message/amqpMessageBinding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/message/binding - extended.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/message/amqpMessageBinding - extended.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/message/binding - extended.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/message/amqpMessageBinding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/message/binding - wrongly extended.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/message/amqpMessageBinding - wrongly extended.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/message/binding - wrongly extended.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/message/amqpMessageBinding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/message/binding.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/message/amqpMessageBinding.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/message/binding.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/operation/amqpOperationBinding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/operation/binding - extended.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/operation/amqpOperationBinding - extended.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/operation/binding - extended.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/operation/amqpOperationBinding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/operation/binding - wrongly extended.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/operation/amqpOperationBinding - wrongly extended.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/operation/binding - wrongly extended.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/operation/amqpOperationBinding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/operation/binding.json
similarity index 100%
rename from asyncapi-core/src/test/resources/bindings/amqp/operation/amqpOperationBinding.json
rename to asyncapi-core/src/test/resources/bindings/amqp/0.2.0/operation/binding.json
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding - extended.json
new file mode 100644
index 00000000..3e09b93f
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding - extended.json
@@ -0,0 +1,8 @@
+{
+ "bindingVersion" : "0.2.0",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding - wrongly extended.json
new file mode 100644
index 00000000..1cb38f9c
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding - wrongly extended.json
@@ -0,0 +1,9 @@
+{
+ "bindingVersion": "0.2.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding.json
new file mode 100644
index 00000000..a22565a8
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.2.0/server/binding.json
@@ -0,0 +1,3 @@
+{
+ "bindingVersion": "0.2.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding - extended.json
new file mode 100644
index 00000000..0711c55c
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding - extended.json
@@ -0,0 +1,23 @@
+{
+ "bindingVersion" : "0.3.0",
+ "is" : "routingKey",
+ "exchange" : {
+ "name" : "myExchange",
+ "type" : "topic",
+ "durable" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "queue" : {
+ "name" : "my-queue-name",
+ "durable" : true,
+ "exclusive" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding - wrongly extended.json
new file mode 100644
index 00000000..4168c470
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding - wrongly extended.json
@@ -0,0 +1,24 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "bindingVersion": "0.3.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding.json
new file mode 100644
index 00000000..06cff58b
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/channel/binding.json
@@ -0,0 +1,18 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "bindingVersion": "0.3.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding - extended.json
new file mode 100644
index 00000000..730ae10b
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding - extended.json
@@ -0,0 +1,10 @@
+{
+ "bindingVersion" : "0.3.0",
+ "contentEncoding" : "gzip",
+ "messageType" : "user.signup",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding - wrongly extended.json
new file mode 100644
index 00000000..e58030ff
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding - wrongly extended.json
@@ -0,0 +1,11 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "0.3.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding.json
new file mode 100644
index 00000000..5cb3ca90
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/message/binding.json
@@ -0,0 +1,5 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "0.3.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding - extended.json
new file mode 100644
index 00000000..a055dd28
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding - extended.json
@@ -0,0 +1,17 @@
+{
+ "bindingVersion" : "0.3.0",
+ "expiration" : 100000,
+ "userId" : "guest",
+ "cc" : [ "user.logs" ],
+ "priority" : 10,
+ "deliveryMode" : 2,
+ "mandatory" : false,
+ "bcc" : [ "external.audit" ],
+ "timestamp" : true,
+ "ack" : false,
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding - wrongly extended.json
new file mode 100644
index 00000000..61ff2d82
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding - wrongly extended.json
@@ -0,0 +1,22 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "0.3.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding.json
new file mode 100644
index 00000000..2c8ab4b6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/operation/binding.json
@@ -0,0 +1,16 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "0.3.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding - extended.json
new file mode 100644
index 00000000..8310c9d6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding - extended.json
@@ -0,0 +1,8 @@
+{
+ "bindingVersion" : "0.3.0",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding - wrongly extended.json
new file mode 100644
index 00000000..943a1361
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding - wrongly extended.json
@@ -0,0 +1,9 @@
+{
+ "bindingVersion": "0.3.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding.json
new file mode 100644
index 00000000..4c2843f6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/0.3.0/server/binding.json
@@ -0,0 +1,3 @@
+{
+ "bindingVersion": "0.3.0"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding - extended.json
new file mode 100644
index 00000000..0711c55c
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding - extended.json
@@ -0,0 +1,23 @@
+{
+ "bindingVersion" : "0.3.0",
+ "is" : "routingKey",
+ "exchange" : {
+ "name" : "myExchange",
+ "type" : "topic",
+ "durable" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "queue" : {
+ "name" : "my-queue-name",
+ "durable" : true,
+ "exclusive" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding - wrongly extended.json
new file mode 100644
index 00000000..a0131c3f
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding - wrongly extended.json
@@ -0,0 +1,24 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "bindingVersion": "latest",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding.json
new file mode 100644
index 00000000..b0d109fa
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/channel/binding.json
@@ -0,0 +1,18 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "bindingVersion": "latest"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding - extended.json
new file mode 100644
index 00000000..730ae10b
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding - extended.json
@@ -0,0 +1,10 @@
+{
+ "bindingVersion" : "0.3.0",
+ "contentEncoding" : "gzip",
+ "messageType" : "user.signup",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding - wrongly extended.json
new file mode 100644
index 00000000..95b801a2
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding - wrongly extended.json
@@ -0,0 +1,11 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "latest",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding.json
new file mode 100644
index 00000000..e48dc6d6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/message/binding.json
@@ -0,0 +1,5 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "latest"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding - extended.json
new file mode 100644
index 00000000..a055dd28
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding - extended.json
@@ -0,0 +1,17 @@
+{
+ "bindingVersion" : "0.3.0",
+ "expiration" : 100000,
+ "userId" : "guest",
+ "cc" : [ "user.logs" ],
+ "priority" : 10,
+ "deliveryMode" : 2,
+ "mandatory" : false,
+ "bcc" : [ "external.audit" ],
+ "timestamp" : true,
+ "ack" : false,
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding - wrongly extended.json
new file mode 100644
index 00000000..3b31654e
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding - wrongly extended.json
@@ -0,0 +1,22 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "latest",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding.json
new file mode 100644
index 00000000..6b6c209f
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/operation/binding.json
@@ -0,0 +1,16 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "latest"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding - extended.json
new file mode 100644
index 00000000..8310c9d6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding - extended.json
@@ -0,0 +1,8 @@
+{
+ "bindingVersion" : "0.3.0",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding - wrongly extended.json
new file mode 100644
index 00000000..18560ee8
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding - wrongly extended.json
@@ -0,0 +1,9 @@
+{
+ "bindingVersion": "latest",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding.json
new file mode 100644
index 00000000..cdf165f6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/latest/server/binding.json
@@ -0,0 +1,3 @@
+{
+ "bindingVersion": "latest"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding - extended.json
new file mode 100644
index 00000000..0711c55c
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding - extended.json
@@ -0,0 +1,23 @@
+{
+ "bindingVersion" : "0.3.0",
+ "is" : "routingKey",
+ "exchange" : {
+ "name" : "myExchange",
+ "type" : "topic",
+ "durable" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "queue" : {
+ "name" : "my-queue-name",
+ "durable" : true,
+ "exclusive" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding - wrongly extended.json
new file mode 100644
index 00000000..b618ccb6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding - wrongly extended.json
@@ -0,0 +1,24 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "bindingVersion": "0.199.6",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding.json
new file mode 100644
index 00000000..7251f3d3
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/channel/binding.json
@@ -0,0 +1,18 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "bindingVersion": "0.199.6"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding - extended.json
new file mode 100644
index 00000000..730ae10b
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding - extended.json
@@ -0,0 +1,10 @@
+{
+ "bindingVersion" : "0.3.0",
+ "contentEncoding" : "gzip",
+ "messageType" : "user.signup",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding - wrongly extended.json
new file mode 100644
index 00000000..af71946d
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding - wrongly extended.json
@@ -0,0 +1,11 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "0.199.6",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding.json
new file mode 100644
index 00000000..2129134e
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/message/binding.json
@@ -0,0 +1,5 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "bindingVersion": "0.199.6"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding - extended.json
new file mode 100644
index 00000000..a055dd28
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding - extended.json
@@ -0,0 +1,17 @@
+{
+ "bindingVersion" : "0.3.0",
+ "expiration" : 100000,
+ "userId" : "guest",
+ "cc" : [ "user.logs" ],
+ "priority" : 10,
+ "deliveryMode" : 2,
+ "mandatory" : false,
+ "bcc" : [ "external.audit" ],
+ "timestamp" : true,
+ "ack" : false,
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding - wrongly extended.json
new file mode 100644
index 00000000..d5e720fd
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding - wrongly extended.json
@@ -0,0 +1,22 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "0.199.6",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding.json
new file mode 100644
index 00000000..d30f2034
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/operation/binding.json
@@ -0,0 +1,16 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "0.199.6"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding - extended.json
new file mode 100644
index 00000000..8310c9d6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding - extended.json
@@ -0,0 +1,8 @@
+{
+ "bindingVersion" : "0.3.0",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding - wrongly extended.json
new file mode 100644
index 00000000..ab29a71c
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding - wrongly extended.json
@@ -0,0 +1,9 @@
+{
+ "bindingVersion": "0.199.6",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding.json
new file mode 100644
index 00000000..03d6b9e6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/unknown version/server/binding.json
@@ -0,0 +1,3 @@
+{
+ "bindingVersion": "0.199.6"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding - extended.json
new file mode 100644
index 00000000..0711c55c
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding - extended.json
@@ -0,0 +1,23 @@
+{
+ "bindingVersion" : "0.3.0",
+ "is" : "routingKey",
+ "exchange" : {
+ "name" : "myExchange",
+ "type" : "topic",
+ "durable" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "queue" : {
+ "name" : "my-queue-name",
+ "durable" : true,
+ "exclusive" : true,
+ "autoDelete" : false,
+ "vhost" : "/"
+ },
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding - wrongly extended.json
new file mode 100644
index 00000000..2bd1dd45
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding - wrongly extended.json
@@ -0,0 +1,23 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding.json
new file mode 100644
index 00000000..6a657317
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/channel/binding.json
@@ -0,0 +1,17 @@
+{
+ "is": "routingKey",
+ "queue": {
+ "name": "my-queue-name",
+ "durable": true,
+ "exclusive": true,
+ "autoDelete": false,
+ "vhost": "/"
+ },
+ "exchange": {
+ "name": "myExchange",
+ "type": "topic",
+ "durable": true,
+ "autoDelete": false,
+ "vhost": "/"
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding - extended.json
new file mode 100644
index 00000000..730ae10b
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding - extended.json
@@ -0,0 +1,10 @@
+{
+ "bindingVersion" : "0.3.0",
+ "contentEncoding" : "gzip",
+ "messageType" : "user.signup",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding - wrongly extended.json
new file mode 100644
index 00000000..b2e9e16d
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding - wrongly extended.json
@@ -0,0 +1,10 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding.json
new file mode 100644
index 00000000..5a989f71
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/message/binding.json
@@ -0,0 +1,4 @@
+{
+ "contentEncoding": "gzip",
+ "messageType": "user.signup"
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding - extended.json
new file mode 100644
index 00000000..a055dd28
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding - extended.json
@@ -0,0 +1,17 @@
+{
+ "bindingVersion" : "0.3.0",
+ "expiration" : 100000,
+ "userId" : "guest",
+ "cc" : [ "user.logs" ],
+ "priority" : 10,
+ "deliveryMode" : 2,
+ "mandatory" : false,
+ "bcc" : [ "external.audit" ],
+ "timestamp" : true,
+ "ack" : false,
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding - wrongly extended.json
new file mode 100644
index 00000000..61ff2d82
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding - wrongly extended.json
@@ -0,0 +1,22 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false,
+ "bindingVersion": "0.3.0",
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding.json
new file mode 100644
index 00000000..74492aac
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/operation/binding.json
@@ -0,0 +1,15 @@
+{
+ "expiration": 100000,
+ "userId": "guest",
+ "cc": [
+ "user.logs"
+ ],
+ "priority": 10,
+ "deliveryMode": 2,
+ "mandatory": false,
+ "bcc": [
+ "external.audit"
+ ],
+ "timestamp": true,
+ "ack": false
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding - extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding - extended.json
new file mode 100644
index 00000000..8310c9d6
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding - extended.json
@@ -0,0 +1,8 @@
+{
+ "bindingVersion" : "0.3.0",
+ "x-number" : 0,
+ "x-string" : "",
+ "x-object" : {
+ "property" : { }
+ }
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding - wrongly extended.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding - wrongly extended.json
new file mode 100644
index 00000000..a16bbdf8
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding - wrongly extended.json
@@ -0,0 +1,8 @@
+{
+ "x-number": 0,
+ "x-string": "",
+ "x-object": {
+ "property": {}
+ },
+ "ext-number": 1
+}
\ No newline at end of file
diff --git a/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding.json b/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/asyncapi-core/src/test/resources/bindings/amqp/without version/server/binding.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index ba543c30..8dea0cb0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,13 @@
${junit5.version}
test
+
+ org.junit.platform
+ junit-platform-suite-engine
+ 1.10.2
+ test
+
+