Browse Source

Add utility method to provide a service if to IdUtils (#721)

pull/735/head
Ryan Baxter 5 years ago committed by GitHub
parent
commit
5ed5bc9253
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      spring-cloud-commons/src/main/java/org/springframework/cloud/commons/util/IdUtils.java
  2. 37
      spring-cloud-commons/src/test/java/org/springframework/cloud/commons/util/IdUtilsTests.java

22
spring-cloud-commons/src/main/java/org/springframework/cloud/commons/util/IdUtils.java

@ -26,6 +26,11 @@ public final class IdUtils {
private static final String SEPARATOR = ":"; private static final String SEPARATOR = ":";
// @checkstyle:off
public static final String DEFAULT_SERVICE_ID_STRING = "${vcap.application.name:${spring.application.name:application}}:${vcap.application.instance_index:${spring.application.index:${local.server.port:${server.port:0}}}}:${vcap.application.instance_id:${cachedrandom.${vcap.application.name:${spring.application.name:application}}.value}}";
// @checkstyle:on
private IdUtils() { private IdUtils() {
throw new IllegalStateException("Can't instantiate a utility class"); throw new IllegalStateException("Can't instantiate a utility class");
} }
@ -55,6 +60,23 @@ public final class IdUtils {
return combineParts(namePart, SEPARATOR, indexPart); return combineParts(namePart, SEPARATOR, indexPart);
} }
/**
* Gets the resolved service id.
* @param resolver A property resolved
* @return A unique id that can be used to uniquely identify a service
*/
public static String getResolvedServiceId(PropertyResolver resolver) {
return resolver.resolvePlaceholders(getUnresolvedServiceId());
}
/**
* Gets an the unresolved service id.
* @return The combination of properties to create a unique service id
*/
public static String getUnresolvedServiceId() {
return DEFAULT_SERVICE_ID_STRING;
}
public static String combineParts(String firstPart, String separator, public static String combineParts(String firstPart, String separator,
String secondPart) { String secondPart) {
String combined = null; String combined = null;

37
spring-cloud-commons/src/test/java/org/springframework/cloud/commons/util/IdUtilsTests.java

@ -111,4 +111,41 @@ public class IdUtilsTests {
.as("instanceId was wrong"); .as("instanceId was wrong");
} }
@Test
public void testUnresolvedServiceId() {
then(IdUtils.DEFAULT_SERVICE_ID_STRING)
.isEqualTo(IdUtils.getUnresolvedServiceId());
}
@Test
public void testServiceIdDefaults() {
this.env.setProperty("cachedrandom.application.value", "123abc");
then("application:0:123abc").isEqualTo(IdUtils.getResolvedServiceId(this.env));
}
@Test
public void testVCAPServiceId() {
env.setProperty("vcap.application.name", "vcapname");
env.setProperty("vcap.application.instance_index", "vcapindex");
env.setProperty("vcap.application.instance_id", "vcapid");
then("vcapname:vcapindex:vcapid").isEqualTo(IdUtils.getResolvedServiceId(env));
}
@Test
public void testSpringServiceId() {
env.setProperty("spring.application.name", "springname");
env.setProperty("spring.application.index", "springindex");
env.setProperty("cachedrandom.springname.value", "123abc");
then("springname:springindex:123abc")
.isEqualTo(IdUtils.getResolvedServiceId(env));
}
@Test
public void testServerPortServiceId() {
env.setProperty("spring.application.name", "springname");
env.setProperty("server.port", "1234");
env.setProperty("cachedrandom.springname.value", "123abc");
then("springname:1234:123abc").isEqualTo(IdUtils.getResolvedServiceId(env));
}
} }

Loading…
Cancel
Save