diff --git a/spring-cloud-cloudfoundry-connector/build.gradle b/spring-cloud-cloudfoundry-connector/build.gradle index 5624504..e11a248 100644 --- a/spring-cloud-cloudfoundry-connector/build.gradle +++ b/spring-cloud-cloudfoundry-connector/build.gradle @@ -13,20 +13,21 @@ apply plugin: 'com.github.johnrengelman.shadow' apply from: "publish-maven.gradle" ext { - jsonVersion = "20171018" + jacksonVersion = "2.3.3" } dependencies { compile project(':spring-cloud-connectors-core') - compile("org.json:json:$jsonVersion") + compile("com.fasterxml.jackson.core:jackson-core:$jacksonVersion") + compile("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") } shadowJar { classifier = null dependencies { - include dependency('org.json:json') + include dependency('com.fasterxml.jackson.core:jackson-.*') } - relocate 'org.json', 'org.springframework.cloud.cloudfoundry.org.json' + relocate 'com.fasterxml.jackson', 'org.springframework.cloud.cloudfoundry.com.fasterxml.jackson' } assemble.dependsOn shadowJar diff --git a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnector.java b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnector.java index 232bb40..4b64522 100644 --- a/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnector.java +++ b/spring-cloud-cloudfoundry-connector/src/main/java/org/springframework/cloud/cloudfoundry/CloudFoundryConnector.java @@ -4,10 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.ServiceLoader; -import java.util.function.Function; -import java.util.stream.Collectors; -import org.json.JSONObject; import org.springframework.cloud.AbstractCloudConnector; import org.springframework.cloud.CloudException; import org.springframework.cloud.FallbackServiceInfoCreator; @@ -15,6 +12,8 @@ import org.springframework.cloud.app.ApplicationInstanceInfo; import org.springframework.cloud.service.BaseServiceInfo; import org.springframework.cloud.util.EnvironmentAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * * @author Ramnivas Laddad @@ -22,6 +21,7 @@ import org.springframework.cloud.util.EnvironmentAccessor; */ public class CloudFoundryConnector extends AbstractCloudConnector> { + private ObjectMapper objectMapper = new ObjectMapper(); private EnvironmentAccessor environment = new EnvironmentAccessor(); private ApplicationInstanceInfoCreator applicationInstanceInfoCreator = new ApplicationInstanceInfoCreator(); @@ -43,8 +43,8 @@ public class CloudFoundryConnector extends AbstractCloudConnector rawApplicationInstanceInfo - = new JSONObject(environment.getEnvValue("VCAP_APPLICATION")).toMap(); + Map rawApplicationInstanceInfo + = objectMapper.readValue(environment.getEnvValue("VCAP_APPLICATION"), Map.class); return applicationInstanceInfoCreator.createApplicationInstanceInfo(rawApplicationInstanceInfo); } catch (Exception e) { throw new CloudException(e); @@ -71,8 +71,7 @@ public class CloudFoundryConnector extends AbstractCloudConnector 0) { try { - rawServices = new CloudFoundryRawServiceData(new JSONObject(servicesString).toMap().entrySet().stream() - .collect(Collectors.toMap(Map.Entry::getKey, entry -> (List>) entry.getValue()))); + rawServices = objectMapper.readValue(servicesString, CloudFoundryRawServiceData.class); } catch (Exception e) { throw new CloudException(e); } diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java index b7da29f..c1b3cb2 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/AbstractCloudFoundryConnectorTest.java @@ -8,7 +8,6 @@ import java.util.List; import java.util.Map; import java.util.Scanner; -import org.json.JSONObject; import org.junit.Before; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -16,6 +15,8 @@ import org.springframework.cloud.service.ServiceInfo; import org.springframework.cloud.service.UriBasedServiceInfo; import org.springframework.cloud.util.EnvironmentAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; + import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -35,6 +36,8 @@ public abstract class AbstractCloudFoundryConnectorTest { protected static final int port = 1234; protected static String username = "myuser"; protected static final String password = "mypass"; + + private static ObjectMapper objectMapper = new ObjectMapper(); @Before public void setup() { @@ -113,7 +116,7 @@ public abstract class AbstractCloudFoundryConnectorTest { @SuppressWarnings("unchecked") private static String getServiceLabel(String servicePayload) { try { - Map serviceMap = new JSONObject(servicePayload).toMap(); + Map serviceMap = objectMapper.readValue(servicePayload, Map.class); return serviceMap.get("label").toString(); } catch (Exception e) { return null; diff --git a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CassandraServiceInfoCreatorTests.java b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CassandraServiceInfoCreatorTests.java index f45320b..948cffa 100644 --- a/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CassandraServiceInfoCreatorTests.java +++ b/spring-cloud-cloudfoundry-connector/src/test/java/org/springframework/cloud/cloudfoundry/CassandraServiceInfoCreatorTests.java @@ -22,10 +22,11 @@ import static org.junit.Assert.*; import java.util.List; import java.util.Map; -import org.json.JSONObject; import org.junit.Test; import org.springframework.cloud.service.common.CassandraServiceInfo; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * Unit tests for link {@link CassandraServiceInfoCreator}. * @@ -33,6 +34,8 @@ import org.springframework.cloud.service.common.CassandraServiceInfo; */ public class CassandraServiceInfoCreatorTests extends AbstractCloudFoundryConnectorTest { + private ObjectMapper mapper = new ObjectMapper(); + @Test public void shouldCreateServiceInfo() throws Exception { @@ -88,7 +91,7 @@ public class CassandraServiceInfoCreatorTests extends AbstractCloudFoundryConnec } private Map readServiceData(String resource) throws java.io.IOException { - return new JSONObject(readTestDataFile(resource)).toMap(); + return mapper.readValue(readTestDataFile(resource), Map.class); } @SuppressWarnings("unchecked")