Show version requirements for disabled starters

This commit writes the version range information in human readable
format and adds it to the starter list when starters are disabled.

Closes gh-293
This commit is contained in:
Brian Clozel
2016-11-25 14:27:47 +01:00
committed by Stephane Nicoll
parent 26dd9eb082
commit 8ee8d72e62
6 changed files with 44 additions and 8 deletions

View File

@@ -16,6 +16,7 @@
package io.spring.initializr.metadata
import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonInclude
import groovy.transform.AutoClone
import groovy.transform.AutoCloneStyle
@@ -81,6 +82,9 @@ class Dependency extends MetadataElement {
String versionRange
@JsonIgnore
String versionRequirement
String bom
String repository
@@ -157,7 +161,8 @@ class Dependency extends MetadataElement {
}
if (versionRange) {
try {
VersionRange.parse(versionRange)
def range = VersionRange.parse(versionRange)
versionRequirement = range.toString()
} catch (InvalidVersionException ex) {
throw new InvalidInitializrMetadataException("Invalid version range '$versionRange' for " +
"dependency with id '$id'")
@@ -183,6 +188,7 @@ class Dependency extends MetadataElement {
dependency.groupId = mapping.groupId ? mapping.groupId : this.groupId
dependency.artifactId = mapping.artifactId ? mapping.artifactId : this.artifactId
dependency.version = mapping.version ? mapping.version : this.version
dependency.versionRequirement = mapping.range.toString()
dependency.mappings = null
return dependency
}

View File

@@ -38,7 +38,6 @@ import org.springframework.util.Assert
* @author Stephane Nicoll
* @since 1.0
*/
@ToString
@EqualsAndHashCode
class VersionRange {
@@ -80,6 +79,18 @@ class VersionRange {
return true
}
@Override
String toString() {
StringBuffer sb = new StringBuffer()
if (lowerVersion) {
sb.append("${lowerInclusive ? '>=' : '>'}${lowerVersion}")
}
if (higherVersion) {
sb.append(" and ${higherInclusive ? '<=' : '<'}${higherVersion}")
}
return sb.toString()
}
/**
* Parse the string representation of a {@link VersionRange}. Throws an
* {@link InvalidVersionException} if the range could not be parsed.

View File

@@ -155,6 +155,16 @@ class DependencyTests {
dependency.resolve()
}
@Test
void resolveVersionRequirement() {
def dependency = new Dependency(id: 'web')
dependency.mappings << new Dependency.Mapping(
versionRange: '[1.1.0.RELEASE, 1.2.0.RELEASE)', version: '0.1.0.RELEASE')
dependency.resolve()
def resolved = dependency.resolve(Version.parse('1.1.5.RELEASE'))
assertEquals ">=1.1.0.RELEASE and <1.2.0.RELEASE", resolved.versionRequirement
}
@Test
void resolveMatchingVersionMapping() {
def dependency = new Dependency(id: 'web', description: 'A web dependency', version: '0.3.0.RELEASE',