Add configuration meta-data

Closes gh-144
This commit is contained in:
Stephane Nicoll
2015-10-05 12:03:36 +02:00
parent 08a9c17a38
commit bd61334182
3 changed files with 309 additions and 6 deletions

View File

@@ -24,6 +24,9 @@ package io.spring.initializr.metadata
*/
class InitializrConfiguration {
/**
* Environment options.
*/
final Env env = new Env()
void validate() {
@@ -84,17 +87,17 @@ class InitializrConfiguration {
}
/**
* Defines additional environment settings
* Defines additional environment settings.
*/
static class Env {
/**
* The url of the repository servicing distribution bundle
* The url of the repository servicing distribution bundle.
*/
String artifactRepository = 'https://repo.spring.io/release/'
/**
* The meta-data url of the Spring Boot project
* The meta-data url of the Spring Boot project.
*/
String springBootMetadataUrl = 'https://spring.io/project_metadata/spring-boot'
@@ -105,7 +108,7 @@ class InitializrConfiguration {
/**
* The list of invalid application names. If such name is chosen or generated,
* the {@link #fallbackApplicationName} should be used instead.
* the "fallbackApplicationName" should be used instead.
*/
List<String> invalidApplicationNames = [
'SpringApplication',
@@ -118,12 +121,14 @@ class InitializrConfiguration {
boolean forceSsl = true
/**
* The {@link BillOfMaterials} that are referenced in this instance.
* The "BillOfMaterials" that are referenced in this instance, identified by an
* arbitrary identifier that can be used in the dependencies definition.
*/
final Map<String, BillOfMaterials> boms = [:]
/**
* The {@link Repository} instances that are referenced in this instance.
* The "Repository" instances that are referenced in this instance, identified by
* an arbitrary identifier that can be used in the dependencies definition.
*/
final Map<String, Repository> repositories = [:]

View File

@@ -29,46 +29,93 @@ import org.springframework.boot.context.properties.ConfigurationProperties
@ConfigurationProperties(prefix = 'initializr')
class InitializrProperties extends InitializrConfiguration {
/**
* Dependencies, organized in groups (i.e. themes).
*/
@JsonIgnore
final List<DependencyGroup> dependencies = []
/**
* Available project types.
*/
@JsonIgnore
final List<Type> types = []
/**
* Available packaging types.
*/
@JsonIgnore
final List<DefaultMetadataElement> packagings = []
/**
* Available java versions.
*/
@JsonIgnore
final List<DefaultMetadataElement> javaVersions = []
/**
* Available programming languages.
*/
@JsonIgnore
final List<DefaultMetadataElement> languages = []
/**
* Available Spring Boot versions.
*/
@JsonIgnore
final List<DefaultMetadataElement> bootVersions = []
/**
* GroupId meta-data.
*/
@JsonIgnore
final SimpleElement groupId = new SimpleElement(value: 'com.example')
/**
* ArtifactId meta-data.
*/
@JsonIgnore
final SimpleElement artifactId = new SimpleElement()
/**
* Version meta-data.
*/
@JsonIgnore
final SimpleElement version = new SimpleElement(value: '0.0.1-SNAPSHOT')
/**
* Name meta-data.
*/
@JsonIgnore
final SimpleElement name = new SimpleElement(value: 'demo')
/**
* Description meta-data.
*/
@JsonIgnore
final SimpleElement description = new SimpleElement(value: 'Demo project for Spring Boot')
/**
* Package name meta-data.
*/
@JsonIgnore
final SimpleElement packageName = new SimpleElement()
static class SimpleElement {
/**
* Element title.
*/
String title
/**
* Element description.
*/
String description
/**
* Element default value.
*/
String value
void apply(TextCapability capability) {

View File

@@ -0,0 +1,251 @@
{
"groups": [
{
"name": "initializr",
"type": "io.spring.initializr.metadata.InitializrProperties",
"sourceType": "io.spring.initializr.metadata.InitializrProperties"
},
{
"name": "initializr.artifact-id",
"type": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"sourceType": "io.spring.initializr.metadata.InitializrProperties",
"sourceMethod": "getArtifactId()"
},
{
"name": "initializr.description",
"type": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"sourceType": "io.spring.initializr.metadata.InitializrProperties",
"sourceMethod": "getDescription()"
},
{
"name": "initializr.env",
"type": "io.spring.initializr.metadata.InitializrConfiguration$Env",
"sourceType": "io.spring.initializr.metadata.InitializrProperties",
"sourceMethod": "getEnv()"
},
{
"name": "initializr.group-id",
"type": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"sourceType": "io.spring.initializr.metadata.InitializrProperties",
"sourceMethod": "getGroupId()"
},
{
"name": "initializr.name",
"type": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"sourceType": "io.spring.initializr.metadata.InitializrProperties",
"sourceMethod": "getName()"
},
{
"name": "initializr.package-name",
"type": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"sourceType": "io.spring.initializr.metadata.InitializrProperties",
"sourceMethod": "getPackageName()"
},
{
"name": "initializr.version",
"type": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"sourceType": "io.spring.initializr.metadata.InitializrProperties",
"sourceMethod": "getVersion()"
}
],
"properties": [
{
"name": "initializr.artifact-id.description",
"type": "java.lang.String",
"description": "Element description.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.artifact-id.title",
"type": "java.lang.String",
"description": "Element title.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.artifact-id.value",
"type": "java.lang.String",
"description": "Element default value.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"defaultValue": "demo"
},
{
"name": "initializr.boot-versions",
"type": "java.util.List<io.spring.initializr.metadata.DefaultMetadataElement>",
"description": "Available Spring Boot versions.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties"
},
{
"name": "initializr.dependencies",
"type": "java.util.List<io.spring.initializr.metadata.DependencyGroup>",
"description": "Dependencies, organized in groups (i.e. themes).",
"sourceType": "io.spring.initializr.metadata.InitializrProperties"
},
{
"name": "initializr.description.description",
"type": "java.lang.String",
"description": "Element description.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.description.title",
"type": "java.lang.String",
"description": "Element title.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.description.value",
"type": "java.lang.String",
"description": "Element default value.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"defaultValue": "Demo project for Spring Boot"
},
{
"name": "initializr.env.artifact-repository",
"type": "java.lang.String",
"description": "The url of the repository servicing distribution bundle.",
"sourceType": "io.spring.initializr.metadata.InitializrConfiguration$Env",
"defaultValue": "https://repo.spring.io/release/"
},
{
"name": "initializr.env.boms",
"type": "java.util.Map<java.lang.String,io.spring.initializr.metadata.BillOfMaterials>",
"description": "The \"BillOfMaterials\" that are referenced in this instance, identified by an\n arbitrary identifier that can be used in the dependencies definition.",
"sourceType": "io.spring.initializr.metadata.InitializrConfiguration$Env"
},
{
"name": "initializr.env.fallback-application-name",
"type": "java.lang.String",
"description": "The application name to use if none could be generated.",
"sourceType": "io.spring.initializr.metadata.InitializrConfiguration$Env",
"defaultValue": "Application"
},
{
"name": "initializr.env.force-ssl",
"type": "java.lang.Boolean",
"description": "Force SSL support. When enabled, any access using http generate https links.",
"sourceType": "io.spring.initializr.metadata.InitializrConfiguration$Env",
"defaultValue": true
},
{
"name": "initializr.env.invalid-application-names",
"type": "java.util.List<java.lang.String>",
"description": "The list of invalid application names. If such name is chosen or generated,\n the \"fallbackApplicationName\" should be used instead.",
"sourceType": "io.spring.initializr.metadata.InitializrConfiguration$Env",
"defaultValue": ["SpringApplication", "SpringBootApplication"]
},
{
"name": "initializr.env.repositories",
"type": "java.util.Map<java.lang.String,io.spring.initializr.metadata.Repository>",
"description": "The \"Repository\" instances that are referenced in this instance, identified by\n an arbitrary identifier that can be used in the dependencies definition.",
"sourceType": "io.spring.initializr.metadata.InitializrConfiguration$Env"
},
{
"name": "initializr.env.spring-boot-metadata-url",
"type": "java.lang.String",
"description": "The meta-data url of the Spring Boot project.",
"sourceType": "io.spring.initializr.metadata.InitializrConfiguration$Env",
"defaultValue": "https://spring.io/project_metadata/spring-boot"
},
{
"name": "initializr.group-id.description",
"type": "java.lang.String",
"description": "Element description.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.group-id.title",
"type": "java.lang.String",
"description": "Element title.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.group-id.value",
"type": "java.lang.String",
"description": "Element default value.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"defaultValue": "com.example"
},
{
"name": "initializr.java-versions",
"type": "java.util.List<io.spring.initializr.metadata.DefaultMetadataElement>",
"description": "Available java versions.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties"
},
{
"name": "initializr.languages",
"type": "java.util.List<io.spring.initializr.metadata.DefaultMetadataElement>",
"description": "Available programming languages.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties"
},
{
"name": "initializr.name.description",
"type": "java.lang.String",
"description": "Element description.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.name.title",
"type": "java.lang.String",
"description": "Element title.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.name.value",
"type": "java.lang.String",
"description": "Element default value.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"defaultValue": "demo"
},
{
"name": "initializr.package-name.description",
"type": "java.lang.String",
"description": "Element description.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.package-name.title",
"type": "java.lang.String",
"description": "Element title.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.package-name.value",
"type": "java.lang.String",
"description": "Element default value.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"defaultValue": "com.example"
},
{
"name": "initializr.packagings",
"type": "java.util.List<io.spring.initializr.metadata.DefaultMetadataElement>",
"description": "Available packaging types.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties"
},
{
"name": "initializr.types",
"type": "java.util.List<io.spring.initializr.metadata.Type>",
"description": "Available project types.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties"
},
{
"name": "initializr.version.description",
"type": "java.lang.String",
"description": "Element description.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.version.title",
"type": "java.lang.String",
"description": "Element title.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement"
},
{
"name": "initializr.version.value",
"type": "java.lang.String",
"description": "Element default value.",
"sourceType": "io.spring.initializr.metadata.InitializrProperties$SimpleElement",
"defaultValue": "0.0.1-SNAPSHOT"
}
],
"hints": []
}