mirror of
https://gitee.com/dcren/initializr.git
synced 2026-02-26 05:32:58 +08:00
polishing
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 '
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user