Fix type id

This commit improves the structure of the type id as it may be used by
third party clients. The id now defines the build system and the nature
of the project.

Because STS hardcodes those IDs, a new (deprecated) property on type
has been introduced to keep track of them. When serving the legacy HTML
page that STS parses, those ids are used instead.

Fixes gh-39
This commit is contained in:
Stephane Nicoll
2014-10-29 18:09:47 +01:00
parent 4ebc50dda3
commit 1136d76b1b
9 changed files with 51 additions and 26 deletions

View File

@@ -117,19 +117,23 @@ initializr:
description: Support for CRaSH
types:
- name: Maven POM
id: pom.xml
id: maven-build
sts-id: pom.xml
default: false
action: /pom.xml
- name: Maven Project
id: starter.zip
id: maven-project
sts-id: starter.zip
default: true
action: /starter.zip
- name: Gradle Config
id: build.gradle
id: gradle-build
sts-id: build.gradle
default: false
action: /build.gradle
- name: Gradle Project
id: gradle.zip
id: gradle-project
sts-id: gradle.zip
default: false
action: /starter.zip
packagings:

View File

@@ -242,6 +242,10 @@ class InitializrMetadata {
static class Type extends DefaultIdentifiableElement {
@JsonIgnore
@Deprecated
String stsId
String action
}

View File

@@ -50,7 +50,7 @@
<label>Type:</label>
<% types.each { %>
<label class="radio">
<input type="radio" name="type" value="${it.id}"${it.default==true ? ' checked="true"' : ''} onclick="javascript:this.form.action='${it.action}'"/>
<input type="radio" name="type" value="${it.stsId}"${it.default==true ? ' checked="true"' : ''} onclick="javascript:this.form.action='${it.action}'"/>
${it.name}
</label><% } %>
<label>Packaging:</label>

View File

@@ -96,13 +96,7 @@ abstract class AbstractInitializerControllerFormIntegrationTests extends Abstrac
}
@Test
void createSimpleGradleProject() {
def page = home()
page.type = 'gradle.zip'
page.dependencies << 'data-jpa'
def projectAssert = zipProjectAssert(page.generateProject())
projectAssert.isGradleProject().isJavaProject().hasStaticAndTemplatesResources(false)
}
abstract void createSimpleGradleProject()
@Test
void createWarProject() {
@@ -116,6 +110,14 @@ abstract class AbstractInitializerControllerFormIntegrationTests extends Abstrac
.hasSpringBootStarterDependency('test')
}
void createSimpleGradleProject(String projectType) {
def page = home()
page.type = projectType
page.dependencies << 'data-jpa'
def projectAssert = zipProjectAssert(page.generateProject())
projectAssert.isGradleProject().isJavaProject().hasStaticAndTemplatesResources(false)
}
HomePage home() {
def request = new WebRequest(new URL("http://localhost${homeContext()}"), 'text/html')
def home = webClient.getPage(request)

View File

@@ -32,6 +32,11 @@ import org.springframework.context.annotation.Configuration
@SpringApplicationConfiguration(classes = LegacyStsConfig.class)
class LegacyStsControllerFormIntegrationTests extends AbstractInitializerControllerFormIntegrationTests {
@Override
void createSimpleGradleProject() {
createSimpleGradleProject('gradle.zip')
}
@Override
protected String homeContext() {
'/sts'

View File

@@ -27,6 +27,12 @@ import io.spring.initializr.web.support.HomePage
*/
class MainControllerFormIntegrationTests extends AbstractInitializerControllerFormIntegrationTests {
@Override
void createSimpleGradleProject() {
createSimpleGradleProject('gradle-project')
}
@Override
protected String homeContext() {
'/'

View File

@@ -29,19 +29,23 @@ initializr:
version: 2.1.0
types:
- name: Maven POM
id: pom.xml
id: maven-build
sts-id: pom.xml
default: false
action: /pom.xml
- name: Maven Project
id: starter.zip
id: maven-project
sts-id: starter.zip
default: true
action: /starter.zip
- name: Gradle Config
id: build.gradle
id: gradle-build
sts-id: build.gradle
default: false
action: /build.gradle
- name: Gradle Project
id: gradle.zip
id: gradle-project
sts-id: gradle.zip
default: false
action: /starter.zip
packagings:

View File

@@ -32,25 +32,25 @@
], "types": [
{
"name": "Maven POM",
"id": "pom.xml",
"id": "maven-build",
"action": "/pom.xml",
"default": false
},
{
"name": "Maven Project",
"id": "starter.zip",
"id": "maven-project",
"action": "/starter.zip",
"default": true
},
{
"name": "Gradle Config",
"id": "build.gradle",
"id": "gradle-build",
"action": "/build.gradle",
"default": false
},
{
"name": "Gradle Project",
"id": "gradle.zip",
"id": "gradle-project",
"action": "/starter.zip",
"default": false
}
@@ -115,7 +115,7 @@
"name": "demo",
"description": "Demo project for Spring Boot",
"packageName": "demo",
"type": "starter.zip",
"type": "maven-project",
"packaging": "jar",
"javaVersion": "1.7",
"language": "java",

View File

@@ -33,25 +33,25 @@
], "types": [
{
"name": "Maven POM",
"id": "pom.xml",
"id": "maven-build",
"action": "/pom.xml",
"default": false
},
{
"name": "Maven Project",
"id": "starter.zip",
"id": "maven-project",
"action": "/starter.zip",
"default": true
},
{
"name": "Gradle Config",
"id": "build.gradle",
"id": "gradle-build",
"action": "/build.gradle",
"default": false
},
{
"name": "Gradle Project",
"id": "gradle.zip",
"id": "gradle-project",
"action": "/starter.zip",
"default": false
}
@@ -116,7 +116,7 @@
"name": "demo",
"description": "Demo project for Spring Boot",
"packageName": "demo",
"type": "starter.zip",
"type": "maven-project",
"packaging": "jar",
"javaVersion": "1.7",
"language": "java",