From 51bebad6517b713ceb9e31ec3187cbe65b6ca8a7 Mon Sep 17 00:00:00 2001 From: meyerg Date: Thu, 28 Mar 2024 12:06:40 -0500 Subject: [PATCH 1/4] Support for R2DBC connections in DataSource processor. --- .../CfDataSourceEnvironmentPostProcessor.java | 92 +++++++++++++++++++ .../cfenv/spring/boot/DataSourceTests.java | 74 +++++++++++++++ .../src/test/resources/vcap-services-tls.json | 25 +++++ 3 files changed, 191 insertions(+) create mode 100644 java-cfenv-boot/src/test/resources/vcap-services-tls.json diff --git a/java-cfenv-boot/src/main/java/io/pivotal/cfenv/spring/boot/CfDataSourceEnvironmentPostProcessor.java b/java-cfenv-boot/src/main/java/io/pivotal/cfenv/spring/boot/CfDataSourceEnvironmentPostProcessor.java index 6200a536..a7de0571 100644 --- a/java-cfenv-boot/src/main/java/io/pivotal/cfenv/spring/boot/CfDataSourceEnvironmentPostProcessor.java +++ b/java-cfenv-boot/src/main/java/io/pivotal/cfenv/spring/boot/CfDataSourceEnvironmentPostProcessor.java @@ -15,6 +15,8 @@ */ package io.pivotal.cfenv.spring.boot; +import java.util.Collections; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -38,6 +40,7 @@ /** * @author Mark Pollack * @author David Turanski + * @author Greg Meyer */ public class CfDataSourceEnvironmentPostProcessor implements CfServiceEnablingEnvironmentPostProcessor, Ordered, ApplicationListener { @@ -46,6 +49,16 @@ public class CfDataSourceEnvironmentPostProcessor implements CfServiceEnablingEn private static int invocationCount; + /** + * MySQL connection protocol constant. + */ + private static final String MYSQL_PROTOCOL = "mysql"; + + /** + * MariaDB connection protocol constant. + */ + private static final String MARIADB_PROTOCOL = "mariadb"; + // After ConfigFileApplicationListener so values from files can be used here private int order = ConfigDataEnvironmentPostProcessor.ORDER + 1; @@ -95,6 +108,42 @@ public void postProcessEnvironment(ConfigurableEnvironment environment, if (driverClassName != null) { properties.put("spring.datasource.driver-class-name", driverClassName); } + + /* R2DBC processing + * Split query param options and URL into two string + * and move options to spring.r2dbc.properties.