From ac41b8c26d41fb9e3f681b07621f7ab701335353 Mon Sep 17 00:00:00 2001 From: Michael Minella Date: Wed, 29 Mar 2017 15:55:00 -0500 Subject: [PATCH] Refactor to clense task name When using Spring Boot, the id of the application context can be a colon delimited string of values. By default, Spring Cloud Task uses this value as the task name. However, when using JMX, this can cause issues. This commit updates the SimpleTaskNameResolver to clense the colons and replace them with underscores. Resolves #280 --- .../support/SimpleTaskNameResolver.java | 2 +- .../support/SimpleTaskNameResolverTests.java | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolver.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolver.java index c7b4f2f8..00dd08ab 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolver.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolver.java @@ -55,7 +55,7 @@ public class SimpleTaskNameResolver implements TaskNameResolver, ApplicationCont return configuredName; } else { - return context.getId(); + return context.getId().replace(":", "_"); } } } diff --git a/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolverTests.java b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolverTests.java index cf01adfa..25e9b6df 100644 --- a/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolverTests.java +++ b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolverTests.java @@ -15,13 +15,13 @@ */ package org.springframework.cloud.task.repository.support; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - import org.junit.Test; import org.springframework.context.support.GenericApplicationContext; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + /** * @author Michael Minella */ @@ -37,6 +37,17 @@ public class SimpleTaskNameResolverTests { assertTrue(taskNameResolver.getTaskName().startsWith("org.springframework.context.support.GenericApplicationContext")); } + @Test + public void testWithProfile() { + GenericApplicationContext context = new GenericApplicationContext(); + context.setId("foo:bar"); + + SimpleTaskNameResolver taskNameResolver = new SimpleTaskNameResolver(); + taskNameResolver.setApplicationContext(context); + + assertTrue(taskNameResolver.getTaskName().startsWith("foo_bar")); + } + @Test public void testApplicationName() { GenericApplicationContext context = new GenericApplicationContext();