vaadin / spring

Spring integration for Vaadin
https://vaadin.com/start
174 stars 101 forks source link

extend spring-configuration-metadata.json with all supported parameter #1036

Open dominik42 opened 2 years ago

dominik42 commented 2 years ago

The target artifact for this repository (vaadin-spring-12.43.jar) contains the META-INF/spring-configuration-metadata.json. This file contains the properties which are available for the spring boot config file (application.properties or application.yml). All major IDEs use such files to provide context assistance for Spring Boot config parameter.

This file should therfore contain ALL properties they are available to use. Currently, only a subset are included. After extracting the file from the jar due to I can't find the file within the source repo, only the following properties are defined:

{
  "groups": [
    {
      "name": "vaadin",
      "type": "com.vaadin.flow.spring.VaadinConfigurationProperties",
      "sourceType": "com.vaadin.flow.spring.VaadinConfigurationProperties"
    }
  ],
  "properties": [
    {
      "name": "vaadin.async-supported",
      "type": "java.lang.Boolean",
      "description": "Whether asynchronous operations are supported.",
      "sourceType": "com.vaadin.flow.spring.VaadinConfigurationProperties",
      "defaultValue": true
    },
    {
      "name": "vaadin.blacklisted-packages",
      "type": "java.util.List<java.lang.String>",
      "description": "Custom package blacklist that should be skipped in scanning.",
      "sourceType": "com.vaadin.flow.spring.VaadinConfigurationProperties"
    },
    {
      "name": "vaadin.pnpm-enabled",
      "type": "java.lang.Boolean",
      "description": "Whetcher pnpm support is enabled",
      "sourceType": "com.vaadin.flow.spring.VaadinConfigurationProperties",
      "defaultValue": false
    },
    {
      "name": "vaadin.url-mapping",
      "type": "java.lang.String",
      "description": "Base URL mapping of the Vaadin servlet.",
      "sourceType": "com.vaadin.flow.spring.VaadinConfigurationProperties",
      "defaultValue": "\/*"
    },
    {
      "name": "vaadin.whitelisted-packages",
      "type": "java.util.List<java.lang.String>",
      "description": "Custom package whitelist that should be scanned.",
      "sourceType": "com.vaadin.flow.spring.VaadinConfigurationProperties"
    }
  ],
  "hints": []
}

Also, the mentioned VaadinConfigurationProperties contains only the java class members mentioned as properties.

But one can declare and use additional properties not mentioned here, e.g.

vaadin:
  compatibilityMode: false
  devmode:
    transpile: true
  i18n:
    provider: ...

Maybe there are a lot more but nobody knows... Please add all available properties to the META-INF/spring-configuration-metadata.json. And BTW: where is this file located within the source repositories ?

jcgueriaud1 commented 2 years ago

I think it's a duplicate of this ticket: https://github.com/vaadin/spring/issues/689 You also have some explanation here: https://github.com/vaadin/spring/pull/635#issuecomment-670450234