From 7b79a37a66b43db394db4a085b4153b33b488189 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 10 Dec 2014 14:00:30 +0100 Subject: [PATCH] Fix wrong dependency metric Previously if a project was generated with no defined dependency; a metric with id 'counter.initializr.dependency.' was published. We now make sure to properly identify that default use case and no metrics gets published in such a case. Fixes gh-57 --- .../groovy/io/spring/initializr/InitializrMetadata.groovy | 7 ++++--- .../initializr/ProjectGenerationMetricsListener.groovy | 6 ++++-- .../groovy/io/spring/initializr/ProjectRequest.groovy | 7 ++++++- .../io/spring/initializr/InitializrMetadataTests.groovy | 8 ++++++++ .../ProjectGenerationMetricsListenerTests.groovy | 8 ++++++++ .../io/spring/initializr/ProjectRequestTests.groovy | 1 + .../io/spring/initializr/support/MetricsAssert.groovy | 1 + 7 files changed, 32 insertions(+), 6 deletions(-) diff --git a/initializr/src/main/groovy/io/spring/initializr/InitializrMetadata.groovy b/initializr/src/main/groovy/io/spring/initializr/InitializrMetadata.groovy index 39a496dd..4a798737 100644 --- a/initializr/src/main/groovy/io/spring/initializr/InitializrMetadata.groovy +++ b/initializr/src/main/groovy/io/spring/initializr/InitializrMetadata.groovy @@ -24,7 +24,6 @@ import groovy.transform.ToString import groovy.util.logging.Slf4j import org.springframework.boot.context.properties.ConfigurationProperties -import org.springframework.util.StringUtils /** * The metadata using by the initializr, that is: @@ -246,8 +245,10 @@ class InitializrMetadata { */ def asSpringBootStarter(String name) { groupId = 'org.springframework.boot' - artifactId = StringUtils.hasText(name) ? 'spring-boot-starter-' + name : 'spring-boot-starter' - id = name + artifactId = name ? 'spring-boot-starter-' + name : 'spring-boot-starter' + if (name) { + id = name + } } /** diff --git a/initializr/src/main/groovy/io/spring/initializr/ProjectGenerationMetricsListener.groovy b/initializr/src/main/groovy/io/spring/initializr/ProjectGenerationMetricsListener.groovy index fc084157..2c42ca1a 100644 --- a/initializr/src/main/groovy/io/spring/initializr/ProjectGenerationMetricsListener.groovy +++ b/initializr/src/main/groovy/io/spring/initializr/ProjectGenerationMetricsListener.groovy @@ -49,8 +49,10 @@ class ProjectGenerationMetricsListener implements ProjectGenerationListener { protected void handleDependencies(ProjectRequest request) { request.resolvedDependencies.each { - def id = sanitize(it.id) - increment(key("dependency.$id")) + if (!ProjectRequest.DEFAULT_STARTER.equals(it.id)) { + def id = sanitize(it.id) + increment(key("dependency.$id")) + } } } diff --git a/initializr/src/main/groovy/io/spring/initializr/ProjectRequest.groovy b/initializr/src/main/groovy/io/spring/initializr/ProjectRequest.groovy index 3f6d3718..7b22d7b6 100644 --- a/initializr/src/main/groovy/io/spring/initializr/ProjectRequest.groovy +++ b/initializr/src/main/groovy/io/spring/initializr/ProjectRequest.groovy @@ -28,6 +28,11 @@ import groovy.util.logging.Slf4j @Slf4j class ProjectRequest { + /** + * The id of the starter to use if no dependency is defined. + */ + static final DEFAULT_STARTER = 'root_starter' + List style = [] List dependencies = [] String name @@ -106,7 +111,7 @@ class ProjectRequest { */ protected addDefaultDependency() { def root = new InitializrMetadata.Dependency() - root.id = 'root_starter' + root.id = DEFAULT_STARTER root.asSpringBootStarter('') resolvedDependencies << root diff --git a/initializr/src/test/groovy/io/spring/initializr/InitializrMetadataTests.groovy b/initializr/src/test/groovy/io/spring/initializr/InitializrMetadataTests.groovy index 96994e91..72079c76 100644 --- a/initializr/src/test/groovy/io/spring/initializr/InitializrMetadataTests.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/InitializrMetadataTests.groovy @@ -33,6 +33,14 @@ class InitializrMetadataTests { private final InitializrMetadata metadata = new InitializrMetadata() + @Test + void createRootSpringBootStarter() { + InitializrMetadata.Dependency d = new InitializrMetadata.Dependency(); + d.asSpringBootStarter("") + assertEquals 'org.springframework.boot', d.groupId + assertEquals 'spring-boot-starter', d.artifactId + } + @Test void setCoordinatesFromId() { def dependency = createDependency('org.foo:bar:1.2.3') diff --git a/initializr/src/test/groovy/io/spring/initializr/ProjectGenerationMetricsListenerTests.groovy b/initializr/src/test/groovy/io/spring/initializr/ProjectGenerationMetricsListenerTests.groovy index 6bfcf59e..1f61bd54 100644 --- a/initializr/src/test/groovy/io/spring/initializr/ProjectGenerationMetricsListenerTests.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/ProjectGenerationMetricsListenerTests.groovy @@ -59,6 +59,14 @@ class ProjectGenerationMetricsListenerTests { 'initializr.dependency.spring-data') } + @Test + void noDependencies() { + def request = initialize() + request.resolve(metadata) + listener.onGeneratedProject(request) + metricsAssert.hasNoValue('initializr.dependency.') + } + @Test void resolvedWebDependency() { def request = initialize() diff --git a/initializr/src/test/groovy/io/spring/initializr/ProjectRequestTests.groovy b/initializr/src/test/groovy/io/spring/initializr/ProjectRequestTests.groovy index 81545a7c..8abaca99 100644 --- a/initializr/src/test/groovy/io/spring/initializr/ProjectRequestTests.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/ProjectRequestTests.groovy @@ -131,6 +131,7 @@ class ProjectRequestTests { def expected = new InitializrMetadata.Dependency() expected.asSpringBootStarter(name) assertDependency(actual, expected.groupId, expected.artifactId, expected.version) + assertEquals name, actual.id } private static InitializrMetadata.Dependency createDependency(String groupId, String artifactId, String version) { diff --git a/initializr/src/test/groovy/io/spring/initializr/support/MetricsAssert.groovy b/initializr/src/test/groovy/io/spring/initializr/support/MetricsAssert.groovy index 069e61c2..71e6bddc 100644 --- a/initializr/src/test/groovy/io/spring/initializr/support/MetricsAssert.groovy +++ b/initializr/src/test/groovy/io/spring/initializr/support/MetricsAssert.groovy @@ -47,6 +47,7 @@ class MetricsAssert { metrics.each { assertEquals "Metric '$it' should not be registered", null, counterService.values[it] } + this } MetricsAssert metricsCount(int count) {