Giter VIP home page Giter VIP logo

jasyncapi's Introduction

AsyncAPI Logo

Read the specification

The latest draft specification can be found at spec/asyncapi.md which tracks the latest commit to the master branch in this repository.

The human-readable markdown file is the source of truth for the specification.

Click to see reference links to older versions of the specification.

Looking for the JSON Schema files? Check out our spec-json-schemas repo.

Feel like contributing? Check out our contributor's guide.

Examples

Check out the examples directory for examples.

Case Studies and Adopters

Check out the AsyncAPI website to see the list of AsyncAPI adopters and their use cases.

Our Sponsors

Want to become a sponsor? Learn what we do with sponsors' money and join the club.

Platinum

IBM logo      Solace logo

Gold

Postman logo

Silver

Bump.sh logo      svix logo
hivemq logo      aklivity logo

Bronze

RedHat logo

Contributors

Thanks goes to these wonderful people (emoji key):

Fran Méndez
Fran Méndez

💬 🐛 📝 📖 🤔 🚇 🚧 👀 📢
Lukasz Gornicki
Lukasz Gornicki

📖 🤔 👀 💬 📝 📢 🚧 🚇
Mike Ralphson
Mike Ralphson

💬 📖 🤔 🚇 👀 🚧
raisel melian
raisel melian

💬 🐛 📖 🤔 🚧 👀
Chris Wood
Chris Wood

🤔 📖
Jonathan Schabowsky
Jonathan Schabowsky

📖 🤔
Victor Romero
Victor Romero

🤔 👀
Antonio Garrote
Antonio Garrote

🤔 👀 📖
Jonathan Stoikovitch
Jonathan Stoikovitch

💡 🤔 👀
Jonas Lagoni
Jonas Lagoni

🐛 📖 🤔 💬 👀 💡
Waleed Ashraf
Waleed Ashraf

📢 🤔 📖 💡
Andrzej Jarzyna
Andrzej Jarzyna

📢
Emmelyn Wang
Emmelyn Wang

📝 🤔 📖 📢
Marc DiPasquale
Marc DiPasquale

📝 📢 👀 🐛 🤔 📹
Gerald Loeffler
Gerald Loeffler

📖 🐛 🤔
Dale Lane
Dale Lane

📝 🤔 📹 📢 📖
Maciej Urbańczyk
Maciej Urbańczyk

👀 🤔 💬 🐛 📖 💡 🚧
Vladimir Gorej
Vladimir Gorej

📖 🐛 💡 🤔 👀
Lorna Jane Mitchell
Lorna Jane Mitchell

📢 🤔
Laurent Broudoux
Laurent Broudoux

📖 📝 📢 💡 🤔 👀
Jesse Menning
Jesse Menning

📝 📢 👀 🤔
Sergio Moya
Sergio Moya

👀 🤔 💬 📝 🐛 📖 💡 🚧
Alexander Balogh
Alexander Balogh

📖 🐛
Khuda Dad Nomani
Khuda Dad Nomani

💡 🐛
Aaron Korver
Aaron Korver

📖
Orlov Valentine
Orlov Valentine

📖
Moez Bouhlel
Moez Bouhlel

📖
Muhammad Rafly Andrianza
Muhammad Rafly Andrianza

📖
Daniel Kocot
Daniel Kocot

📖 💡 🤔
sekharbans-ebay
sekharbans-ebay

📖 💡 🤔
Michael Davis
Michael Davis

🐛 📖 💡 🤔
Heiko Henning
Heiko Henning

🐛 💻 🖋 📖 💡 🤔 🚧 👀
Quetzalli
Quetzalli

🖋 📖 💡 🤔 👀
Akshit Gupta
Akshit Gupta

🖋 📖
samz
samz

🐛 🖋 📖 💡 📆
Rishi
Rishi

🚧 🚇
nickshoe
nickshoe

🐛 📖
Ace
Ace

📋 🤔 🚧 📢
Animesh Kumar
Animesh Kumar

🖋 📖 🚧
Fabrizio Lazzaretti
Fabrizio Lazzaretti

📖
Pavel Bodiachevskii
Pavel Bodiachevskii

📖 🐛 🤔 💬

