polishing

This commit is contained in:
Stephane Nicoll
2014-09-02 07:30:54 +02:00
parent 2063d013ac
commit 2f9a435334
26 changed files with 257 additions and 269 deletions

View File

@@ -16,8 +16,7 @@
package io.spring.initializr
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import groovy.util.logging.Slf4j
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.cache.annotation.Cacheable
@@ -29,10 +28,9 @@ import org.springframework.cache.annotation.Cacheable
* @author Stephane Nicoll
* @since 1.0
*/
@Slf4j
class DefaultInitializrMetadataProvider implements InitializrMetadataProvider {
private static final Logger logger = LoggerFactory.getLogger(DefaultInitializrMetadataProvider)
private final InitializrMetadata metadata
@Autowired
@@ -43,8 +41,8 @@ class DefaultInitializrMetadataProvider implements InitializrMetadataProvider {
@Override
@Cacheable(value = 'initializr', key = "'metadata'")
InitializrMetadata get() {
List<InitializrMetadata.BootVersion> bootVersions = fetchBootVersions()
if (bootVersions != null && !bootVersions.isEmpty()) {
def bootVersions = fetchBootVersions()
if (bootVersions) {
metadata.merge(bootVersions)
}
metadata
@@ -52,12 +50,12 @@ class DefaultInitializrMetadataProvider implements InitializrMetadataProvider {
protected List<InitializrMetadata.BootVersion> fetchBootVersions() {
def url = metadata.env.springBootMetadataUrl
if (url != null) {
if (url) {
try {
logger.info('Fetching boot metadata from '+ url)
log.info('Fetching boot metadata from '+ url)
return new SpringBootMetadataReader(url).getBootVersions()
} catch (Exception e) {
logger.warn('Failed to fetch spring boot metadata', e)
log.warn('Failed to fetch spring boot metadata', e)
}
}
null

View File

@@ -46,7 +46,7 @@ class InitializrAutoConfiguration {
@Bean
@ConditionalOnMissingBean(ProjectGenerator)
ProjectGenerator projectGenerator() {
ProjectGenerator generator = new ProjectGenerator()
def generator = new ProjectGenerator()
generator.listeners << metricsListener()
generator
}
@@ -65,17 +65,17 @@ class InitializrAutoConfiguration {
@Bean
@ConditionalOnMissingBean(CacheManager)
CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager()
def cacheManager = new SimpleCacheManager()
cacheManager.caches = Arrays.asList(
createConcurrentMapCache(600, 'initializr'))
cacheManager
}
private static ConcurrentMapCache createConcurrentMapCache(Long timeToLive, String name) {
CacheBuilder<Object, Object> cacheBuilder =
CacheBuilder.newBuilder().expireAfterWrite(timeToLive, TimeUnit.SECONDS)
def cacheBuilder = CacheBuilder.newBuilder()
.expireAfterWrite(timeToLive, TimeUnit.SECONDS)
ConcurrentMap<Object, Object> map = cacheBuilder.build().asMap()
def map = cacheBuilder.build().asMap()
new ConcurrentMapCache(name, map, false)
}

View File

@@ -21,8 +21,7 @@ import javax.annotation.PostConstruct
import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonInclude
import groovy.transform.ToString
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import groovy.util.logging.Slf4j
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.util.StringUtils
@@ -44,21 +43,20 @@ import org.springframework.util.StringUtils
* @since 1.0
*/
@ConfigurationProperties(prefix = 'initializr', ignoreUnknownFields = false)
@Slf4j
class InitializrMetadata {
private static final Logger logger = LoggerFactory.getLogger(InitializrMetadata)
final List<DependencyGroup> dependencies = []
final List<DependencyGroup> dependencies = new ArrayList<DependencyGroup>()
final List<Type> types = []
final List<Type> types = new ArrayList<Type>()
final List<Packaging> packagings = []
final List<Packaging> packagings = new ArrayList<Packaging>()
final List<JavaVersion> javaVersions = []
final List<JavaVersion> javaVersions = new ArrayList<JavaVersion>()
final List<Language> languages = []
final List<Language> languages = new ArrayList<Language>()
final List<BootVersion> bootVersions = new ArrayList<BootVersion>()
final List<BootVersion> bootVersions = []
final Defaults defaults = new Defaults()
@@ -66,14 +64,14 @@ class InitializrMetadata {
final Env env = new Env()
@JsonIgnore
final Map<String, Dependency> indexedDependencies = new HashMap<String, Dependency>()
private final Map<String, Dependency> indexedDependencies = [:]
/**
* Return the {@link Dependency} with the specified id or {@code null} if
* no such dependency exists.
*/
Dependency getDependency(String id) {
indexedDependencies.get(id)
indexedDependencies[id]
}
/**
@@ -101,7 +99,7 @@ class InitializrMetadata {
* Merge this instance with the specified content.
*/
void merge(List<BootVersion> bootVersions) {
if (bootVersions != null) {
if (bootVersions) {
synchronized (this.bootVersions) {
this.bootVersions.clear()
this.bootVersions.addAll(bootVersions)
@@ -116,7 +114,7 @@ class InitializrMetadata {
@PostConstruct
void validate() {
for (DependencyGroup group : dependencies) {
for (Dependency dependency : group.getContent()) {
group.content.each { dependency ->
validateDependency(dependency)
indexDependency(dependency.id, dependency)
for (String alias : dependency.aliases) {
@@ -138,16 +136,16 @@ class InitializrMetadata {
}
private void indexDependency(String id, Dependency dependency) {
Dependency existing = indexedDependencies.get(id)
if (existing != null) {
def existing = indexedDependencies[id]
if (existing) {
throw new IllegalArgumentException('Could not register ' + dependency +
': another dependency has also the "' + id + '" id ' + existing)
}
indexedDependencies.put(id, dependency)
indexedDependencies[id] = dependency
}
static void validateDependency(Dependency dependency) {
String id = dependency.getId()
def id = dependency.id
if (id == null) {
if (!dependency.hasCoordinates()) {
throw new InvalidInitializrMetadataException('Invalid dependency, ' +
@@ -156,7 +154,7 @@ class InitializrMetadata {
dependency.generateId()
} else if (!dependency.hasCoordinates()) {
// Let's build the coordinates from the id
StringTokenizer st = new StringTokenizer(id, ':')
def st = new StringTokenizer(id, ':')
if (st.countTokens() == 1) { // assume spring-boot-starter
dependency.asSpringBootStarter(id)
} else if (st.countTokens() == 2 || st.countTokens() == 3) {
@@ -178,7 +176,7 @@ class InitializrMetadata {
return element.id
}
}
logger.warn('No default found amongst' + elements)
log.warn('No default found amongst' + elements)
return (elements.isEmpty() ? null : elements.get(0).id)
}
@@ -187,7 +185,7 @@ class InitializrMetadata {
String name
final List<Dependency> content = new ArrayList<Dependency>()
final List<Dependency> content = []
}
@@ -214,7 +212,7 @@ class InitializrMetadata {
* and {@code artifactId}.
*/
boolean hasCoordinates() {
groupId != null && artifactId != null
groupId && artifactId
}
/**
@@ -325,7 +323,7 @@ class InitializrMetadata {
String id
String getName() {
(name != null ? name : id)
(name ?: id)
}
}
}

View File

@@ -16,16 +16,16 @@
package io.spring.initializr
import groovy.transform.InheritConstructors
/**
* Thrown when the configuration defines invalid metadata.
*
* @author Stephane Nicoll
* @since 1.0
*/
@InheritConstructors
class InvalidInitializrMetadataException extends RuntimeException {
InvalidInitializrMetadataException(String s) {
super(s)
}
}

View File

@@ -16,8 +16,7 @@
package io.spring.initializr
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import groovy.util.logging.Slf4j
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
@@ -32,26 +31,25 @@ import static io.spring.initializr.support.GroovyTemplate.template
* @author Stephane Nicoll
* @since 1.0
*/
@Slf4j
class ProjectGenerator {
private static final Logger logger = LoggerFactory.getLogger(ProjectGenerator)
@Autowired
InitializrMetadata metadata
@Value('${TMPDIR:.}')
String tmpdir
final Set<ProjectGenerationListener> listeners = new LinkedHashSet<>()
final Set<ProjectGenerationListener> listeners = []
private transient Map<String, List<File>> temporaryFiles = new HashMap<>()
private transient Map<String, List<File>> temporaryFiles = [:]
/**
* Generate a Maven pom for the specified {@link ProjectRequest}.
*/
byte[] generateMavenPom(ProjectRequest request) {
Map model = initializeModel(request)
byte[] content = doGenerateMavenPom(model)
def model = initializeModel(request)
def content = doGenerateMavenPom(model)
invokeListeners(request)
content
}
@@ -60,8 +58,8 @@ class ProjectGenerator {
* Generate a Gradle build file for the specified {@link ProjectRequest}.
*/
byte[] generateGradleBuild(ProjectRequest request) {
Map model = initializeModel(request)
byte[] content = doGenerateGradleBuild(model)
def model = initializeModel(request)
def content = doGenerateGradleBuild(model)
invokeListeners(request)
content
}
@@ -73,22 +71,22 @@ class ProjectGenerator {
File generateProjectStructure(ProjectRequest request) {
def model = initializeModel(request)
File dir = File.createTempFile('tmp', '', new File(tmpdir))
def dir = File.createTempFile('tmp', '', new File(tmpdir))
addTempFile(dir.name, dir)
dir.delete()
dir.mkdirs()
if (request.type.contains('gradle')) {
String gradle = new String(doGenerateGradleBuild(model))
def gradle = new String(doGenerateGradleBuild(model))
new File(dir, 'build.gradle').write(gradle)
} else {
String pom = new String(doGenerateMavenPom(model))
def pom = new String(doGenerateMavenPom(model))
new File(dir, 'pom.xml').write(pom)
}
String language = request.language
def language = request.language
File src = new File(new File(dir, 'src/main/' + language), request.packageName.replace('.', '/'))
def src = new File(new File(dir, 'src/main/' + language), request.packageName.replace('.', '/'))
src.mkdirs()
write(src, 'Application.' + language, model)
@@ -96,7 +94,7 @@ class ProjectGenerator {
write(src, 'ServletInitializer.' + language, model)
}
File test = new File(new File(dir, 'src/test/' + language), request.packageName.replace('.', '/'))
def test = new File(new File(dir, 'src/test/' + language), request.packageName.replace('.', '/'))
test.mkdirs()
if (request.hasWebFacet()) {
model.testAnnotations = '@WebAppConfiguration\n'
@@ -107,7 +105,7 @@ class ProjectGenerator {
}
write(test, 'ApplicationTests.' + language, model)
File resources = new File(dir, 'src/main/resources')
def resources = new File(dir, 'src/main/resources')
resources.mkdirs()
new File(resources, 'application.properties').write('')
@@ -125,7 +123,7 @@ class ProjectGenerator {
* directory and extension
*/
File createDistributionFile(File dir, String extension) {
File download = new File(tmpdir, dir.name + extension)
def download = new File(tmpdir, dir.name + extension)
addTempFile(dir.name, download)
download
}
@@ -137,7 +135,7 @@ class ProjectGenerator {
*/
void cleanTempFiles(File dir) {
def tempFiles = temporaryFiles.remove(dir.name)
if (tempFiles != null) {
if (tempFiles) {
tempFiles.each { File file ->
if (file.directory) {
file.deleteDir()
@@ -160,7 +158,7 @@ class ProjectGenerator {
request.resolve(metadata)
// request resolved so we can log what has been requested
logger.info('Processing request{type=' + request.type + ', ' +
log.info('Processing request{type=' + request.type + ', ' +
'dependencies=' + request.dependencies.collect {it.id}+ '}')
request.properties.each { model[it.key] = it.value }
@@ -177,18 +175,18 @@ class ProjectGenerator {
}
def write(File src, String name, def model) {
String tmpl = name.endsWith('.groovy') ? name + '.tmpl' : name
def tmpl = name.endsWith('.groovy') ? name + '.tmpl' : name
def body = template tmpl, model
new File(src, name).write(body)
}
private void addTempFile(String group, File file) {
def content = temporaryFiles.get(group)
def content = temporaryFiles[group]
if (content == null) {
content = new ArrayList<File>()
temporaryFiles.put(group, content)
content = []
temporaryFiles[group] = content
}
content.add(file)
content << file
}
}

View File

@@ -16,8 +16,7 @@
package io.spring.initializr
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import groovy.util.logging.Slf4j
/**
* A request to generate a project.
@@ -26,10 +25,9 @@ import org.slf4j.LoggerFactory
* @author Stephane Nicoll
* @since 1.0
*/
@Slf4j
class ProjectRequest {
private static final Logger logger = LoggerFactory.getLogger(ProjectRequest.class)
def style = []
String name
@@ -51,19 +49,17 @@ class ProjectRequest {
* Resolve this instance against the specified {@link InitializrMetadata}
*/
void resolve(InitializrMetadata metadata) {
if (style == null || style.size() == 0) {
style = []
}
style = style ?: []
if (!style.class.isArray() && !(style instanceof Collection)) {
style = [style]
}
dependencies = style.collect {
InitializrMetadata.Dependency dependency = metadata.getDependency(it)
def dependency = metadata.getDependency(it)
if (dependency == null) {
if (it.contains(':')) {
throw new IllegalArgumentException('Unknown dependency ' + it + ' check project metadata')
}
logger.warn('No known dependency for style ' + it + ' assuming spring-boot-starter')
log.warn('No known dependency for style ' + it + ' assuming spring-boot-starter')
dependency = new InitializrMetadata.Dependency()
dependency.asSpringBootStarter(it)
}
@@ -98,7 +94,7 @@ class ProjectRequest {
* dependency
*/
protected addDefaultDependency() {
InitializrMetadata.Dependency root = new InitializrMetadata.Dependency()
def root = new InitializrMetadata.Dependency()
root.id = 'root_starter'
root.asSpringBootStarter('')
dependencies << root

View File

@@ -36,8 +36,8 @@ class SpringBootMetadataReader {
* Parse the content of the metadata at the specified url
*/
SpringBootMetadataReader(String url) {
RestTemplate restTemplate = new RestTemplate()
String content = restTemplate.getForObject(url, String.class)
def restTemplate = new RestTemplate()
def content = restTemplate.getForObject(url, String.class)
this.content = new JsonSlurper().parseText(content)
}
@@ -46,9 +46,9 @@ class SpringBootMetadataReader {
*/
List<InitializrMetadata.BootVersion> getBootVersions() {
content.projectReleases.collect {
InitializrMetadata.BootVersion version = new InitializrMetadata.BootVersion()
def version = new InitializrMetadata.BootVersion()
version.id = it.version
String name = it.versionDisplayName
def name = it.versionDisplayName
version.name = (it.snapshot ? name + ' (SNAPSHOT)' : name)
version.setDefault(it.current)
version

View File

@@ -37,8 +37,8 @@ class GroovyTemplate {
static String template(TemplateEngine engine, String name, Map<String, ?> model)
throws IOException, CompilationFailedException, ClassNotFoundException {
Writable writable = getTemplate(engine, name).make(model)
StringWriter result = new StringWriter()
def writable = getTemplate(engine, name).make(model)
def result = new StringWriter()
writable.writeTo(result)
result.toString()
}
@@ -46,14 +46,14 @@ class GroovyTemplate {
static Template getTemplate(TemplateEngine engine, String name)
throws CompilationFailedException, ClassNotFoundException, IOException {
File file = new File("templates", name)
def file = new File("templates", name)
if (file.exists()) {
return engine.createTemplate(file)
}
ClassLoader classLoader = GroovyTemplate.class.getClassLoader()
URL resource = classLoader.getResource("templates/" + name)
if (resource != null) {
def classLoader = GroovyTemplate.class.classLoader
def resource = classLoader.getResource("templates/" + name)
if (resource) {
return engine.createTemplate(resource)
}

View File

@@ -16,11 +16,10 @@
package io.spring.initializr.web
import groovy.util.logging.Slf4j
import io.spring.initializr.InitializrMetadata
import io.spring.initializr.ProjectGenerator
import io.spring.initializr.ProjectRequest
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpHeaders
@@ -41,16 +40,15 @@ import org.springframework.web.bind.annotation.ResponseBody
* @since 1.0
*/
@Controller
@Slf4j
class MainController extends AbstractInitializrController {
private static final Logger logger = LoggerFactory.getLogger(MainController.class)
@Autowired
private ProjectGenerator projectGenerator
@ModelAttribute
ProjectRequest projectRequest() {
ProjectRequest request = new ProjectRequest()
def request = new ProjectRequest()
metadataProvider.get().initializeProjectRequest(request)
request
}
@@ -96,12 +94,12 @@ class MainController extends AbstractInitializrController {
ResponseEntity<byte[]> springZip(ProjectRequest request) {
def dir = projectGenerator.generateProjectStructure(request)
File download = projectGenerator.createDistributionFile(dir, '.zip')
def download = projectGenerator.createDistributionFile(dir, '.zip')
new AntBuilder().zip(destfile: download) {
zipfileset(dir: dir, includes: '**')
}
logger.info("Uploading: ${download} (${download.bytes.length} bytes)")
log.info("Uploading: ${download} (${download.bytes.length} bytes)")
def result = new ResponseEntity<byte[]>(download.bytes,
['Content-Type': 'application/zip'] as HttpHeaders, HttpStatus.OK)
@@ -114,12 +112,12 @@ class MainController extends AbstractInitializrController {
ResponseEntity<byte[]> springTgz(ProjectRequest request) {
def dir = projectGenerator.generateProjectStructure(request)
File download = projectGenerator.createDistributionFile(dir, '.tgz')
def download = projectGenerator.createDistributionFile(dir, '.tgz')
new AntBuilder().tar(destfile: download, compression: 'gzip') {
zipfileset(dir:dir, includes:'**')
}
logger.info("Uploading: ${download} (${download.bytes.length} bytes)")
log.info("Uploading: ${download} (${download.bytes.length} bytes)")
def result = new ResponseEntity<byte[]>(download.bytes,
['Content-Type':'application/x-compress'] as HttpHeaders, HttpStatus.OK)

View File

@@ -28,16 +28,16 @@ class DefaultInitializrMetadataProviderTests {
@Test
void bootVersionsAreReplaced() {
InitializrMetadata metadata = new InitializrMetadataBuilder()
def metadata = new InitializrMetadataBuilder()
.addBootVersion('0.0.9.RELEASE', true).addBootVersion('0.0.8.RELEASE', false).validateAndGet()
assertEquals '0.0.9.RELEASE', metadata.defaults.bootVersion
DefaultInitializrMetadataProvider provider = new DefaultInitializrMetadataProvider(metadata)
def provider = new DefaultInitializrMetadataProvider(metadata)
InitializrMetadata updatedMetadata = provider.get()
def updatedMetadata = provider.get()
assertNotNull updatedMetadata.bootVersions
assertFalse 'Boot versions must be set', updatedMetadata.bootVersions.isEmpty()
String defaultVersion = null
def defaultVersion = null
updatedMetadata.bootVersions.each {
assertFalse '0.0.9.RELEASE should have been removed', '0.0.9.RELEASE'.equals(it.id)
assertFalse '0.0.8.RELEASE should have been removed', '0.0.8.RELEASE'.equals(it.id)

View File

@@ -35,7 +35,7 @@ class InitializrMetadataTests {
@Test
void setCoordinatesFromId() {
InitializrMetadata.Dependency dependency = createDependency('org.foo:bar:1.2.3')
def dependency = createDependency('org.foo:bar:1.2.3')
metadata.validateDependency(dependency)
assertEquals 'org.foo', dependency.groupId
assertEquals 'bar', dependency.artifactId
@@ -45,7 +45,7 @@ class InitializrMetadataTests {
@Test
void setCoordinatesFromIdNoVersion() {
InitializrMetadata.Dependency dependency = createDependency('org.foo:bar')
def dependency = createDependency('org.foo:bar')
metadata.validateDependency(dependency)
assertEquals 'org.foo', dependency.groupId
assertEquals 'bar', dependency.artifactId
@@ -55,7 +55,7 @@ class InitializrMetadataTests {
@Test
void setIdFromCoordinates() {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.groupId = 'org.foo'
dependency.artifactId = 'bar'
dependency.version = '1.0'
@@ -65,7 +65,7 @@ class InitializrMetadataTests {
@Test
void setIdFromCoordinatesNoVersion() {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.groupId = 'org.foo'
dependency.artifactId = 'bar'
metadata.validateDependency(dependency)
@@ -74,7 +74,7 @@ class InitializrMetadataTests {
@Test
void setIdFromSimpleName() {
InitializrMetadata.Dependency dependency = createDependency('web')
def dependency = createDependency('web')
metadata.validateDependency(dependency)
assertEquals 'org.springframework.boot', dependency.groupId
@@ -91,7 +91,7 @@ class InitializrMetadataTests {
@Test
void invalidIdFormatTooManyColons() {
InitializrMetadata.Dependency dependency = createDependency('org.foo:bar:1.0:test:external')
def dependency = createDependency('org.foo:bar:1.0:test:external')
thrown.expect(InvalidInitializrMetadataException)
metadata.validateDependency(dependency)
@@ -99,7 +99,7 @@ class InitializrMetadataTests {
@Test
void generateIdWithNoGroupId() {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.artifactId = 'bar'
thrown.expect(IllegalArgumentException)
dependency.generateId()
@@ -107,7 +107,7 @@ class InitializrMetadataTests {
@Test
void generateIdWithNoArtifactId() {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.groupId = 'foo'
thrown.expect(IllegalArgumentException)
dependency.generateId()
@@ -115,11 +115,10 @@ class InitializrMetadataTests {
@Test
void indexedDependencies() {
InitializrMetadata.Dependency dependency = createDependency('first')
InitializrMetadata.Dependency dependency2 = createDependency('second')
def dependency = createDependency('first')
def dependency2 = createDependency('second')
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('foo', dependency, dependency2).validateAndGet()
assertSame dependency, metadata.getDependency('first')
@@ -129,10 +128,10 @@ class InitializrMetadataTests {
@Test
void addTwoDependenciesWithSameId() {
InitializrMetadata.Dependency dependency = createDependency('conflict')
InitializrMetadata.Dependency dependency2 = createDependency('conflict')
def dependency = createDependency('conflict')
def dependency2 = createDependency('conflict')
InitializrMetadataBuilder builder = InitializrMetadataBuilder.withDefaults()
def builder = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('foo', dependency, dependency2)
thrown.expect(IllegalArgumentException)
@@ -142,11 +141,11 @@ class InitializrMetadataTests {
@Test
void addDependencyWithAliases() {
InitializrMetadata.Dependency dependency = createDependency('first')
def dependency = createDependency('first')
dependency.aliases.add('alias1')
dependency.aliases.add('alias2')
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('foo', dependency).validateAndGet()
assertSame dependency, metadata.getDependency('first')
@@ -156,13 +155,13 @@ class InitializrMetadataTests {
@Test
void aliasClashWithAnotherDependency() {
InitializrMetadata.Dependency dependency = createDependency('first')
def dependency = createDependency('first')
dependency.aliases.add('alias1')
dependency.aliases.add('alias2')
InitializrMetadata.Dependency dependency2 = createDependency('alias2')
def dependency2 = createDependency('alias2')
InitializrMetadataBuilder builder = InitializrMetadataBuilder.withDefaults()
def builder = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('foo', dependency)
.addDependencyGroup('bar', dependency2)
@@ -173,14 +172,14 @@ class InitializrMetadataTests {
@Test
void createProjectRequest() {
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults().validateAndGet()
ProjectRequest request = doCreateProjectRequest(metadata)
def metadata = InitializrMetadataBuilder.withDefaults().validateAndGet()
def request = doCreateProjectRequest(metadata)
assertEquals metadata.defaults.groupId, request.groupId
}
@Test
void validateArtifactRepository() {
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults().instance()
def metadata = InitializrMetadataBuilder.withDefaults().instance()
metadata.env.artifactRepository = 'http://foo/bar'
metadata.validate()
assertEquals 'http://foo/bar/', metadata.env.artifactRepository
@@ -207,19 +206,19 @@ class InitializrMetadataTests {
}
private static ProjectRequest doCreateProjectRequest(InitializrMetadata metadata) {
ProjectRequest request = new ProjectRequest()
def request = new ProjectRequest()
metadata.initializeProjectRequest(request)
request
}
private static InitializrMetadata.Dependency createDependency(String id) {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.id = id
dependency
}
private static InitializrMetadata.JavaVersion createJavaVersion(String version, boolean selected) {
InitializrMetadata.JavaVersion javaVersion = new InitializrMetadata.JavaVersion()
def javaVersion = new InitializrMetadata.JavaVersion()
javaVersion.id = version
javaVersion.default = selected
javaVersion

View File

@@ -36,14 +36,14 @@ class ProjectGenerationMetricsListenerTests {
@Before
void setup() {
TestCounterService counterService = new TestCounterService()
def counterService = new TestCounterService()
listener = new ProjectGenerationMetricsListener(counterService)
metricsAssert = new MetricsAssert(counterService)
}
@Test
void projectGenerationCount() {
ProjectRequest request = initialize()
def request = initialize()
request.resolve(metadata)
listener.onGeneratedProject(request)
metricsAssert.hasValue(1, 'initializr.requests')
@@ -51,7 +51,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void dependencies() {
ProjectRequest request = initialize()
def request = initialize()
request.style << 'security' << 'spring-data'
request.resolve(metadata)
listener.onGeneratedProject(request)
@@ -61,7 +61,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void resolvedWebDependency() {
ProjectRequest request = initialize()
def request = initialize()
request.style << 'spring-data'
request.packaging = 'war'
request.resolve(metadata)
@@ -72,12 +72,12 @@ class ProjectGenerationMetricsListenerTests {
@Test
void aliasedDependencyUseStandardId() {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.id ='foo'
dependency.aliases << 'foo-old'
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('core', dependency).validateAndGet()
ProjectRequest request = new ProjectRequest()
def request = new ProjectRequest()
metadata.initializeProjectRequest(request)
request.style << 'foo-old'
request.resolve(metadata)
@@ -87,7 +87,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void defaultType() {
ProjectRequest request = initialize()
def request = initialize()
request.resolve(metadata)
listener.onGeneratedProject(request)
metricsAssert.hasValue(1, 'initializr.type.starter_zip')
@@ -95,7 +95,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void explicitType() {
ProjectRequest request = initialize()
def request = initialize()
request.type = 'build.gradle'
request.resolve(metadata)
listener.onGeneratedProject(request)
@@ -104,7 +104,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void defaultPackaging() {
ProjectRequest request = initialize()
def request = initialize()
request.resolve(metadata)
listener.onGeneratedProject(request)
metricsAssert.hasValue(1, 'initializr.packaging.jar')
@@ -112,7 +112,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void explicitPackaging() {
ProjectRequest request = initialize()
def request = initialize()
request.packaging = 'war'
request.resolve(metadata)
listener.onGeneratedProject(request)
@@ -121,7 +121,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void defaultJavaVersion() {
ProjectRequest request = initialize()
def request = initialize()
request.resolve(metadata)
listener.onGeneratedProject(request)
metricsAssert.hasValue(1, 'initializr.java_version.1_7')
@@ -129,7 +129,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void explicitJavaVersion() {
ProjectRequest request = initialize()
def request = initialize()
request.javaVersion = '1.8'
request.resolve(metadata)
listener.onGeneratedProject(request)
@@ -138,7 +138,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void defaultLanguage() {
ProjectRequest request = initialize()
def request = initialize()
request.resolve(metadata)
listener.onGeneratedProject(request)
metricsAssert.hasValue(1, 'initializr.language.java')
@@ -146,7 +146,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void explicitLanguage() {
ProjectRequest request = initialize()
def request = initialize()
request.language = 'groovy'
request.resolve(metadata)
listener.onGeneratedProject(request)
@@ -155,7 +155,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void defaultBootVersion() {
ProjectRequest request = initialize()
def request = initialize()
request.resolve(metadata)
listener.onGeneratedProject(request)
metricsAssert.hasValue(1, 'initializr.boot_version.1_1_5_RELEASE')
@@ -163,7 +163,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void explicitBootVersion() {
ProjectRequest request = initialize()
def request = initialize()
request.bootVersion = '1.0.2.RELEASE'
request.resolve(metadata)
listener.onGeneratedProject(request)
@@ -172,7 +172,7 @@ class ProjectGenerationMetricsListenerTests {
@Test
void collectAllMetrics() {
ProjectRequest request = initialize()
def request = initialize()
request.style << 'web' << 'security'
request.type = 'gradle.zip'
request.packaging = 'jar'
@@ -191,14 +191,14 @@ class ProjectGenerationMetricsListenerTests {
@Test
void incrementMetrics() {
ProjectRequest request = initialize()
def request = initialize()
request.style << 'security' << 'spring-data'
request.resolve(metadata)
listener.onGeneratedProject(request)
metricsAssert.hasValue(1, 'initializr.requests',
'initializr.dependency.security', 'initializr.dependency.spring-data')
ProjectRequest anotherRequest = initialize()
def anotherRequest = initialize()
anotherRequest.style << 'web' << 'spring-data'
anotherRequest.resolve(metadata)
listener.onGeneratedProject(anotherRequest)
@@ -209,7 +209,7 @@ class ProjectGenerationMetricsListenerTests {
}
private ProjectRequest initialize() {
ProjectRequest request = new ProjectRequest()
def request = new ProjectRequest()
metadata.initializeProjectRequest(request)
request
}

View File

@@ -39,18 +39,18 @@ class ProjectGeneratorTests {
@Before
void setup() {
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('test', 'web', 'security', 'data-jpa', 'aop', 'batch', 'integration').validateAndGet()
projectGenerator.metadata = metadata
projectGenerator.tmpdir = folder.newFolder().getAbsolutePath()
projectGenerator.tmpdir = folder.newFolder().absolutePath
}
@Test
void defaultMavenPom() {
ProjectGenerationListener listener = mock(ProjectGenerationListener)
def listener = mock(ProjectGenerationListener)
projectGenerator.listeners << listener
ProjectRequest request = createProjectRequest('web')
def request = createProjectRequest('web')
generateMavenPom(request).hasStartClass('demo.Application')
.hasNoRepository().hasSpringBootStarterDependency('web')
verify(listener, times(1)).onGeneratedProject(request)
@@ -58,20 +58,20 @@ class ProjectGeneratorTests {
@Test
void defaultGradleBuild() {
ProjectGenerationListener listener = mock(ProjectGenerationListener)
def listener = mock(ProjectGenerationListener)
projectGenerator.listeners << listener
ProjectRequest request = createProjectRequest('web')
def request = createProjectRequest('web')
generateGradleBuild(request)
verify(listener, times(1)).onGeneratedProject(request)
}
@Test
void defaultProject() {
ProjectGenerationListener listener = mock(ProjectGenerationListener)
def listener = mock(ProjectGenerationListener)
projectGenerator.listeners << listener
ProjectRequest request = createProjectRequest('web')
def request = createProjectRequest('web')
generateProject(request).isJavaProject().isMavenProject().pomAssert()
.hasStartClass('demo.Application').hasNoRepository().hasSpringBootStarterDependency('web')
verify(listener, times(1)).onGeneratedProject(request)
@@ -79,14 +79,14 @@ class ProjectGeneratorTests {
@Test
void noDependencyAddsRootStarter() {
ProjectRequest request = createProjectRequest()
def request = createProjectRequest()
generateProject(request).isJavaProject().isMavenProject().pomAssert()
.hasSpringBootStarterRootDependency()
}
@Test
void mavenPomWithBootSnapshot() {
ProjectRequest request = createProjectRequest('web')
def request = createProjectRequest('web')
request.bootVersion = '1.0.1.BUILD-SNAPSHOT'
generateMavenPom(request).hasStartClass('demo.Application')
.hasSnapshotRepository().hasSpringBootStarterDependency('web')
@@ -94,17 +94,17 @@ class ProjectGeneratorTests {
@Test
void mavenPomWithWebFacet() {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.id = 'thymeleaf'
dependency.groupId = 'org.foo'
dependency.artifactId = 'thymeleaf'
dependency.facets << 'web'
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('core', 'web', 'security', 'data-jpa')
.addDependencyGroup('test', dependency).validateAndGet()
projectGenerator.metadata = metadata
ProjectRequest request = createProjectRequest('thymeleaf')
def request = createProjectRequest('thymeleaf')
generateMavenPom(request).hasStartClass('demo.Application')
.hasDependency('org.foo', 'thymeleaf')
.hasDependenciesCount(2)
@@ -113,17 +113,17 @@ class ProjectGeneratorTests {
@Test
void mavenWarPomWithWebFacet() {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.id = 'thymeleaf'
dependency.groupId = 'org.foo'
dependency.artifactId = 'thymeleaf'
dependency.facets << 'web'
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('core', 'web', 'security', 'data-jpa')
.addDependencyGroup('test', dependency).validateAndGet()
projectGenerator.metadata = metadata
ProjectRequest request = createProjectRequest('thymeleaf')
def request = createProjectRequest('thymeleaf')
request.packaging = 'war'
generateMavenPom(request).hasStartClass('demo.Application')
.hasSpringBootStarterDependency('tomcat')
@@ -135,7 +135,7 @@ class ProjectGeneratorTests {
@Test
void mavenWarPomWithoutWebFacet() {
ProjectRequest request = createProjectRequest('data-jpa')
def request = createProjectRequest('data-jpa')
request.packaging = 'war'
generateMavenPom(request).hasStartClass('demo.Application')
.hasSpringBootStarterDependency('tomcat')
@@ -147,22 +147,22 @@ class ProjectGeneratorTests {
}
PomAssert generateMavenPom(ProjectRequest request) {
String content = new String(projectGenerator.generateMavenPom(request))
def content = new String(projectGenerator.generateMavenPom(request))
new PomAssert(content).validateProjectRequest(request)
}
GradleBuildAssert generateGradleBuild(ProjectRequest request) {
String content = new String(projectGenerator.generateGradleBuild(request))
def content = new String(projectGenerator.generateGradleBuild(request))
new GradleBuildAssert(content).validateProjectRequest(request)
}
ProjectAssert generateProject(ProjectRequest request) {
File dir = projectGenerator.generateProjectStructure(request)
def dir = projectGenerator.generateProjectStructure(request)
new ProjectAssert(dir)
}
ProjectRequest createProjectRequest(String... styles) {
ProjectRequest request = new ProjectRequest()
def request = new ProjectRequest()
projectGenerator.metadata.initializeProjectRequest(request)
request.style.addAll Arrays.asList(styles)
request

View File

@@ -33,42 +33,42 @@ class ProjectRequestTests {
@Test
void resolve() {
ProjectRequest request = new ProjectRequest()
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def request = new ProjectRequest()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('code', 'web', 'security', 'spring-data').validateAndGet()
request.style << 'web' << 'spring-data'
request.resolve(metadata)
assertBootStarter(request.dependencies.get(0), 'web')
assertBootStarter(request.dependencies.get(1), 'spring-data')
assertBootStarter(request.dependencies[0], 'web')
assertBootStarter(request.dependencies[1], 'spring-data')
}
@Test
void resolveFullMetadata() {
ProjectRequest request = new ProjectRequest()
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def request = new ProjectRequest()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('code', createDependency('org.foo', 'acme', '1.2.0')).validateAndGet()
request.style << 'org.foo:acme'
request.resolve(metadata)
assertDependency(request.dependencies.get(0), 'org.foo', 'acme', '1.2.0')
assertDependency(request.dependencies[0], 'org.foo', 'acme', '1.2.0')
}
@Test
void resolveUnknownSimpleIdAsSpringBootStarter() {
ProjectRequest request = new ProjectRequest()
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def request = new ProjectRequest()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('code', 'org.foo:bar').validateAndGet()
request.style << 'org.foo:bar' << 'foo-bar'
request.resolve(metadata)
assertDependency(request.dependencies.get(0), 'org.foo', 'bar', null)
assertBootStarter(request.dependencies.get(1), 'foo-bar')
assertDependency(request.dependencies[0], 'org.foo', 'bar', null)
assertBootStarter(request.dependencies[1], 'foo-bar')
}
@Test
void resolveUnknownDependency() {
ProjectRequest request = new ProjectRequest()
InitializrMetadata metadata = InitializrMetadataBuilder.withDefaults()
def request = new ProjectRequest()
def metadata = InitializrMetadataBuilder.withDefaults()
.addDependencyGroup('code', 'org.foo:bar').validateAndGet()
request.style << 'org.foo:acme' // does not exist and
@@ -79,13 +79,13 @@ class ProjectRequestTests {
}
private static void assertBootStarter(InitializrMetadata.Dependency actual, String name) {
InitializrMetadata.Dependency expected = new InitializrMetadata.Dependency()
def expected = new InitializrMetadata.Dependency()
expected.asSpringBootStarter(name)
assertDependency(actual, expected.groupId, expected.artifactId, expected.version)
}
private static InitializrMetadata.Dependency createDependency(String groupId, String artifactId, String version) {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.groupId = groupId
dependency.artifactId = artifactId
dependency.version = version

View File

@@ -43,10 +43,10 @@ class InitializrMetadataBuilder {
}
InitializrMetadataBuilder addDependencyGroup(String name, String... ids) {
InitializrMetadata.DependencyGroup group = new InitializrMetadata.DependencyGroup()
def group = new InitializrMetadata.DependencyGroup()
group.name = name
for (String id : ids) {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.id = id
group.content.add(dependency)
}
@@ -55,7 +55,7 @@ class InitializrMetadataBuilder {
}
InitializrMetadataBuilder addDependencyGroup(String name, InitializrMetadata.Dependency... dependencies) {
InitializrMetadata.DependencyGroup group = new InitializrMetadata.DependencyGroup()
def group = new InitializrMetadata.DependencyGroup()
group.name = name
group.content.addAll(dependencies)
metadata.dependencies.add(group)
@@ -73,7 +73,7 @@ class InitializrMetadataBuilder {
}
InitializrMetadataBuilder addType(String id, boolean defaultValue, String action) {
InitializrMetadata.Type type = new InitializrMetadata.Type()
def type = new InitializrMetadata.Type()
type.id = id
type.name = id
type.default = defaultValue
@@ -87,7 +87,7 @@ class InitializrMetadataBuilder {
}
InitializrMetadataBuilder addPackaging(String id, boolean defaultValue) {
InitializrMetadata.Packaging packaging = new InitializrMetadata.Packaging()
def packaging = new InitializrMetadata.Packaging()
packaging.id = id
packaging.name = id
packaging.default = defaultValue
@@ -100,7 +100,7 @@ class InitializrMetadataBuilder {
}
InitializrMetadataBuilder addJavaVersion(String version, boolean defaultValue) {
InitializrMetadata.JavaVersion javaVersion = new InitializrMetadata.JavaVersion()
def javaVersion = new InitializrMetadata.JavaVersion()
javaVersion.id = version
javaVersion.name = version
javaVersion.default = defaultValue
@@ -113,7 +113,7 @@ class InitializrMetadataBuilder {
}
InitializrMetadataBuilder addLanguage(String id, boolean defaultValue) {
InitializrMetadata.Language language = new InitializrMetadata.Language()
def language = new InitializrMetadata.Language()
language.id = id
language.name = id
language.default = defaultValue
@@ -127,7 +127,7 @@ class InitializrMetadataBuilder {
}
InitializrMetadataBuilder addBootVersion(String id, boolean defaultValue) {
InitializrMetadata.BootVersion bootVersion = new InitializrMetadata.BootVersion()
def bootVersion = new InitializrMetadata.BootVersion()
bootVersion.id = id
bootVersion.name = id
bootVersion.default = defaultValue
@@ -135,5 +135,4 @@ class InitializrMetadataBuilder {
this
}
}

View File

@@ -34,7 +34,7 @@ class MetricsAssert {
MetricsAssert hasValue(long value, String... metrics) {
metrics.each {
Long actual = counterService.values[it]
def actual = counterService.values[it]
if (actual == null) {
fail('Metric ' + it + ' not found, got ' + counterService.values.keySet())
}
@@ -45,7 +45,7 @@ class MetricsAssert {
MetricsAssert hasNoValue(String... metrics) {
metrics.each {
assertEquals 'Metric ' + it + ' should not be registered', null, counterService.values.get(it)
assertEquals 'Metric ' + it + ' should not be registered', null, counterService.values[it]
}
}

View File

@@ -37,13 +37,13 @@ class PomAssert {
final XpathEngine eng
final Document doc
final Map<String, InitializrMetadata.Dependency> dependencies = new HashMap<String, InitializrMetadata.Dependency>()
final Map<String, InitializrMetadata.Dependency> dependencies = [:]
PomAssert(String content) {
eng = XMLUnit.newXpathEngine()
Map<String, String> context = new HashMap<String, String>()
context.put 'pom', 'http://maven.apache.org/POM/4.0.0'
SimpleNamespaceContext namespaceContext = new SimpleNamespaceContext(context)
def context = [:]
context['pom'] = 'http://maven.apache.org/POM/4.0.0'
def namespaceContext = new SimpleNamespaceContext(context)
eng.namespaceContext = namespaceContext
doc = XMLUnit.buildControlDocument(content)
parseDependencies()
@@ -123,9 +123,9 @@ class PomAssert {
PomAssert hasDependency(String groupId, String artifactId, String version) {
def id = generateId(groupId, artifactId)
def dependency = dependencies.get(id)
def dependency = dependencies[id]
assertNotNull 'No dependency found with ' + id + ' --> ' + dependencies.keySet(), dependency
if (version != null) {
if (version) {
assertEquals 'Wrong version for '+dependency, version, dependency.version
}
this
@@ -144,8 +144,8 @@ class PomAssert {
def hasRepository(String name) {
def nodes = eng.getMatchingNodes(createRootNodeXPath('repositories/pom:repository/pom:id'), doc)
for (int i = 0; i < nodes.getLength(); i++) {
if (name.equals(nodes.item(i).getTextContent())) {
for (int i = 0; i < nodes.length; i++) {
if (name.equals(nodes.item(i).textContent)) {
return
}
}
@@ -154,8 +154,8 @@ class PomAssert {
def hasPluginRepository(String name) {
def nodes = eng.getMatchingNodes(createRootNodeXPath('pluginRepositories/pom:pluginRepository/pom:id'), doc)
for (int i = 0; i < nodes.getLength(); i++) {
if (name.equals(nodes.item(i).getTextContent())) {
for (int i = 0; i < nodes.length; i++) {
if (name.equals(nodes.item(i).textContent)) {
return
}
}
@@ -175,27 +175,27 @@ class PomAssert {
for (int i = 0; i < nodes.length; i++) {
def item = nodes.item(i)
if (item instanceof Element) {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
Element element = (Element) item
def dependency = new InitializrMetadata.Dependency()
def element = (Element) item
def groupId = element.getElementsByTagName('groupId')
if (groupId.length > 0) {
dependency.groupId = groupId.item(0).getTextContent()
dependency.groupId = groupId.item(0).textContent
}
def artifactId = element.getElementsByTagName('artifactId')
if (artifactId.length > 0) {
dependency.artifactId = artifactId.item(0).getTextContent()
dependency.artifactId = artifactId.item(0).textContent
}
def version = element.getElementsByTagName('version')
if (version.length > 0) {
dependency.version = version.item(0).getTextContent()
dependency.version = version.item(0).textContent
}
dependencies.put(dependency.generateId(), dependency)
dependencies[dependency.generateId()] = dependency
}
}
}
private static String generateId(String groupId, String artifactId) {
InitializrMetadata.Dependency dependency = new InitializrMetadata.Dependency()
def dependency = new InitializrMetadata.Dependency()
dependency.groupId = groupId
dependency.artifactId = artifactId
dependency.generateId()

View File

@@ -25,22 +25,24 @@ import org.springframework.boot.actuate.metrics.CounterService
*/
class TestCounterService implements CounterService {
final Map<String, Long> values = new HashMap<>()
final Map<String, Long> values = [:]
@Override
void increment(String metricName) {
Long value = values.get(metricName)
value != null ? values.put(metricName, ++value) : values.put(metricName, 1)
def value = values[metricName]
def valueToSet = value ? ++value : 1
values[metricName] = valueToSet
}
@Override
void decrement(String metricName) {
Long value = values.get(metricName)
value != null ? values.put(metricName, --value) : values.put(metricName, -1)
def value = values[metricName]
def valueToSet = value ? --value : -1
values[metricName] = valueToSet
}
@Override
void reset(String metricName) {
values.put(metricName, 0)
values[metricName] = 0
}
}

View File

@@ -49,11 +49,11 @@ abstract class AbstractInitializerControllerFormIntegrationTests extends Abstrac
@Before
void setup() {
MockMvc mockMvc = MockMvcBuilders
def mockMvc = MockMvcBuilders
.webAppContextSetup(context)
.build()
webClient = new WebClient()
webClient.setWebConnection(new MockMvcWebConnection(mockMvc, ''))
webClient.webConnection = new MockMvcWebConnection(mockMvc, '')
}
@After
@@ -63,8 +63,8 @@ abstract class AbstractInitializerControllerFormIntegrationTests extends Abstrac
@Test
void createDefaultProject() {
HomePage page = home()
ProjectAssert projectAssert = zipProjectAssert(page.generateProject())
def page = home()
def projectAssert = zipProjectAssert(page.generateProject())
projectAssert.isMavenProject().isJavaProject().hasStaticAndTemplatesResources(false)
.pomAssert().hasDependenciesCount(2)
.hasSpringBootStarterRootDependency().hasSpringBootStarterDependency('test')
@@ -72,13 +72,13 @@ abstract class AbstractInitializerControllerFormIntegrationTests extends Abstrac
@Test
void createProjectWithCustomDefaults() {
HomePage page = home()
def page = home()
page.groupId = 'com.acme'
page.artifactId = 'foo-bar'
page.name = 'My project'
page.description = 'A description for my project'
page.dependencies << 'web' << 'data-jpa'
ProjectAssert projectAssert = zipProjectAssert(page.generateProject())
def projectAssert = zipProjectAssert(page.generateProject())
projectAssert.isMavenProject().isJavaProject().hasStaticAndTemplatesResources(true)
projectAssert.pomAssert().hasGroupId('com.acme').hasArtifactId('foo-bar')
@@ -90,18 +90,18 @@ abstract class AbstractInitializerControllerFormIntegrationTests extends Abstrac
@Test
void createSimpleGradleProject() {
HomePage page = home()
def page = home()
page.type = 'gradle.zip'
page.dependencies << 'data-jpa'
ProjectAssert projectAssert = zipProjectAssert(page.generateProject())
def projectAssert = zipProjectAssert(page.generateProject())
projectAssert.isGradleProject().isJavaProject().hasStaticAndTemplatesResources(false)
}
@Test
void createWarProject() {
HomePage page = home()
def page = home()
page.packaging = 'war'
ProjectAssert projectAssert = zipProjectAssert(page.generateProject())
def projectAssert = zipProjectAssert(page.generateProject())
projectAssert.isMavenProject().isJavaWarProject()
.pomAssert().hasPackaging('war').hasDependenciesCount(3)
.hasSpringBootStarterDependency('web') // Added with war packaging
@@ -110,8 +110,8 @@ abstract class AbstractInitializerControllerFormIntegrationTests extends Abstrac
}
HomePage home() {
WebRequest request = new WebRequest(new URL('http://localhost' + homeContext()), 'text/html')
HtmlPage home = webClient.getPage(request)
def request = new WebRequest(new URL('http://localhost' + homeContext()), 'text/html')
def home = webClient.getPage(request)
createHomePage(home)
}

View File

@@ -59,7 +59,7 @@ abstract class AbstractInitializrControllerIntegrationTests {
}
String htmlHome() {
HttpHeaders headers = new HttpHeaders()
def headers = new HttpHeaders()
headers.setAccept([MediaType.TEXT_HTML])
restTemplate.exchange(createUrl('/'), HttpMethod.GET, new HttpEntity<Void>(headers), String).body
}
@@ -79,7 +79,7 @@ abstract class AbstractInitializrControllerIntegrationTests {
}
ProjectAssert projectAssert(byte[] content, ArchiveType archiveType) {
File archiveFile = writeArchive(content)
def archiveFile = writeArchive(content)
def project = folder.newFolder()
switch (archiveType) {

View File

@@ -17,15 +17,15 @@ class MainControllerDefaultsIntegrationTests extends AbstractInitializrControlle
@Test
void generateDefaultPom() {
String content = restTemplate.getForObject(createUrl('/pom.xml?style=web'), String)
PomAssert pomAssert = new PomAssert(content)
def content = restTemplate.getForObject(createUrl('/pom.xml?style=web'), String)
def pomAssert = new PomAssert(content)
pomAssert.hasGroupId('org.foo').hasArtifactId('foo-bar').hasVersion('1.2.4-SNAPSHOT').hasPackaging('jar')
.hasName('FooBar').hasDescription('FooBar Project').hasStartClass('org.foo.demo.Application')
}
@Test
void defaultsAppliedToHome() {
String body = htmlHome()
def body = htmlHome()
assertTrue 'custom groupId not found', body.contains('org.foo')
assertTrue 'custom artifactId not found', body.contains('foo-bar')
assertTrue 'custom name not found', body.contains('FooBar')

View File

@@ -32,7 +32,7 @@ class MainControllerEnvIntegrationTests extends AbstractInitializrControllerInte
@Test
void downloadCliWithCustomRepository() {
HttpEntity entity = restTemplate.getForEntity(createUrl('/spring'), HttpEntity.class)
def entity = restTemplate.getForEntity(createUrl('/spring'), HttpEntity.class)
assertEquals HttpStatus.FOUND, entity.getStatusCode()
assertEquals new URI('https://repo.spring.io/lib-release/org/springframework/boot/spring-boot-cli/1.1.4.RELEASE' +
'/spring-boot-cli-1.1.4.RELEASE-bin.zip'), entity.getHeaders().getLocation()

View File

@@ -93,7 +93,7 @@ class MainControllerIntegrationTests extends AbstractInitializrControllerIntegra
}
private void assertSpringCliRedirect(String context, String extension) {
ResponseEntity<?> entity = restTemplate.getForEntity(createUrl(context), ResponseEntity.class)
def entity = restTemplate.getForEntity(createUrl(context), ResponseEntity.class)
assertEquals HttpStatus.FOUND, entity.getStatusCode()
assertEquals new URI('https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.1.4.RELEASE' +
'/spring-boot-cli-1.1.4.RELEASE-bin.'+extension), entity.getHeaders().getLocation()
@@ -102,15 +102,15 @@ class MainControllerIntegrationTests extends AbstractInitializrControllerIntegra
@Test // Test that the current output is exactly what we expect
void validateCurrentProjectMetadata() {
String json = restTemplate.getForObject(createUrl('/'), String.class)
JSONObject expected = readJson('1.0')
def json = restTemplate.getForObject(createUrl('/'), String.class)
def expected = readJson('1.0')
JSONAssert.assertEquals(expected, new JSONObject(json), JSONCompareMode.STRICT)
}
@Test // Test that the current code complies "at least" with 1.0
void validateProjectMetadata10() {
String json = restTemplate.getForObject(createUrl('/'), String.class)
JSONObject expected = readJson('1.0')
def json = restTemplate.getForObject(createUrl('/'), String.class)
def expected = readJson('1.0')
JSONAssert.assertEquals(expected, new JSONObject(json), JSONCompareMode.LENIENT)
}
@@ -118,11 +118,11 @@ class MainControllerIntegrationTests extends AbstractInitializrControllerIntegra
void metricsAvailableByDefault() {
downloadZip('/starter.zip?packaging=jar&javaVersion=1.8&style=web&style=jpa')
def result = metricsEndpoint()
Long requests = result['counter.initializr.requests']
Long packaging = result['counter.initializr.packaging.jar']
Long javaVersion = result['counter.initializr.java_version.1_8']
Long webDependency = result['counter.initializr.dependency.web']
Long jpaDependency = result['counter.initializr.dependency.jpa']
def requests = result['counter.initializr.requests']
def packaging = result['counter.initializr.packaging.jar']
def javaVersion = result['counter.initializr.java_version.1_8']
def webDependency = result['counter.initializr.dependency.web']
def jpaDependency = result['counter.initializr.dependency.jpa']
downloadZip('/starter.zip?packaging=jar&javaVersion=1.8&style=web') // No jpa dep this time
@@ -140,7 +140,7 @@ class MainControllerIntegrationTests extends AbstractInitializrControllerIntegra
}
private def metricsEndpoint() {
JsonSlurper slurper = new JsonSlurper()
def slurper = new JsonSlurper()
slurper.parseText(restTemplate.getForObject(createUrl('/metrics'), String))
}
@@ -148,80 +148,80 @@ class MainControllerIntegrationTests extends AbstractInitializrControllerIntegra
@Test
void homeIsForm() {
String body = htmlHome()
def body = htmlHome()
assertTrue 'Wrong body:\n' + body, body.contains('action="/starter.zip"')
}
@Test
void homeIsJson() {
String body = restTemplate.getForObject(createUrl('/'), String)
def body = restTemplate.getForObject(createUrl('/'), String)
assertTrue('Wrong body:\n' + body, body.contains('{"dependencies"'))
}
@Test
void webIsAddedPom() {
String body = restTemplate.getForObject(createUrl('/pom.xml?packaging=war'), String)
def body = restTemplate.getForObject(createUrl('/pom.xml?packaging=war'), String)
assertTrue('Wrong body:\n' + body, body.contains('spring-boot-starter-web'))
assertTrue('Wrong body:\n' + body, body.contains('provided'))
}
@Test
void webIsAddedGradle() {
String body = restTemplate.getForObject(createUrl('/build.gradle?packaging=war'), String)
def body = restTemplate.getForObject(createUrl('/build.gradle?packaging=war'), String)
assertTrue('Wrong body:\n' + body, body.contains('spring-boot-starter-web'))
assertTrue('Wrong body:\n' + body, body.contains('providedRuntime'))
}
@Test
void infoHasExternalProperties() {
String body = restTemplate.getForObject(createUrl('/info'), String)
def body = restTemplate.getForObject(createUrl('/info'), String)
assertTrue('Wrong body:\n' + body, body.contains('"spring-boot"'))
assertTrue('Wrong body:\n' + body, body.contains('"version":"1.1.4.RELEASE"'))
}
@Test
void homeHasWebStyle() {
String body = htmlHome()
def body = htmlHome()
assertTrue('Wrong body:\n' + body, body.contains('name="style" value="web"'))
}
@Test
void homeHasBootVersion() {
String body = htmlHome()
def body = htmlHome()
assertTrue('Wrong body:\n' + body, body.contains('name="bootVersion"'))
assertTrue('Wrong body:\n' + body, body.contains('1.2.0.BUILD-SNAPSHOT"'))
}
@Test
void downloadStarter() {
byte[] body = restTemplate.getForObject(createUrl('starter.zip'), byte[])
def body = restTemplate.getForObject(createUrl('starter.zip'), byte[])
assertNotNull(body)
assertTrue(body.length > 100)
}
@Test
void installer() {
ResponseEntity<String> response = restTemplate.getForEntity(createUrl('install.sh'), String)
def response = restTemplate.getForEntity(createUrl('install.sh'), String)
assertEquals(HttpStatus.OK, response.getStatusCode())
assertNotNull(response.body)
}
private ProjectAssert downloadZip(String context) {
byte[] body = restTemplate.getForObject(createUrl(context), byte[])
def body = restTemplate.getForObject(createUrl(context), byte[])
zipProjectAssert(body)
}
private ProjectAssert downloadTgz(String context) {
byte[] body = restTemplate.getForObject(createUrl(context), byte[])
def body = restTemplate.getForObject(createUrl(context), byte[])
tgzProjectAssert(body)
}
private static JSONObject readJson(String version) {
def resource = new ClassPathResource('metadata/test-default-' + version + '.json')
def stream = resource.getInputStream()
def stream = resource.inputStream
try {
String json = StreamUtils.copyToString(stream, Charset.forName('UTF-8'))
def json = StreamUtils.copyToString(stream, Charset.forName('UTF-8'))
new JSONObject(json)
} finally {
stream.close()

View File

@@ -38,8 +38,8 @@ class DefaultHomePage extends HomePage {
}
private void select(String selectId, String value) {
if (value != null) {
HtmlSelect input = page.getHtmlElementById(selectId)
if (value) {
def input = page.getHtmlElementById(selectId)
input.setSelectedAttribute(value, true)
}
}

View File

@@ -49,8 +49,8 @@ abstract class HomePage {
*/
byte[] generateProject() {
setup()
HtmlButton submit = page.getElementByName('generate-project')
Page newMessagePage = submit.click();
def submit = page.getElementByName('generate-project')
def newMessagePage = submit.click();
newMessagePage.webResponse.contentAsStream.bytes
}
@@ -68,21 +68,21 @@ abstract class HomePage {
}
protected void setTextValue(String elementId, String value) {
if (value != null) {
HtmlTextInput input = page.getHtmlElementById(elementId)
if (value) {
def input = page.getHtmlElementById(elementId)
input.setValueAttribute(value)
}
}
protected void selectDependencies(List<String> dependencies) {
List<DomElement> styles = page.getElementsByName("style")
Map<String, HtmlCheckBoxInput> allStyles = new HashMap<>()
def styles = page.getElementsByName("style")
def allStyles = [:]
for (HtmlCheckBoxInput checkBoxInput : styles) {
allStyles.put(checkBoxInput.getValueAttribute(), checkBoxInput)
allStyles[checkBoxInput.getValueAttribute()] = checkBoxInput
}
for (String dependency : dependencies) {
HtmlCheckBoxInput checkBox = allStyles.get(dependency)
if (checkBox != null) {
def checkBox = allStyles.get(dependency)
if (checkBox) {
checkBox.checked = true
} else {
throw new IllegalArgumentException('No dependency with name '

View File

@@ -37,7 +37,7 @@ class StsHomePage extends HomePage {
}
private void select(String selectId, String value) {
if (value != null) {
if (value) {
page.getElementsByIdAndOrName(selectId).each {
it.checked = value.equals(it.defaultValue)
}