diff --git a/spring-cloud-cloudfoundry-discovery/src/main/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClient.java b/spring-cloud-cloudfoundry-discovery/src/main/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClient.java index c1606ae..4d5726a 100644 --- a/spring-cloud-cloudfoundry-discovery/src/main/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClient.java +++ b/spring-cloud-cloudfoundry-discovery/src/main/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClient.java @@ -16,7 +16,6 @@ package org.springframework.cloud.cloudfoundry.discovery; -import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; @@ -33,14 +32,11 @@ import org.cloudfoundry.client.lib.domain.CloudApplication; import org.cloudfoundry.client.lib.domain.InstanceInfo; import org.cloudfoundry.client.lib.domain.InstanceState; import org.cloudfoundry.client.lib.domain.InstancesInfo; +import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.client.DefaultServiceInstance; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.core.env.Environment; -import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; /** * A Cloud Foundry v2 API-aware implementation of the {@link DiscoveryClient discovery @@ -52,7 +48,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; * You need to provide an instance of the {@link CloudFoundryClient}. A workable * configuration looks like this: *
- * + * *
* @Bean
* CloudFoundryClient cloudFoundryClient(
@@ -84,32 +80,14 @@ public class CloudFoundryDiscoveryClient implements DiscoveryClient {
private static final Log log = LogFactory.getLog(CloudFoundryDiscoveryClient.class);
- private final ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build();
-
private final CloudFoundryClient cloudFoundryClient;
- private final String vcapApplicationName;
+ @Value("${vcap.application.name:${spring.application.name:application}}")
+ private String vcapApplicationName = "application";
public CloudFoundryDiscoveryClient(CloudFoundryClient cloudFoundryClient,
Environment environment) {
-
this.cloudFoundryClient = cloudFoundryClient;
-
- String vcapApplication = environment.getProperty("VCAP_APPLICATION");
-
- try {
- JsonNode jsonNode = objectMapper.readTree(vcapApplication);
- JsonNode appNameNode = jsonNode.get("application_name");
-
- this.vcapApplicationName = appNameNode.toString().replaceAll("\"", "");
-
- log.debug("Current ServiceInstance information...");
- log.debug("\tvcapApplicationName: " + this.vcapApplicationName);
-
- }
- catch (IOException e) {
- throw new RuntimeException(e);
- }
}
@Override
@@ -187,7 +165,7 @@ public class CloudFoundryDiscoveryClient implements DiscoveryClient {
private final CloudApplication cloudApplication;
public CloudApplication getCloudApplication() {
- return cloudApplication;
+ return this.cloudApplication;
}
public CloudFoundryServiceInstance(CloudApplication ca) {
diff --git a/spring-cloud-cloudfoundry-discovery/src/test/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClientTest.java b/spring-cloud-cloudfoundry-discovery/src/test/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClientTest.java
index 2946804..62dfdbb 100644
--- a/spring-cloud-cloudfoundry-discovery/src/test/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClientTest.java
+++ b/spring-cloud-cloudfoundry-discovery/src/test/java/org/springframework/cloud/cloudfoundry/discovery/CloudFoundryDiscoveryClientTest.java
@@ -16,6 +16,17 @@
package org.springframework.cloud.cloudfoundry.discovery;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.cloudfoundry.client.lib.CloudFoundryClient;
@@ -31,15 +42,6 @@ import org.springframework.cloud.client.ServiceInstance;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import static org.junit.Assert.*;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.BDDMockito.mock;
-
/**
* @author Josh Long
*/
@@ -71,10 +73,10 @@ public class CloudFoundryDiscoveryClientTest {
.willReturn(
"{\"limits\":{\"mem\":1024,\"disk\":1024,\"fds\":16384},\"application_version\":"
+ "\"36eff082-96d6-498f-8214-508fda72ba65\",\"application_name\":\""
- + hiServiceServiceId
+ + this.hiServiceServiceId
+ "\",\"application_uris\""
+ ":[\""
- + hiServiceServiceId
+ + this.hiServiceServiceId
+ ".cfapps.io\"],\"version\":\"36eff082-96d6-498f-8214-508fda72ba65\",\"name\":"
+ "\"hi-service\",\"space_name\":\"joshlong\",\"space_id\":\"e0cd969c-3461-41ae-abde-4e11bb5acbd1\","
+ "\"uris\":[\"hi-service.cfapps.io\"],\"users\":null,\"application_id\":\"af350f7c-88c4-4e35-a04e-698a1dbc7354\","
@@ -90,9 +92,9 @@ public class CloudFoundryDiscoveryClientTest {
given(this.cloudFoundryClient.getApplications()).willReturn(cloudApplications);
- cloudApplication = cloudApplications.get(0);
+ this.cloudApplication = cloudApplications.get(0);
given(this.cloudFoundryClient.getApplication(this.hiServiceServiceId))
- .willReturn(cloudApplication);
+ .willReturn(this.cloudApplication);
given(this.cloudFoundryClient.getApplication(this.hiServiceServiceId))
.willReturn(this.cloudApplication);
@@ -107,7 +109,7 @@ public class CloudFoundryDiscoveryClientTest {
.willReturn(instancesInfo);
this.cloudFoundryDiscoveryClient = new CloudFoundryDiscoveryClient(
- cloudFoundryClient, environment);
+ this.cloudFoundryClient, environment);
}
@Test
@@ -132,13 +134,15 @@ public class CloudFoundryDiscoveryClientTest {
@Test
public void testLocalServiceInstanceRunning() {
+ given(this.cloudFoundryClient.getApplication("application"))
+ .willReturn(this.cloudApplication);
InstanceInfo instanceInfo = mock(InstanceInfo.class);
InstancesInfo instancesInfo = mock(InstancesInfo.class);
given(instancesInfo.getInstances()).willReturn(
Collections.singletonList(instanceInfo));
given(instanceInfo.getState()).willReturn(InstanceState.RUNNING);
- given(cloudFoundryClient.getApplicationInstances(this.cloudApplication))
+ given(this.cloudFoundryClient.getApplicationInstances(this.cloudApplication))
.willReturn(instancesInfo);
ServiceInstance localServiceInstance = this.cloudFoundryDiscoveryClient
@@ -157,7 +161,7 @@ public class CloudFoundryDiscoveryClientTest {
Collections.singletonList(instanceInfo));
given(instanceInfo.getState()).willReturn(InstanceState.CRASHED);
- given(cloudFoundryClient.getApplicationInstances(this.cloudApplication))
+ given(this.cloudFoundryClient.getApplicationInstances(this.cloudApplication))
.willReturn(instancesInfo);
ServiceInstance localServiceInstance = this.cloudFoundryDiscoveryClient
@@ -168,7 +172,7 @@ public class CloudFoundryDiscoveryClientTest {
@Test
public void testLocalServiceInstanceNotFoundg() {
- given(cloudFoundryClient.getApplicationInstances(this.cloudApplication))
+ given(this.cloudFoundryClient.getApplicationInstances(this.cloudApplication))
.willThrow(new CloudFoundryException(HttpStatus.NOT_FOUND));
ServiceInstance localServiceInstance = this.cloudFoundryDiscoveryClient