This project follows the all-contributors specification. Contributions of any kind welcome!

jasyncapi's People

Contributors

asyncapi-bot avatar codingtenshi avatar crain-32 avatar dennis-brinley avatar dependabot[bot] avatar guillaumelamirand avatar jaydeepk avatar pakisan avatar wrwksbhuber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

jasyncapi's Issues

Need for urgent changes in GitHub Actions automation

This issue defines a list of tasks that need to be performed in this repo to make sure it's ci/cd automation works long term without any issues.

It is up to maintainers to decide if it must be addressed in one or multiple PRs.

Below are 3 different sections describing 3 different important ci/cd changes.

IMPORTANT-START
For GitHub workflows that contain This workflow is centrally managed in https://github.com/asyncapi/.github/ you do not have to perform any work. These workflows were already updated through the update in .github. The only exception is the workflows related to nodejs release. More details in Upgrade Release pipeline - in case of nodejs projects section
IMPORTANT-END

Deprecation of way data is shared between steps

Every single GitHub Action workflow that has echo "::set-output name={name}::{value}" need to be updated to follow echo "{name}={value}" >> $GITHUB_OUTPUT

We do not yet know when set-output will stop working. Previous disable date was 31.05 but now then say community needs more time.

For more details read official article from GitHub

Deprecation of node12

2nd bullet point is still relevant for you even if your projects in not nodejs project

  • Every single workflow that uses setup-node action needs an update to follow v3 version of this action, and make sure minimum node 14 is used
  • Now this part is more complex. Problem with node12 is that node-based GitHub Actions were using it in majority as a runtime environment. Look for example at this action.yaml file for setup-node action v2. So the job that you have to do is go through all the workflows, and verify every single action that you use, make sure you are using the latest version that is not based on node12. I already did review a lot of actions as part of this PR so maybe you will find some actions there and can copy from me. For example action/checkout needs to be updated to v3.

Node12 end of support in action is probably September 27th.

For more details read official article from GitHub

Upgrade Release pipeline - in case of nodejs projects

ignore this section if your project is not nodejs project

You have 2 options. You can:

A. choose to switch to new release pipeline using instruction from asyncapi/.github#205

B. stay with old release pipeline, and manually update GitHub workflows and actions used in it, you can inspire a lot from this PR asyncapi/.github#226

I definitely recommend going with A

Workflows related to release:

  • .github/workflows/if-nodejs-release.yml
  • .github/workflows/if-nodejs-version-bump.yml
  • .github/workflows/bump.yml

Support of schema extensions

Describe the bug

As per AsyncAPI spec the schema and properties allow to define some vendor extensions prefixed with x-. However, the current model classes especialy Schema do not support this.

Expected behavior

The model classes allow to store the vendor extensions and properly render them during serialization to JSON.

Unable to parse a spec with an nullable attribute

Description

When we try to parse a spec with a 'nullable' attribute, it throws an error.

How to Reproduce

Given a spec with the following message schema:

  messages:
    product:
      name: product
      title: An inventory product
      summary: Product representing items in inventory
      contentType: application/json
      payload:
        type: object
        properties:
          name:
            description: Every product has a name
            type: string
          inventory:
            description: Count of items in inventory
            type: number
            nullable: true
          id:
            description: Unique identifier of the product
            type: number

Note: The inventory property has a 'nullable' attribute.

When we try to parse the spec :

val specFilePath ="path to spec file"
val specFileContents = File(specFilePath).readText()
val asyncAPISpec= ObjectMapper(YAMLFactory()).readValue(specFileContents, AsyncAPI::class.java)

It throws this error:

com.fasterxml.jackson.databind.JsonMappingException: "nullable" is not valid extension property (through reference chain: com.asyncapi.v2._6_0.model.channel.message.Message["payload"]->com.asyncapi.v2.schema.Schema["properties"]->java.util.LinkedHashMap["inventory"]->com.asyncapi.v2.schema.Schema["nullable"])
	at com.fasterxml.jackson.databind.deser.SettableAnyProperty._throwAsIOE(SettableAnyProperty.java:246)
	at com.fasterxml.jackson.databind.deser.SettableAnyProperty.set(SettableAnyProperty.java:209)
	at com.fasterxml.jackson.databind.deser.SettableAnyProperty.deserializeAndSet(SettableAnyProperty.java:179)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1765)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:316)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:623)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:449)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)

