Skip to content

Commit

Permalink
feat(ns-asyncapi-2-0): add support for Kafka Channel Obj
Browse files Browse the repository at this point in the history
Refs #387
  • Loading branch information
char0n committed May 28, 2021
1 parent fcf8300 commit 4006f15
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 2 deletions.
2 changes: 1 addition & 1 deletion apidom/packages/apidom-ns-asyncapi-2-0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ Only fully implemented specification objects should be checked here.
#### Kafka Bindings

- [ ] [Server Binding Object](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#server-binding-object) (reserved for future)
- [ ] [Channel Binding Object](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel-binding-object) (reserved for future)
- [x] [Channel Binding Object](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#channel-binding-object)
- [x] [Operation Binding Object](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#operation-binding-object)
- [x] [Message Binding Object](https://github.com/asyncapi/bindings/blob/master/kafka/README.md#message-binding-object)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Attributes, Meta, ObjectElement } from 'minim';

class KafkaChannelBinding extends ObjectElement {
constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes) {
super(content, meta, attributes);
this.element = 'kafkaChannelBinding';
}
}

export default KafkaChannelBinding;
1 change: 1 addition & 0 deletions apidom/packages/apidom-ns-asyncapi-2-0/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ export { default as HttpMessageBindingElement } from './elements/bindings/http/H
export { default as HttpOperationBindingElement } from './elements/bindings/http/HttpOperationBinding';
export { default as HttpServerBindingElement } from './elements/bindings/http/HttpServerBinding';
// Kafka
export { default as KafkaChannelBindingElement } from './elements/bindings/kafka/KafkaChannelBinding';
export { default as KafkaMessageBindingElement } from './elements/bindings/kafka/KafkaMessageBinding';
export { default as KafkaOperationBindingElement } from './elements/bindings/kafka/KafkaOperationBinding';
// MQTT
Expand Down
2 changes: 2 additions & 0 deletions apidom/packages/apidom-ns-asyncapi-2-0/src/namespace.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import HttpMessageBindingElement from './elements/bindings/http/HttpMessageBindi
import HttpOperationBindingElement from './elements/bindings/http/HttpOperationBinding';
import HttpServerBindingElement from './elements/bindings/http/HttpServerBinding';
// Kafka
import KafkaChannelBindingElement from './elements/bindings/kafka/KafkaChannelBinding';
import KafkaMessageBindingElement from './elements/bindings/kafka/KafkaMessageBinding';
import KafkaOperationBindingElement from './elements/bindings/kafka/KafkaOperationBinding';
// MQTT
Expand Down Expand Up @@ -103,6 +104,7 @@ const asyncApi2_0 = {
base.register('httpOperationBinding', HttpOperationBindingElement);
base.register('httpServerBinding', HttpServerBindingElement);
// Kafka
base.register('kafkaChannelBinding', KafkaChannelBindingElement);
base.register('kafkaMessageBinding', KafkaMessageBindingElement);
base.register('kafkaOperationBinding', KafkaOperationBindingElement);
// MQTT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import HttpMessageBindingElement from '../elements/bindings/http/HttpMessageBind
import HttpOperationBindingElement from '../elements/bindings/http/HttpOperationBinding';
import HttpServerBindingElement from '../elements/bindings/http/HttpServerBinding';
// Kafka
import KafkaChannelBindingElement from '../elements/bindings/kafka/KafkaChannelBinding';
import KafkaMessageBindingElement from '../elements/bindings/kafka/KafkaMessageBinding';
import KafkaOperationBindingElement from '../elements/bindings/kafka/KafkaOperationBinding';
// Mqtt
Expand Down Expand Up @@ -294,6 +295,15 @@ HttpServerBindingElement.refract = createRefractor([
'$visitor',
]);
// Kafka
KafkaChannelBindingElement.refract = createRefractor([
'visitors',
'document',
'objects',
'bindings',
'kafka',
'ChannelBinding',
'$visitor',
]);
KafkaMessageBindingElement.refract = createRefractor([
'visitors',
'document',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ import HttpOperationBindingMethodVisitor from './visitors/async-api-2-0/bindings
import HttpOperationBindingBindingVersionVisitor from './visitors/async-api-2-0/bindings/http/operation-binding/BindingVersionVisitor';
import HttpServerBindingVisitor from './visitors/async-api-2-0/bindings/http/server-binding';
// Kafka
import KafkaChannelBindingVisitor from './visitors/async-api-2-0/bindings/kafka/channel-binding';
import KafkaMessageBindingVisitor from './visitors/async-api-2-0/bindings/kafka/message-binding';
import KafkaMessageBindingBindingVersionVisitor from './visitors/async-api-2-0/bindings/kafka/message-binding/BindingVersionVisitor';
import KafkaOperationBindingVisitor from './visitors/async-api-2-0/bindings/kafka/operation-binding';
Expand Down Expand Up @@ -420,7 +421,9 @@ const specification = {
},
kafka: {
ServerBinding: FallbackVisitor,
ChannelBinding: FallbackVisitor,
ChannelBinding: {
$visitor: KafkaChannelBindingVisitor,
},
OperationBinding: {
$visitor: KafkaOperationBindingVisitor,
fixedFields: {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import stampit from 'stampit';
import { always } from 'ramda';

import KafkaChannelBindingElement from '../../../../../../elements/bindings/kafka/KafkaChannelBinding';
import FallbackVisitor from '../../../../FallbackVisitor';
import FixedFieldsVisitor from '../../../../generics/FixedFieldsVisitor';

const KafkaChannelBindingVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, {
props: {
specPath: always(['document', 'objects', 'bindings', 'kafka', 'ChannelBinding']),
canSupportSpecificationExtensions: false,
},
init() {
this.element = new KafkaChannelBindingElement();
},
});

export default KafkaChannelBindingVisitor;
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ export const keyMap = {
HttpOperationBindingElement: ['content'],
HttpServerBindingElement: ['content'],
// Kafka
KafkaChannelBindingElement: ['content'],
KafkaMessageBindingElement: ['content'],
KafkaOperationBindingElement: ['content'],
// MQTT
Expand Down

0 comments on commit 4006f15

Please sign in to comment.