diff --git a/boms/geode-all-bom/src/test/resources/expected-pom.xml b/boms/geode-all-bom/src/test/resources/expected-pom.xml
index 93c148ebe9f4..f16020b7b6b5 100644
--- a/boms/geode-all-bom/src/test/resources/expected-pom.xml
+++ b/boms/geode-all-bom/src/test/resources/expected-pom.xml
@@ -245,7 +245,7 @@
joda-time
joda-time
- 2.10.9
+ 2.10.14
junit
diff --git a/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy b/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy
index cb6f37194510..f8fb6e3aae65 100644
--- a/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy
+++ b/build-tools/geode-dependency-management/src/main/groovy/org/apache/geode/gradle/plugins/DependencyConstraints.groovy
@@ -128,7 +128,7 @@ class DependencyConstraints {
api(group: 'javax.resource', name: 'javax.resource-api', version: '1.7.1')
api(group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0')
api(group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1')
- api(group: 'joda-time', name: 'joda-time', version: '2.10.9')
+ api(group: 'joda-time', name: 'joda-time', version: '2.10.14')
api(group: 'junit', name: 'junit', version: get('junit.version'))
api(group: 'mx4j', name: 'mx4j-tools', version: '3.0.1')
api(group: 'mysql', name: 'mysql-connector-java', version: '5.1.46')
diff --git a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/StandaloneClientManagementAPIAcceptanceTest.java b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/StandaloneClientManagementAPIAcceptanceTest.java
index 295974e0fed6..79ee80105df9 100644
--- a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/StandaloneClientManagementAPIAcceptanceTest.java
+++ b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/rest/StandaloneClientManagementAPIAcceptanceTest.java
@@ -31,6 +31,7 @@
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
@@ -123,18 +124,18 @@ locatorPort, httpPort, jmxPort, getSslParameters()),
.withName("startCluster")
.execute(gfshRule);
+ int expectedReturnCode = 0;
assertThat(startCluster.getProcess().exitValue())
- .as("Cluster did not start correctly")
- .isEqualTo(0);
+ .as("Cluster did not start correctly").isEqualTo(expectedReturnCode);
Process process = launchClientProcess(outputJar, httpPort);
- boolean exited = process.waitFor(getTimeout().toMillis(), MILLISECONDS);
- assertThat(exited)
- .as("Process did not exit within 10 seconds")
+ long processTimeout = getTimeout().getSeconds();
+ boolean exited = process.waitFor(processTimeout, TimeUnit.SECONDS);
+ assertThat(exited).as(String.format("Process did not exit within %d seconds", processTimeout))
.isTrue();
assertThat(process.exitValue())
- .as("Process did not exit with 0 return code")
+ .as(String.format("Process did not exit with %d return code", expectedReturnCode))
.isEqualTo(0);
GfshExecution listRegionsResult = GfshScript
@@ -162,6 +163,9 @@ private Process launchClientProcess(File outputJar, int httpPort) throws IOExcep
"jackson-annotations",
"jackson-core",
"jackson-databind",
+ "jackson-datatype-jsr310",
+ "jackson-datatype-joda",
+ "joda-time",
"httpclient",
"httpcore",
"spring-beans",
diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index 738e4cb73e7a..2b41f9c8cba8 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -1070,3 +1070,6 @@ tools/Modules/Apache_Geode_Modules-0.0.0-Tomcat.zip
tools/Modules/Apache_Geode_Modules-0.0.0-tcServer.zip
tools/Modules/Apache_Geode_Modules-0.0.0-tcServer30.zip
tools/Pulse/geode-pulse-0.0.0.war
+lib/jackson-datatype-joda-2.13.2.jar
+lib/jackson-datatype-jsr310-2.13.2.jar
+lib/joda-time-2.10.14.jar
diff --git a/geode-assembly/src/integrationTest/resources/expected_jars.txt b/geode-assembly/src/integrationTest/resources/expected_jars.txt
index 11d6f45f185a..cdd374a6d78e 100644
--- a/geode-assembly/src/integrationTest/resources/expected_jars.txt
+++ b/geode-assembly/src/integrationTest/resources/expected_jars.txt
@@ -26,6 +26,7 @@ jackson-annotations
jackson-core
jackson-databind
jackson-dataformat-yaml
+jackson-datatype-joda
jackson-datatype-jsr
jakarta.activation-api
jakarta.validation-api
@@ -51,6 +52,7 @@ jgroups
jline
jna
jna-platform
+joda-time
jopt-simple
json-path
json-smart
diff --git a/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt b/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt
index 3c6af519edc0..8105a12f207b 100644
--- a/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt
+++ b/geode-assembly/src/integrationTest/resources/gfsh_dependency_classpath.txt
@@ -87,3 +87,6 @@ jetty-http-9.4.46.v20220331.jar
jetty-io-9.4.46.v20220331.jar
jetty-util-ajax-9.4.46.v20220331.jar
jetty-util-9.4.46.v20220331.jar
+jackson-datatype-joda-2.13.2.jar
+jackson-datatype-jsr310-2.13.2.jar
+joda-time-2.10.14.jar
\ No newline at end of file
diff --git a/geode-common/build.gradle b/geode-common/build.gradle
index 1ec66dbcd752..f659493fe773 100755
--- a/geode-common/build.gradle
+++ b/geode-common/build.gradle
@@ -32,6 +32,8 @@ dependencies {
implementation('com.fasterxml.jackson.core:jackson-databind')
+ implementation('com.fasterxml.jackson.datatype:jackson-datatype-jsr310')
+ implementation('com.fasterxml.jackson.datatype:jackson-datatype-joda')
// test
testImplementation('com.github.stefanbirkner:system-rules') {
diff --git a/geode-common/src/main/java/org/apache/geode/util/internal/GeodeJsonMapper.java b/geode-common/src/main/java/org/apache/geode/util/internal/GeodeJsonMapper.java
index ce5593d2d297..ebfef92acb37 100644
--- a/geode-common/src/main/java/org/apache/geode/util/internal/GeodeJsonMapper.java
+++ b/geode-common/src/main/java/org/apache/geode/util/internal/GeodeJsonMapper.java
@@ -22,6 +22,8 @@
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
+import com.fasterxml.jackson.datatype.joda.JodaModule;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
/**
* helper class for creating various json mappers used by Geode Project
@@ -34,6 +36,8 @@ public class GeodeJsonMapper {
*/
public static ObjectMapper getMapper() {
ObjectMapper mapper = JsonMapper.builder()
+ .addModule(new JavaTimeModule())
+ .addModule(new JodaModule())
.enable(JsonParser.Feature.ALLOW_SINGLE_QUOTES)
.enable(MapperFeature.USE_BASE_TYPE_AS_DEFAULT_IMPL)
.build();
@@ -41,6 +45,12 @@ public static ObjectMapper getMapper() {
return mapper;
}
+ public static ObjectMapper getMapperWithAlwaysInclusion() {
+ ObjectMapper mapper = getMapper();
+ mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS);
+ return mapper;
+ }
+
public static ObjectMapper getMapperIgnoringUnknownProperties() {
ObjectMapper mapper = getMapper();
mapper.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
diff --git a/geode-common/src/test/resources/expected-pom.xml b/geode-common/src/test/resources/expected-pom.xml
index 2f323add8d24..1c512ff34f95 100644
--- a/geode-common/src/test/resources/expected-pom.xml
+++ b/geode-common/src/test/resources/expected-pom.xml
@@ -51,5 +51,15 @@
jackson-databind
runtime
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ runtime
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-joda
+ runtime
+
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/beans/DistributedSystemMBeanIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/beans/DistributedSystemMBeanIntegrationTest.java
index 920df234499d..49471dcf0dd3 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/beans/DistributedSystemMBeanIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/beans/DistributedSystemMBeanIntegrationTest.java
@@ -21,6 +21,8 @@
import java.time.LocalDate;
import java.util.Date;
+import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
@@ -63,10 +65,12 @@ public class DistributedSystemMBeanIntegrationTest {
private static Date date;
private static java.sql.Date sqlDate;
private static LocalDate localDate;
+ private static DateTime jodaDateTime;
@BeforeClass
public static void setupClass() throws Exception {
Region