Come up with project structure and different name

Reason/Context

At the moment the project joined asyncapi organization so there is no need to have java-asyncapi name for the repo for 2 reasons:

  • asyncapi is a duplicate here
  • current name is way to generic

Another thing is, that this repo does not only contain the core of the project but also configurations and code for intelij, maven and gradle plugins.

Description

Please try answering few of those questions

  • I have no idea at the moment what would be the best name. I hope that creator or current community can suggest something. Maybe we should indicate in the repo name that it is code-first? but it is not that good, especially that it now has java in the name that also is not the best indicator as it is also possible to use project in Kotlin. So as you can see, it is a challange 😄
  • I think it can be a monorepo and plugins be part of it, no need to split to separate repos imho. Also the name of the repo/project should not be affected by the fact that plugins are here too

Add basic GitHub Actions workflow files

Reason/Context

I already configured repo according to our instruction, we just need to add basic actions here as described in https://github.com/asyncapi/.github/blob/master/repository-settings.md#add-basic-github-actions-configurations

Description

in this issue, focus should only be on so called global workflows that are the same in all repos. Specific release workflow is separate issue, as it will be more complex, especially if it is suppose to include plugins release

Is the keyword oneOf supported?

Reason/Context

Our team tried to document our current AMQP interface with asyncapi and then use the specification for validation. The current version of java-asyncapi was used as a model for the deserialization, and we encountered the issue, that we use at one point the option of json to provide different subclasses as payload. As this is most likely best documented using oneOf, we tried that, but it didn't work.

Description

Seeing it in the specification under https://www.asyncapi.com/docs/specifications/2.0.0#properties we assumed it should work, but also the playground visualization doesn't really work well with it. When jackson tries to deserialize the example async-api file provided in this ticket, an exception is thrown:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "oneof" (class com.asyncapi.v2.model.schema.Schema), not marked as ignorable (33 known properties: "enum", "multipleOf", "examples", "minimum", "exclusiveMinimum", "minContains", "minLength", "discriminator", "required", "maximum", "exclusiveMaximum", "maxContains", "minProperties", "externalDocs", "maxLength", "writeOnly", "uniqueItems", "deprecated", "maxProperties", "content", "type", "maxItems", "dependentRequired", "default", "minItems", "pattern", "title", "readOnly", "$ref", "properties", "format", "description", "const"])

An example yaml is attached as txt

test.txt

So we are unsure, if it is considered an edge-case or if it is a functionality planned to be supported.

Ensure that 3.0.0 was implemented correctly

Donate jasyncapi-idea-plugin to AsyncAPI

I decided to remove plugins from this repo because of different release cycles and low coupling. Some time ago I deleted jasyncapi-idea-plugin from this repo and evolved it on my side.

For now it's mature plugin approved by more than 3k of users.

Since we don't transfer repos directly to AsyncAPI anymore, I propose to create jasyncapi-idea-plugin repository inside organisation and push all from my repository to newly created.

Plugin lives here: https://plugins.jetbrains.com/plugin/15673-asyncapi
Our organisation lives here: https://plugins.jetbrains.com/organizations/asyncapi

If I'll be unreachable for some reason, @derberg can administrate plugin(release, delete, update information, add new developers) under our account.

Array schema is not being parsed correctly

Hi
We are experiencing some issues with parsing specs where messages are defined as an array of objects.
Let's say I have this spec:

channels:
  test-topic-array:
    publish:
      operationId: publishObjectMessage
      message:
        bindings:
          kafka:
            key:
              type: string
            bindingVersion: '0.4.0'
        payload:
          $ref: "#/components/messages/Task"

components:
  messages:
    Task:
      name: Task
      title: A Task to be processed
      summary: Inform about a new user task in the system
      contentType: application/json
      payload:
        $ref: "#/components/schemas/taskPayload"

  schemas:
    taskPayload:
      type: array
      items:
        type: object
        required:
          - id
          - name
          - done
        properties:
          id:
            type: integer
          name:
            type: string
          done:
            type: boolean

When I parse this schema, the 'items' property appears as a LinkedHashMap.
Ideally, we'd expect this to be a Schema object.
Also in this map, 'properties is again a <String, LinkedHashMap> instead of <String, Schema> ( like we see it for a payload of type="object")

Screenshot 2023-06-29 at 1 47 35 PM

Could you please advise if my understanding is correct and if this is something that you plan to fix at some point ?

Annotation support

Reason/Context

Hi. I noticed the comment that an annotation version is planned. Before I saw that comment I worked on this topic (annotation dependency and maven plugin). But I am not sure if all the work is useless now. I could not see progress on this topic in github. So my question is: Are you interrested in the code? Maybe it can help.

Description

The idea was maven plugin -> reading annotations and Jackson annotations -> map to jasyncapi to generate asycapi file.

It is currently a private repo. If you are interested let me know and I can provide access to it.

Generate POJO annotated with jsr330 annotations from AsynchAPI yaml file

Reason/Context

Please try answering few of those questions

  • Why we need this improvement?
  • We should have library which will generate java lib out of async api spec, so we can dynamically read spec file get the java lib out of it.
  • How will this change help?
  • This will help the developer to perform operations on generated java lib like validation of incoming data, transfer of objects overt the network
  • What is the motivation?
    My work needs it. :(

Description

Please try answering few of those questions

  • What changes have to be introduced?
  • May be simple method call PojoGenerator.fromSource(String specFilePath, String packageNAME) should generate those files from the given spec file under the given package name.
  • Will this be a breaking change?
  • Certainly
  • How could it be implemented/designed?

Array item support in Schema

Reason/Context

Please try answering few of those questions

  • Why we need this improvement?
    When type is Array we need to have items property in the Schema
  • How will this change help?
    This will support array type in our Schema structure
  • What is the motivation?
    To support array type in schema

Description

Please try answering few of those questions

  • What changes have to be introduced?
    Add new field named items in Schema
  • Will this be a breaking change?
    No
  • How could it be implemented/designed?
    Add items

Integration Guide

I'm working on a Maven-JAX RS project. Although there's a ReadMe file for the Maven plugin, it's not exactly clear how should I adjust the classes that I already have so as to enable the spec generation.

I'm currently under the perception that there's no support to generate the spec file with annotations on the existing code I have (as is the case with Swagger). Is there something I'm missing on this aspect?

Schema minimum and maximum field data type change

Reason/Context

Please try answering few of those questions

  • Why we need this improvement?
    To handle different number data types
  • How will this change help?
    We can handle not only integer data types but also other type in min and max validation
  • What is the motivation?

Description

Currently our minimum and maximum field is in integer format we need to support other data type such 

as double/float/big decimal when having some decimal min and max range

  • What changes have to be introduced?
    Change of minimum and maximum data type
  • Will this be a breaking change?
    Data type change will always have breakage specially when its being use already.
  • How could it be implemented/designed?
    Just change the data type.

Incorrect data type for exclusiveMinimum and exclusiveMaximum

Describe the bug

Incorrect data type for exclusiveMinimum and exclusiveMaximum

How to Reproduce

See the Schema.java

exclusiveMinimum and exclusiveMaximum has a data type of integer which has to be a boolean.

Expected behavior

This fields should be boolean data type

Set to true/false the property additionalProperties in Schema class

Description

According to examples found in modelina project, the property "additionalProperties" can be: true, false or a map, but jasyncapi only admit Schema objects. Please see this example (or any other):

https://github.com/asyncapi/modelina/blob/master/test/blackbox/docs/JsonSchemaDraft-7/asyncapi-2_0.json

In the spec reference page, this property is not documented.

I would like to be able to set this property to true or false, because java classes generated by modelina are affected by this property.

This is an extract from documentation (https://github.com/asyncapi/modelina/blob/master/docs/interpretation_of_JSON_Schema.md):

additionalProperties are interpreted as is, where duplicate additionalProperties for the model are merged. If the schema does not define additionalProperties it defaults to true schema.

AsyncAPI 2.6.0

new features:

  • AsyncAPI 2.6.0
  • Objects can be extended - x-*

Unable to parse a spec with an example attribute

Description

When we try to parse a spec with an 'example' attribute, it throws an error.

How to Reproduce

Given a spec with the following message schema:

messages:
    product:
      name: product
      title: An inventory product
      summary: Product representing items in inventory
      contentType: application/json
      payload:
        type: object
        properties:
          name:
            description: Every product has a name
            type: string
            example: Iphone
          inventory:
            description: Count of items in inventory
            type: number
            nullable: true
          id:
            description: Unique identifier of the product
            type: number

Note: The name property has an 'example' attribute.

Now when we try to parse the spec :

val specFilePath ="path to spec file"
val specFileContents = File(specFilePath).readText()
val asyncAPISpec= ObjectMapper(YAMLFactory()).readValue(specFileContents, AsyncAPI::class.java)

It throws this error:

com.fasterxml.jackson.databind.JsonMappingException: "example" is not valid extension property (through reference chain: com.asyncapi.v2._6_0.model.channel.message.Message["payload"]->com.asyncapi.v2.schema.Schema["properties"]->java.util.LinkedHashMap["name"]->com.asyncapi.v2.schema.Schema["example"])
	at com.fasterxml.jackson.databind.deser.SettableAnyProperty._throwAsIOE(SettableAnyProperty.java:246)
	at com.fasterxml.jackson.databind.deser.SettableAnyProperty.set(SettableAnyProperty.java:209)
	at com.fasterxml.jackson.databind.deser.SettableAnyProperty.deserializeAndSet(SettableAnyProperty.java:179)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1765)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:316)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:623)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:449)
	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)
	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) ...

