-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Implement message model annotations (#43)
* feat - Implement message model annotations * chore - Remove unused dependencies
- Loading branch information
1 parent
ef322e8
commit f5430a0
Showing
11 changed files
with
236 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<parent> | ||
<groupId>org.openfolder</groupId> | ||
<artifactId>kotlin-asyncapi-parent</artifactId> | ||
<version>2.1.4-SNAPSHOT</version> | ||
</parent> | ||
|
||
<artifactId>kotlin-asyncapi-annotation</artifactId> | ||
<packaging>jar</packaging> | ||
|
||
<name>Kotlin AsyncAPI Annotation</name> | ||
<description>AsyncAPI annotations for meta-documentation</description> | ||
</project> |
8 changes: 8 additions & 0 deletions
8
...capi-annotation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/CorrelationID.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package org.openfolder.kotlinasyncapi.annotation | ||
|
||
annotation class CorrelationID( | ||
val default: Boolean = false, | ||
val reference: String = "", | ||
val location: String, | ||
val description: String = "" | ||
) |
7 changes: 7 additions & 0 deletions
7
...otation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/ExternalDocumentation.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package org.openfolder.kotlinasyncapi.annotation | ||
|
||
annotation class ExternalDocumentation( | ||
val default: Boolean = false, | ||
val url: String, | ||
val description: String = "" | ||
) |
35 changes: 35 additions & 0 deletions
35
...in-asyncapi-annotation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/Schema.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package org.openfolder.kotlinasyncapi.annotation | ||
|
||
import kotlin.reflect.KClass | ||
|
||
annotation class Schema( | ||
val default: Boolean = false, | ||
val reference: String = "", | ||
val title: String = "", | ||
val description: String = "", | ||
val implementation: KClass<*> = Void::class, | ||
val readOnly: Boolean = false, | ||
val writeOnly: Boolean = false, | ||
val examples: Array<String> = [], | ||
val type: String = "", | ||
val multipleOf: Int = 0, | ||
val maximum: Int = 0, | ||
val exclusiveMaximum: Int = 0, | ||
val minimum: Int = 0, | ||
val exclusiveMinimum: Int = 0, | ||
val maxLength: Int = 0, | ||
val minLength: Int = 0, | ||
val pattern: String = "", | ||
val maxProperties: Int = 0, | ||
val minProperties: Int = 0, | ||
val required: Array<String> = [], | ||
val additionalProperties: String = "", | ||
val allOf: Array<KClass<*>> = [], | ||
val anyOf: Array<KClass<*>> = [], | ||
val oneOf: Array<KClass<*>> = [], | ||
val not: KClass<*> = Void::class, | ||
val format: String = "", | ||
val discriminator: String = "", | ||
val externalDocs: ExternalDocumentation = ExternalDocumentation(default = true, url = ""), | ||
val deprecated: Boolean = false | ||
) |
8 changes: 8 additions & 0 deletions
8
kotlin-asyncapi-annotation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/Tag.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package org.openfolder.kotlinasyncapi.annotation | ||
|
||
annotation class Tag( | ||
val default: Boolean = false, | ||
val name: String, | ||
val description: String = "", | ||
val externalDocs: ExternalDocumentation = ExternalDocumentation(default = true, url = "") | ||
) |
33 changes: 33 additions & 0 deletions
33
...pi-annotation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/channel/Message.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.openfolder.kotlinasyncapi.annotation.channel | ||
|
||
import org.openfolder.kotlinasyncapi.annotation.CorrelationID | ||
import org.openfolder.kotlinasyncapi.annotation.ExternalDocumentation | ||
import org.openfolder.kotlinasyncapi.annotation.Schema | ||
import org.openfolder.kotlinasyncapi.annotation.Tag | ||
|
||
@Target( | ||
AnnotationTarget.CLASS, | ||
AnnotationTarget.FUNCTION, | ||
AnnotationTarget.VALUE_PARAMETER, | ||
AnnotationTarget.ANNOTATION_CLASS | ||
) | ||
@Repeatable | ||
annotation class Message( | ||
val default: Boolean = false, | ||
val reference: String = "", | ||
val messageId: String = "", | ||
val schemaFormat: String = "", | ||
val contentType: String = "", | ||
val name: String = "", | ||
val title: String = "", | ||
val summary: String = "", | ||
val description: String = "", | ||
val headers: Array<Schema> = [], | ||
val payload: Schema = Schema(), | ||
val correlationId: CorrelationID = CorrelationID(default = true, location = ""), | ||
val tags: Array<Tag> = [], | ||
val externalDocs: ExternalDocumentation = ExternalDocumentation(default = true, url = ""), | ||
val examples: Array<MessageExample> = [], | ||
val bindings: MessageBindings = MessageBindings(default = true), | ||
val traits: Array<MessageTrait> = [] | ||
) |
89 changes: 89 additions & 0 deletions
89
...tation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/channel/MessageBinding.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package org.openfolder.kotlinasyncapi.annotation.channel | ||
|
||
import org.openfolder.kotlinasyncapi.annotation.Schema | ||
|
||
annotation class MessageBindings( | ||
val default: Boolean = false, | ||
val reference: String = "", | ||
val http: MessageBinding.HTTP = MessageBinding.HTTP(default = true), | ||
val ws: MessageBinding.WebSockets = MessageBinding.WebSockets(default = true), | ||
val kafka: MessageBinding.Kafka = MessageBinding.Kafka(default = true), | ||
val anypointmq: MessageBinding.AnypointMQ = MessageBinding.AnypointMQ(default = true), | ||
val amqp: MessageBinding.AMQP = MessageBinding.AMQP(default = true), | ||
val amqp1: MessageBinding.AMQP1 = MessageBinding.AMQP1(default = true), | ||
val mqtt: MessageBinding.MQTT = MessageBinding.MQTT(default = true), | ||
val mqtt5: MessageBinding.MQTT5 = MessageBinding.MQTT5(default = true), | ||
val nats: MessageBinding.NATS = MessageBinding.NATS(default = true), | ||
val jms: MessageBinding.JMS = MessageBinding.JMS(default = true), | ||
val sns: MessageBinding.SNS = MessageBinding.SNS(default = true), | ||
val solace: MessageBinding.Solace = MessageBinding.Solace(default = true), | ||
val sqs: MessageBinding.SQS = MessageBinding.SQS(default = true), | ||
val stomp: MessageBinding.STOMP = MessageBinding.STOMP(default = true), | ||
val redis: MessageBinding.Redis = MessageBinding.Redis(default = true), | ||
val mercure: MessageBinding.Mercure = MessageBinding.Mercure(default = true), | ||
val ibmmq: MessageBinding.IBMMQ = MessageBinding.IBMMQ(default = true) | ||
) | ||
|
||
sealed interface MessageBinding { | ||
|
||
annotation class HTTP( | ||
val default: Boolean = false, | ||
val headers: Schema = Schema(default = true), | ||
val bindingVersion: String = "" | ||
) | ||
|
||
annotation class Kafka( | ||
val default: Boolean = false, | ||
val key: Schema = Schema(default = true), | ||
val bindingVersion: String = "" | ||
) | ||
|
||
annotation class AnypointMQ( | ||
val default: Boolean = false, | ||
val headers: Schema = Schema(default = true), | ||
val bindingVersion: String = "" | ||
) | ||
|
||
annotation class AMQP( | ||
val default: Boolean = false, | ||
val contentEncoding: String = "", | ||
val messageType: String = "", | ||
val bindingVersion: String = "" | ||
) | ||
|
||
annotation class MQTT( | ||
val default: Boolean = false, | ||
val bindingVersion: String = "" | ||
) | ||
|
||
annotation class IBMMQ( | ||
val default: Boolean = false, | ||
val type: String = "", | ||
val headers: String = "", | ||
val description: String = "", | ||
val expiry: Int = 0, | ||
val bindingVersion: String = "" | ||
) | ||
|
||
annotation class WebSockets(val default: Boolean = false) | ||
|
||
annotation class AMQP1(val default: Boolean = false) | ||
|
||
annotation class MQTT5(val default: Boolean = false) | ||
|
||
annotation class NATS(val default: Boolean = false) | ||
|
||
annotation class JMS(val default: Boolean = false) | ||
|
||
annotation class SNS(val default: Boolean = false) | ||
|
||
annotation class Solace(val default: Boolean = false) | ||
|
||
annotation class SQS(val default: Boolean = false) | ||
|
||
annotation class STOMP(val default: Boolean = false) | ||
|
||
annotation class Redis(val default: Boolean = false) | ||
|
||
annotation class Mercure(val default: Boolean = false) | ||
} |
11 changes: 11 additions & 0 deletions
11
...tation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/channel/MessageExample.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package org.openfolder.kotlinasyncapi.annotation.channel | ||
|
||
import org.openfolder.kotlinasyncapi.annotation.Schema | ||
|
||
annotation class MessageExample( | ||
val default: Boolean = false, | ||
val headers: Schema = Schema(default = true), | ||
val payload: String = "", | ||
val name: String = "", | ||
val summary: String = "" | ||
) |
24 changes: 24 additions & 0 deletions
24
...notation/src/main/kotlin/org/openfolder/kotlinasyncapi/annotation/channel/MessageTrait.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package org.openfolder.kotlinasyncapi.annotation.channel | ||
|
||
import org.openfolder.kotlinasyncapi.annotation.CorrelationID | ||
import org.openfolder.kotlinasyncapi.annotation.ExternalDocumentation | ||
import org.openfolder.kotlinasyncapi.annotation.Schema | ||
import org.openfolder.kotlinasyncapi.annotation.Tag | ||
|
||
annotation class MessageTrait( | ||
val default: Boolean = false, | ||
val reference: String = "", | ||
val messageId: String = "", | ||
val schemaFormat: String = "", | ||
val contentType: String = "", | ||
val name: String = "", | ||
val title: String = "", | ||
val summary: String = "", | ||
val description: String = "", | ||
val headers: Array<Schema> = [], | ||
val correlationId: CorrelationID = CorrelationID(default = true, location = ""), | ||
val tags: Array<Tag> = [], | ||
val externalDocs: ExternalDocumentation = ExternalDocumentation(default = true, url = ""), | ||
val examples: Array<MessageExample> = [], | ||
val bindings: MessageBindings = MessageBindings(default = true) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters