From afcdbd2bc03a9df3b5a45b6f7dfcc2b5e52df404 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 5 Feb 2019 22:09:32 +0100 Subject: [PATCH] XPack: core/ccr/Security-cli migration to java-time (#38415) part of the migrating joda time work. refactoring x-pack plugins usages of joda to java-time refers #27330 --- .../AutoFollowStatsMonitoringDocTests.java | 10 ++++----- .../ccr/FollowStatsMonitoringDocTests.java | 10 ++++----- .../xpack/core/scheduler/Cron.java | 9 ++++---- .../xpack/core/ssl/cert/CertificateInfo.java | 15 +++++++------ .../ml/action/PostDataFlushResponseTests.java | 6 +++-- .../ml/calendars/ScheduledEventTests.java | 7 +++--- .../autodetect/state/DataCountsTests.java | 12 ++++++---- .../xpack/core/ssl/SSLServiceTests.java | 22 +++++++++---------- .../xpack/security/cli/CertGenUtils.java | 12 +++++----- 9 files changed, 55 insertions(+), 48 deletions(-) diff --git a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/AutoFollowStatsMonitoringDocTests.java b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/AutoFollowStatsMonitoringDocTests.java index a764086f889bb..90d5d0c6e9277 100644 --- a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/AutoFollowStatsMonitoringDocTests.java +++ b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/AutoFollowStatsMonitoringDocTests.java @@ -9,6 +9,7 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.collect.Tuple; +import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.XContentType; @@ -19,11 +20,10 @@ import org.elasticsearch.xpack.core.monitoring.exporter.MonitoringDoc; import org.elasticsearch.xpack.core.monitoring.exporter.MonitoringTemplateUtils; import org.elasticsearch.xpack.monitoring.exporter.BaseMonitoringDocTestCase; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; import org.junit.Before; import java.io.IOException; +import java.time.ZoneOffset; import java.util.Collections; import java.util.List; import java.util.Map; @@ -38,7 +38,7 @@ import static org.hamcrest.Matchers.nullValue; public class AutoFollowStatsMonitoringDocTests extends BaseMonitoringDocTestCase { - + private static final DateFormatter DATE_TIME_FORMATTER = DateFormatter.forPattern("strict_date_time").withZone(ZoneOffset.UTC); private AutoFollowStats autoFollowStats; @Before @@ -94,7 +94,7 @@ public void testToXContent() throws IOException { equalTo( "{" + "\"cluster_uuid\":\"_cluster\"," - + "\"timestamp\":\"" + new DateTime(timestamp, DateTimeZone.UTC).toString() + "\"," + + "\"timestamp\":\"" + DATE_TIME_FORMATTER.formatMillis(timestamp) + "\"," + "\"interval_ms\":" + intervalMillis + "," + "\"type\":\"ccr_auto_follow_stats\"," + "\"source_node\":{" @@ -103,7 +103,7 @@ public void testToXContent() throws IOException { + "\"transport_address\":\"_addr\"," + "\"ip\":\"_ip\"," + "\"name\":\"_name\"," - + "\"timestamp\":\"" + new DateTime(nodeTimestamp, DateTimeZone.UTC).toString() + "\"" + + "\"timestamp\":\"" + DATE_TIME_FORMATTER.formatMillis(nodeTimestamp) + "\"" + "}," + "\"ccr_auto_follow_stats\":{" + "\"number_of_failed_follow_indices\":" + autoFollowStats.getNumberOfFailedFollowIndices() + "," diff --git a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/FollowStatsMonitoringDocTests.java b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/FollowStatsMonitoringDocTests.java index 33affe45fc46c..dc3c4793d973f 100644 --- a/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/FollowStatsMonitoringDocTests.java +++ b/x-pack/plugin/ccr/src/test/java/org/elasticsearch/xpack/monitoring/collector/ccr/FollowStatsMonitoringDocTests.java @@ -10,6 +10,7 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.collect.Tuple; +import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.XContentType; @@ -19,11 +20,10 @@ import org.elasticsearch.xpack.core.monitoring.exporter.MonitoringDoc; import org.elasticsearch.xpack.core.monitoring.exporter.MonitoringTemplateUtils; import org.elasticsearch.xpack.monitoring.exporter.BaseMonitoringDocTestCase; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; import org.junit.Before; import java.io.IOException; +import java.time.ZoneOffset; import java.util.Collections; import java.util.Map; import java.util.NavigableMap; @@ -40,7 +40,7 @@ import static org.mockito.Mockito.mock; public class FollowStatsMonitoringDocTests extends BaseMonitoringDocTestCase { - + private static final DateFormatter DATE_TIME_FORMATTER = DateFormatter.forPattern("strict_date_time").withZone(ZoneOffset.UTC); private ShardFollowNodeTaskStatus status; @Override @@ -146,7 +146,7 @@ public void testToXContent() throws IOException { equalTo( "{" + "\"cluster_uuid\":\"_cluster\"," - + "\"timestamp\":\"" + new DateTime(timestamp, DateTimeZone.UTC).toString() + "\"," + + "\"timestamp\":\"" + DATE_TIME_FORMATTER.formatMillis(timestamp) + "\"," + "\"interval_ms\":" + intervalMillis + "," + "\"type\":\"ccr_stats\"," + "\"source_node\":{" @@ -155,7 +155,7 @@ public void testToXContent() throws IOException { + "\"transport_address\":\"_addr\"," + "\"ip\":\"_ip\"," + "\"name\":\"_name\"," - + "\"timestamp\":\"" + new DateTime(nodeTimestamp, DateTimeZone.UTC).toString() + "\"" + + "\"timestamp\":\"" + DATE_TIME_FORMATTER.formatMillis(nodeTimestamp) + "\"" + "}," + "\"ccr_stats\":{" + "\"remote_cluster\":\"leader_cluster\"," diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/scheduler/Cron.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/scheduler/Cron.java index 607b49be1f453..6391251bbcb26 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/scheduler/Cron.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/scheduler/Cron.java @@ -6,13 +6,12 @@ package org.elasticsearch.xpack.core.scheduler; import org.elasticsearch.ElasticsearchParseException; +import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.common.xcontent.ToXContentFragment; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.joda.time.DateTimeZone; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; import java.io.IOException; +import java.time.ZoneOffset; import java.util.Calendar; import java.util.HashMap; import java.util.Iterator; @@ -199,8 +198,8 @@ * @author Refactoring from CronTrigger to CronExpression by Aaron Craven */ public class Cron implements ToXContentFragment { - protected static final TimeZone UTC = DateTimeZone.UTC.toTimeZone(); - protected static final DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-dd'T'HH:mm:ss"); + protected static final TimeZone UTC = TimeZone.getTimeZone(ZoneOffset.UTC); + protected static final DateFormatter formatter = DateFormatter.forPattern("yyyy-MM-dd'T'HH:mm:ss"); private static final int SECOND = 0; private static final int MINUTE = 1; diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ssl/cert/CertificateInfo.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ssl/cert/CertificateInfo.java index cb05a67886393..d361ad8fbadce 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ssl/cert/CertificateInfo.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ssl/cert/CertificateInfo.java @@ -10,11 +10,12 @@ import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentBuilder; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; import java.io.IOException; import java.security.cert.X509Certificate; +import java.time.Instant; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; import java.util.Objects; /** @@ -27,7 +28,7 @@ public class CertificateInfo implements ToXContentObject, Writeable { private final String subjectDn; private final String serialNumber; private final boolean hasPrivateKey; - private final DateTime expiry; + private final ZonedDateTime expiry; public CertificateInfo(String path, String format, String alias, boolean hasPrivateKey, X509Certificate certificate) { Objects.requireNonNull(certificate, "Certificate cannot be null"); @@ -37,7 +38,7 @@ public CertificateInfo(String path, String format, String alias, boolean hasPriv this.subjectDn = Objects.requireNonNull(certificate.getSubjectDN().getName()); this.serialNumber = certificate.getSerialNumber().toString(16); this.hasPrivateKey = hasPrivateKey; - this.expiry = new DateTime(certificate.getNotAfter(), DateTimeZone.UTC); + this.expiry = certificate.getNotAfter().toInstant().atZone(ZoneOffset.UTC); } public CertificateInfo(StreamInput in) throws IOException { @@ -47,7 +48,7 @@ public CertificateInfo(StreamInput in) throws IOException { this.subjectDn = in.readString(); this.serialNumber = in.readString(); this.hasPrivateKey = in.readBoolean(); - this.expiry = new DateTime(in.readLong(), DateTimeZone.UTC); + this.expiry = Instant.ofEpochMilli(in.readLong()).atZone(ZoneOffset.UTC); } @Override @@ -58,7 +59,7 @@ public void writeTo(StreamOutput out) throws IOException { out.writeString(subjectDn); out.writeString(serialNumber); out.writeBoolean(hasPrivateKey); - out.writeLong(expiry.getMillis()); + out.writeLong(expiry.toInstant().toEpochMilli()); } public String path() { @@ -81,7 +82,7 @@ public String serialNumber() { return serialNumber; } - public DateTime expiry() { + public ZonedDateTime expiry() { return expiry; } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/PostDataFlushResponseTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/PostDataFlushResponseTests.java index 88826fb096ae4..4c042db3885bb 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/PostDataFlushResponseTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/action/PostDataFlushResponseTests.java @@ -8,13 +8,15 @@ import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.test.AbstractWireSerializingTestCase; import org.elasticsearch.xpack.core.ml.action.FlushJobAction.Response; -import org.joda.time.DateTime; + +import java.time.ZonedDateTime; +import java.util.Date; public class PostDataFlushResponseTests extends AbstractWireSerializingTestCase { @Override protected Response createTestInstance() { - return new Response(randomBoolean(), new DateTime(randomDateTimeZone()).toDate()); + return new Response(randomBoolean(), Date.from(ZonedDateTime.now(randomZone()).toInstant())); } @Override diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/calendars/ScheduledEventTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/calendars/ScheduledEventTests.java index 3d6c317542279..05209628542fe 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/calendars/ScheduledEventTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/calendars/ScheduledEventTests.java @@ -15,10 +15,9 @@ import org.elasticsearch.xpack.core.ml.job.config.Operator; import org.elasticsearch.xpack.core.ml.job.config.RuleAction; import org.elasticsearch.xpack.core.ml.job.config.RuleCondition; -import org.joda.time.DateTime; import java.io.IOException; -import java.time.Instant; +import java.time.Clock; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.util.EnumSet; @@ -29,7 +28,7 @@ public class ScheduledEventTests extends AbstractSerializingTestCase { public static ScheduledEvent createScheduledEvent(String calendarId) { - ZonedDateTime start = ZonedDateTime.ofInstant(Instant.ofEpochMilli(new DateTime(randomDateTimeZone()).getMillis()), ZoneOffset.UTC); + ZonedDateTime start = Clock.systemUTC().instant().atZone(ZoneOffset.UTC); return new ScheduledEvent(randomAlphaOfLength(10), start, start.plusSeconds(randomIntBetween(1, 10000)), calendarId, null); } @@ -120,4 +119,4 @@ public void testLenientParser() throws IOException { ScheduledEvent.LENIENT_PARSER.apply(parser, null); } } -} \ No newline at end of file +} diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/job/process/autodetect/state/DataCountsTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/job/process/autodetect/state/DataCountsTests.java index 091e6887701d7..a4d75999378f2 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/job/process/autodetect/state/DataCountsTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ml/job/process/autodetect/state/DataCountsTests.java @@ -8,8 +8,8 @@ import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.test.AbstractSerializingTestCase; -import org.joda.time.DateTime; +import java.time.ZonedDateTime; import java.util.Date; import static org.hamcrest.Matchers.greaterThan; @@ -21,9 +21,13 @@ public static DataCounts createTestInstance(String jobId) { randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), randomIntBetween(1, 1_000_000), - new DateTime(randomDateTimeZone()).toDate(), new DateTime(randomDateTimeZone()).toDate(), - new DateTime(randomDateTimeZone()).toDate(), new DateTime(randomDateTimeZone()).toDate(), - new DateTime(randomDateTimeZone()).toDate()); + dateWithRandomTimeZone(), dateWithRandomTimeZone(), + dateWithRandomTimeZone(), dateWithRandomTimeZone(), + dateWithRandomTimeZone()); + } + + private static Date dateWithRandomTimeZone() { + return Date.from(ZonedDateTime.now(randomZone()).toInstant()); } @Override diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ssl/SSLServiceTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ssl/SSLServiceTests.java index 9b697e9f08f01..ae48de463e8f3 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ssl/SSLServiceTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ssl/SSLServiceTests.java @@ -28,7 +28,6 @@ import org.elasticsearch.test.junit.annotations.Network; import org.elasticsearch.xpack.core.XPackSettings; import org.elasticsearch.xpack.core.ssl.cert.CertificateInfo; -import org.joda.time.DateTime; import org.junit.Before; import org.mockito.ArgumentCaptor; @@ -49,6 +48,7 @@ import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.security.cert.Certificate; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -563,7 +563,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("PEM")); assertThat(cert.serialNumber(), equalTo("580db8ad52bb168a4080e1df122a3f56")); assertThat(cert.subjectDn(), equalTo("CN=ad-ELASTICSEARCHAD-CA, DC=ad, DC=test, DC=elasticsearch, DC=com")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2029-08-27T16:32:42Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2029-08-27T16:32:42Z"))); assertThat(cert.hasPrivateKey(), equalTo(false)); cert = iterator.next(); @@ -572,7 +572,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("580db8ad52bb168a4080e1df122a3f56")); assertThat(cert.subjectDn(), equalTo("CN=ad-ELASTICSEARCHAD-CA, DC=ad, DC=test, DC=elasticsearch, DC=com")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2029-08-27T16:32:42Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2029-08-27T16:32:42Z"))); assertThat(cert.hasPrivateKey(), equalTo(false)); cert = iterator.next(); @@ -581,7 +581,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("3151a81eec8d4e34c56a8466a8510bcfbe63cc31")); assertThat(cert.subjectDn(), equalTo("CN=samba4")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2021-02-14T17:49:11.000Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2021-02-14T17:49:11.000Z"))); assertThat(cert.hasPrivateKey(), equalTo(false)); cert = iterator.next(); @@ -590,7 +590,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("d3850b2b1995ad5f")); assertThat(cert.subjectDn(), equalTo("CN=OpenLDAP, OU=Elasticsearch, O=Elastic, L=Mountain View, ST=CA, C=US")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2027-07-23T16:41:14Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2027-07-23T16:41:14Z"))); assertThat(cert.hasPrivateKey(), equalTo(false)); cert = iterator.next(); @@ -599,7 +599,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("b9d497f2924bbe29")); assertThat(cert.subjectDn(), equalTo("CN=Elasticsearch Test Client, OU=elasticsearch, O=org")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2019-09-22T18:52:55Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2019-09-22T18:52:55Z"))); assertThat(cert.hasPrivateKey(), equalTo(false)); cert = iterator.next(); @@ -608,7 +608,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("c0ea4216e8ff0fd8")); assertThat(cert.subjectDn(), equalTo("CN=testnode-client-profile")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2019-09-22T18:52:56Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2019-09-22T18:52:56Z"))); assertThat(cert.hasPrivateKey(), equalTo(false)); cert = iterator.next(); @@ -617,7 +617,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("223c736a")); assertThat(cert.subjectDn(), equalTo("CN=Elasticsearch Test Node")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2045-10-02T09:43:18.000Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2045-10-02T09:43:18.000Z"))); assertThat(cert.hasPrivateKey(), equalTo(true)); cert = iterator.next(); @@ -626,7 +626,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("7268203b")); assertThat(cert.subjectDn(), equalTo("CN=Elasticsearch Test Node")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2045-10-02T09:36:10.000Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2045-10-02T09:36:10.000Z"))); assertThat(cert.hasPrivateKey(), equalTo(true)); cert = iterator.next(); @@ -635,7 +635,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("jks")); assertThat(cert.serialNumber(), equalTo("b8b96c37e332cccb")); assertThat(cert.subjectDn(), equalTo("CN=Elasticsearch Test Node, OU=elasticsearch, O=org")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2019-09-22T18:52:57.000Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2019-09-22T18:52:57.000Z"))); assertThat(cert.hasPrivateKey(), equalTo(true)); cert = iterator.next(); @@ -644,7 +644,7 @@ public void testReadCertificateInformation() throws Exception { assertThat(cert.format(), equalTo("PKCS12")); assertThat(cert.serialNumber(), equalTo("b8b96c37e332cccb")); assertThat(cert.subjectDn(), equalTo("CN=Elasticsearch Test Node, OU=elasticsearch, O=org")); - assertThat(cert.expiry(), equalTo(DateTime.parse("2019-09-22T18:52:57Z"))); + assertThat(cert.expiry(), equalTo(ZonedDateTime.parse("2019-09-22T18:52:57Z"))); assertThat(cert.hasPrivateKey(), equalTo(true)); assertFalse(iterator.hasNext()); diff --git a/x-pack/plugin/security/cli/src/main/java/org/elasticsearch/xpack/security/cli/CertGenUtils.java b/x-pack/plugin/security/cli/src/main/java/org/elasticsearch/xpack/security/cli/CertGenUtils.java index 0b88f3da40a14..af6a71310569a 100644 --- a/x-pack/plugin/security/cli/src/main/java/org/elasticsearch/xpack/security/cli/CertGenUtils.java +++ b/x-pack/plugin/security/cli/src/main/java/org/elasticsearch/xpack/security/cli/CertGenUtils.java @@ -34,8 +34,6 @@ import org.elasticsearch.common.SuppressForbidden; import org.elasticsearch.common.network.InetAddressHelper; import org.elasticsearch.common.network.NetworkAddress; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; import javax.net.ssl.X509ExtendedKeyManager; import javax.net.ssl.X509ExtendedTrustManager; @@ -54,6 +52,9 @@ import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import java.sql.Date; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; import java.util.HashSet; import java.util.Locale; import java.util.Objects; @@ -152,11 +153,11 @@ private static X509Certificate generateSignedCertificate(X500Principal principal int days, String signatureAlgorithm) throws NoSuchAlgorithmException, CertificateException, CertIOException, OperatorCreationException { Objects.requireNonNull(keyPair, "Key-Pair must not be null"); - final DateTime notBefore = new DateTime(DateTimeZone.UTC); + final ZonedDateTime notBefore = ZonedDateTime.now(ZoneOffset.UTC); if (days < 1) { throw new IllegalArgumentException("the certificate must be valid for at least one day"); } - final DateTime notAfter = notBefore.plusDays(days); + final ZonedDateTime notAfter = notBefore.plusDays(days); final BigInteger serial = CertGenUtils.getSerial(); JcaX509ExtensionUtils extUtils = new JcaX509ExtensionUtils(); @@ -176,7 +177,8 @@ private static X509Certificate generateSignedCertificate(X500Principal principal JcaX509v3CertificateBuilder builder = new JcaX509v3CertificateBuilder(issuer, serial, - new Time(notBefore.toDate(), Locale.ROOT), new Time(notAfter.toDate(), Locale.ROOT), subject, keyPair.getPublic()); + new Time(Date.from(notBefore.toInstant()), Locale.ROOT), new Time(Date.from(notAfter.toInstant()), Locale.ROOT), subject, + keyPair.getPublic()); builder.addExtension(Extension.subjectKeyIdentifier, false, extUtils.createSubjectKeyIdentifier(keyPair.getPublic())); builder.addExtension(Extension.authorityKeyIdentifier, false, authorityKeyIdentifier);