Custom deserializer shouldn't instantiate their own ObjectMapper

Describe the bug

While trying to deserialize AsyncAPI with a custom object mapper which disables FAIL_ON_UNKNOWN_PROPERTIES, stack exceptions are logged anyway and if any extensions are present under Component, Schema, or Message the result AsyncAPI object is half empty.

I will try to work on a PR.

How to Reproduce

Steps to reproduce the issue. Attach all resources that can help us understand the issue:

  • Using the following unit test with the attached AsyncAPI will fail
public class ImportAsyncTest {

    @Test
    void should_parse_asyncapi() throws IOException {
        ClassLoader classloader = Thread.currentThread().getContextClassLoader();
        try (InputStream myStream = classloader.getResourceAsStream("solace.yaml")) {
            String asyncapi = IOUtils.toString(myStream, Charset.defaultCharset()).trim();
            ObjectMapper yamlMapper = new ObjectMapper(
                YAMLFactory
                    .builder()
                    .disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)
                    .enable(StreamReadFeature.STRICT_DUPLICATE_DETECTION)
                    .build()
            )
                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
                .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
                .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
                .setSerializationInclusion(JsonInclude.Include.NON_NULL)
                .findAndRegisterModules();
            var asyncApi = yamlMapper.readValue(asyncapi, AsyncAPI.class);

            assertThat(asyncApi.getServers()).hasSize(2);
            assertThat(asyncApi.getChannels()).hasSize(2);
            assertThat(asyncApi.getComponents()).isNotNull();
            assertThat(asyncApi.getComponents().getMessages()).hasSize(2);
            assertThat(asyncApi.getComponents().getSchemas()).hasSize(2);
        }
    }
components:
  schemas:
    UserSignedUpSchema:
      x-ep-schema-version: "0.1.0"
      x-ep-schema-state-id: "2"
      x-ep-schema-version-id: "5rlnuswe64g"
      $schema: "http://json-schema.org/draft-06/schema#"
      x-ep-schema-id: "hcq88rogdaj"
      x-ep-schema-state-name: "RELEASED"
      x-ep-schema-name: "UserSignedUpSchema"
      definitions:
        UserSignedUp:
          additionalProperties: false
          type: "object"
          title: "UserSignedUp"
          properties:
            displayName:
              type: "string"
            email:
              type: "string"
          required:
            - "displayName"
            - "email"
      x-ep-schema-version-displayname: ""
    UserSignedInSchema:
      x-ep-schema-version: "0.1.0"
      x-ep-schema-state-id: "2"
      x-ep-schema-version-id: "fxnate3zvf6"
      $schema: "http://json-schema.org/draft-06/schema#"
      x-ep-schema-id: "iigkr9ji3kg"
      x-ep-schema-state-name: "RELEASED"
      x-ep-schema-name: "UserSignedInSchema"
      definitions:
        UserSignedIn:
          additionalProperties: false
          type: "object"
          title: "UserSignedn"
          properties:
            displayName:
              type: "string"
            email:
              type: "string"
          required:
            - "displayName"
            - "email"
      x-ep-schema-version-displayname: ""
asyncapi: "2.5.0"
info:
  x-ep-event-api-product-version-id: "4ndau725iz0"
  x-ep-event-api-id: "jcc06dwq1bh"
  x-ep-event-api-product-version: "0.1.0"
  x-ep-state-name: "RELEASED"
  title: "User Event Api"
  x-ep-application-domain-id: "4auuz4amd31"
  version: "0.1.0"
  x-ep-event-api-product-id: "tcpugx95gc0"
  x-ep-event-api-version-id: "t8hkbn8lit9"
  x-ep-application-domain-name: "gravitee_demo"
  x-ep-event-api-version: "0.1.0"
  x-ep-event-api-product-name: "User Event Api Product"
  x-ep-state-id: "2"

Expected behavior

All ignore properties (x-*) are ignored.

Support SASL Security Scheme types

Reason/Context

Please try answering few of those questions

  • Why we need this improvement?
    • SASL security scheme are supported in AsyncAPI 2.1.0 and later. For interacting with Kafka services it is useful to have SASL supported in this library also.
  • How will this change help?
    • It will allow users to document their authentication type

Description

Please try answering few of those questions

  • What changes have to be introduced?
    • I think adding the necessary SASL types to the SecurityScheme enum. I'm not sure what else would be needed.
  • Will this be a breaking change?
    • It shouldn't be as it is adding types

I'm not sure if this is possible as the AsyncAPI version supported in this library is 2.0.0 so I'm not sure if updating this to allow 2.1.0 or later would mean having to add more functionality than just adding SASL to the Security Schemes. So this Issue/Feature Request could be a lot bigger than just adding a Security Scheme.

Could not find com.asyncapi:asyncapi-core:1.0.0-SNAPSHOT

Describe the bug

Could not build project as gradle plugin version 1.0.0-EAP.1 require com.asyncapi:asyncapi-core:1.0.0-SNAPSHOT

How to Reproduce

Steps to reproduce the issue. Attach all resources that can help us understand the issue:

declare the plugin in build.gradle and run "gradle assemble"

org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all artifacts for configuration ':classpath'.
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:1418)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$3600(DefaultConfiguration.java:151)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$DefaultResolutionHost.rethrowFailure(DefaultConfiguration.java:2030)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationArtifactCollection.lambda$new$0(DefaultConfiguration.java:1974)
	at org.gradle.internal.model.CalculatedValueContainerFactory$SupplierBackedCalculator.calculateValue(CalculatedValueContainerFactory.java:81)
	at org.gradle.internal.model.CalculatedValueContainer$CalculationState.lambda$attachValue$0(CalculatedValueContainer.java:218)
	at org.gradle.internal.Try.ofFailable(Try.java:39)
	at org.gradle.internal.model.CalculatedValueContainer$CalculationState.attachValue(CalculatedValueContainer.java:213)
	at org.gradle.internal.model.CalculatedValueContainer.finalizeIfNotAlready(CalculatedValueContainer.java:186)
	at org.gradle.internal.model.CalculatedValueContainer.finalizeIfNotAlready(CalculatedValueContainer.java:177)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationArtifactCollection.ensureResolved(DefaultConfiguration.java:2010)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationArtifactCollection.getArtifacts(DefaultConfiguration.java:1987)
	at org.gradle.composite.internal.CompositeBuildClassPathInitializer.execute(CompositeBuildClassPathInitializer.java:45)
	at org.gradle.composite.internal.CompositeBuildClassPathInitializer.execute(CompositeBuildClassPathInitializer.java:32)
	at org.gradle.api.internal.initialization.DefaultScriptClassPathResolver.resolveClassPath(DefaultScriptClassPathResolver.java:40)
	at org.gradle.api.internal.initialization.DefaultScriptHandler.getNonInstrumentedScriptClassPath(DefaultScriptHandler.java:95)
	at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.defineScriptHandlerClassScope(DefaultPluginRequestApplicator.java:161)
	at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugins(DefaultPluginRequestApplicator.java:121)
	at org.gradle.kotlin.dsl.provider.PluginRequestsHandler.handle(PluginRequestsHandler.kt:48)
	at org.gradle.kotlin.dsl.provider.StandardKotlinScriptEvaluator$InterpreterHost.applyPluginsTo(KotlinScriptEvaluator.kt:193)
	at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.applyPluginsTo(Interpreter.kt:373)
	at Program.execute(Unknown Source)
	at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.eval(Interpreter.kt:506)
	at org.gradle.kotlin.dsl.execution.Interpreter.eval(Interpreter.kt:179)
	at org.gradle.kotlin.dsl.provider.StandardKotlinScriptEvaluator.evaluate(KotlinScriptEvaluator.kt:114)
	at org.gradle.kotlin.dsl.provider.KotlinScriptPluginFactory$create$1.invoke(KotlinScriptPluginFactory.kt:51)
	at org.gradle.kotlin.dsl.provider.KotlinScriptPluginFactory$create$1.invoke(KotlinScriptPluginFactory.kt:36)
	at org.gradle.kotlin.dsl.provider.KotlinScriptPlugin.apply(KotlinScriptPlugin.kt:34)
	at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
	at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:44)
	at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:280)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:307)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:279)
	at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:42)
	at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
	at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:35)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:100)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:280)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$withProjectLock$3(DefaultProjectStateRegistry.java:340)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:340)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:321)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:279)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:741)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:149)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.ensureConfigured(DefaultProjectStateRegistry.java:253)
	at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
	at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:55)
	at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:50)
	at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:64)
	at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
	at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
	at org.gradle.initialization.VintageBuildModelController.prepareProjects(VintageBuildModelController.java:85)
	at org.gradle.initialization.VintageBuildModelController.doBuildStages(VintageBuildModelController.java:69)
	at org.gradle.initialization.VintageBuildModelController.scheduleRequestedTasks(VintageBuildModelController.java:61)
	at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$scheduleRequestedTasks$1(DefaultBuildLifecycleController.java:112)
	at org.gradle.internal.build.DefaultBuildLifecycleController.withModel(DefaultBuildLifecycleController.java:134)
	at org.gradle.internal.build.DefaultBuildLifecycleController.scheduleRequestedTasks(DefaultBuildLifecycleController.java:110)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$fromBuildModel$2(DefaultBuildTreeLifecycleController.java:72)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$doBuild$4(DefaultBuildTreeLifecycleController.java:105)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.doBuild(DefaultBuildTreeLifecycleController.java:99)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.fromBuildModel(DefaultBuildTreeLifecycleController.java:70)
	at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction(AbstractClientProvidedBuildActionRunner.java:58)
	at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:52)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:50)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:69)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:90)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:128)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
	at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:40)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:40)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:103)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
	at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.lambda$execute$0(BuildSessionLifecycleBuildActionExecuter.java:55)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:54)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:63)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.asyncapi:asyncapi-core:1.0.0-SNAPSHOT.
Searched in the following locations:
  - https://plugins.gradle.org/m2/com/asyncapi/asyncapi-core/1.0.0-SNAPSHOT/maven-metadata.xml
  - https://plugins.gradle.org/m2/com/asyncapi/asyncapi-core/1.0.0-SNAPSHOT/asyncapi-core-1.0.0-SNAPSHOT.pom
Required by:
    project : > com.asyncapi.asyncapi-gradle-plugin:com.asyncapi.asyncapi-gradle-plugin.gradle.plugin:1.0.0-EAP.1 > com.asyncapi:asyncapi-gradle-plugin:1.0.0-EAP.1 > com.asyncapi:asyncapi-plugin-core:1.0.0-EAP

Expected behavior

Be able to pull the plugin

Gradle plugin jackson annotations not working correctly

Hi,

I started using the library recently, both with and without the gradle plugin, but noticed that the gradle plugin has an issue.

When generating the docs via the gradle plugin, all jackson annotations are ignored.

For example: "enumValues" in the ServerVariable class gets serialised as "enumValues" instead of "enum". The "lamps-asyncapi.json" file that is used for the unit tests is wrong, as it also contains "enumValues" instead of "enum".

I assume this is because the annotation info is not carried over between modules.

Cannot load class AND Scanner SubTypesScanner was not configured

Hi,

I am facing a strange scenario. We would like to utilize the Async API and the asyncapi-maven-plugin in our maven project.

We have the example StreetligthsAsyncAPI.java from this github page under src/main/java in the package of com.example.asyncapi.

We have

<dependency>
	<groupId>com.asyncapi</groupId>
	<artifactId>asyncapi-core</artifactId>
	<version>1.0.0-EAP-1</version>
</dependency>

and

<build>
        <plugins>
            <plugin>
			    <groupId>com.asyncapi</groupId>
			    <artifactId>asyncapi-maven-plugin</artifactId>
		    	<version>1.0.0-EAP-1</version>
                <configuration>
                   	<packageNames>
                   		<packageName>com.example.asyncapi</packageName>
                   	</packageNames>
                   	<classPath>${project.basedir}/src/main/java</classPath>
            	</configuration>
			</plugin>
        </plugins>
</build>

And this (used command: mvn com.asyncapi:asyncapi-maven-plugin:generate) generates the following error:
[INFO] --- asyncapi-maven-plugin:1.0.0-EAP-1:generate (default-cli) @ asyncapi ---
[INFO] required parameters: checking...
[INFO] required parameters: ok
[INFO] generation strategy: checking...
[INFO] generation strategy: json
[INFO] schemas loader: looking for schemas
[INFO] [classes]: loading...
[INFO] [classes]: nothing to load
[INFO] [packages]: searching...
[INFO] [packages]: scanning 1 packages
[INFO] [packages]: scanning com.example.asyncapi
[classes]: can't load classes from com.example.asyncapi - Scanner SubTypesScanner was not configured

And if we try to set up the plugin configuration with className:

<build>
        <plugins>
            <plugin>
			    <groupId>com.asyncapi</groupId>
			    <artifactId>asyncapi-maven-plugin</artifactId>
		    	<version>1.0.0-EAP-1</version>
                <configuration>
                   	<classNames>
                   		<className>com.volvo.it.example.asyncapi.input.StreetlightsAsyncAPI</className>
                   	</classNames>
                   	<classPath>${project.basedir}/src/main/java</classPath>
            	</configuration>
			</plugin>
        </plugins>
</build>

And this (used command: mvn com.asyncapi:asyncapi-maven-plugin:generate) generates the following error:
[INFO] --- asyncapi-maven-plugin:1.0.0-EAP-1:generate (default-cli) @ asyncapi ---
[INFO] required parameters: checking...
[INFO] required parameters: ok
[INFO] generation strategy: checking...
[INFO] generation strategy: json
[INFO] schemas loader: looking for schemas
[INFO] [classes]: loading...
[INFO] [classes]: loading 1 classes
[INFO] [classes]: loading com.example.asyncapi.StreetlightsAsyncAPI
[classes]: can't load com.example.asyncapi.StreetlightsAsyncAPI - com.example.asyncapi.StreetlightsAsyncAPI

The same happens if we use <packageNames>com.volvo.it.example.asyncapi.input</packageNames> or <classNames>com.volvo.it.example.asyncapi.input.StreetlightsAsyncAPI</classNames>.

Can you please help us what we miss here?

Thank you and best regards,
Laszlo

Extend support for IntelliJ builds

Reason/Context

The plugin only works with older versions of IntelliJ. There are several requests for an update at JetBrains Marketplace.

Description

The latest build number has to be changed.

discriminator field

can we change the specs, so, it can follow the open API specs
instead of having discriminator as string

to follow swagger/openAPI 3 to have it like

discriminator:
propertyName: type

or is there anything in the APIs let me do this mapping

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.