From 548deccdde13d55dc8801b5d5b57b0add009b77e Mon Sep 17 00:00:00 2001 From: Strift Date: Wed, 30 Jul 2025 15:47:52 +0800 Subject: [PATCH 1/4] Format date to UTC --- .../com/meilisearch/sdk/json/GsonKeyTypeAdapter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java b/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java index 57b48f2c..934d19f8 100644 --- a/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java +++ b/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.TimeZone; public class GsonKeyTypeAdapter extends TypeAdapter { @@ -24,7 +25,13 @@ public class GsonKeyTypeAdapter extends TypeAdapter { private static final String KEY_EXPIRES_AT = "expiresAt"; private static final String KEY_CREATED_AT = "createdAt"; private static final String KEY_UPDATED_AT = "updatedAt"; - private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + private static final DateFormat DATE_FORMAT = createUtcDateFormat(); + + private static DateFormat createUtcDateFormat() { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + format.setTimeZone(TimeZone.getTimeZone("UTC")); + return format; + } @Override public void write(JsonWriter writer, Key key) throws IOException { From b9ecfb5557b130262ce358fdbe24508f42871578 Mon Sep 17 00:00:00 2001 From: Strift Date: Wed, 30 Jul 2025 16:01:52 +0800 Subject: [PATCH 2/4] Expect 4 keys instead of 2 --- src/test/java/com/meilisearch/integration/KeysTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/meilisearch/integration/KeysTest.java b/src/test/java/com/meilisearch/integration/KeysTest.java index ac09f7db..365e6a27 100644 --- a/src/test/java/com/meilisearch/integration/KeysTest.java +++ b/src/test/java/com/meilisearch/integration/KeysTest.java @@ -45,7 +45,7 @@ public void testClientGetKeys() throws Exception { Results result = client.getKeys(); Key[] keys = result.getResults(); - assertThat(keys, is(arrayWithSize(2))); + assertThat(keys, is(arrayWithSize(4))); for (Key key : keys) { assertThat(key.getKey(), is(notNullValue())); @@ -65,7 +65,7 @@ public void testClientGetKeysWithJacksonJsonHandler() throws Exception { Results result = clientJackson.getKeys(); Key[] keys = result.getResults(); - assertThat(keys, is(arrayWithSize(2))); + assertThat(keys, is(arrayWithSize(4))); for (Key key : keys) { assertThat(key.getKey(), is(notNullValue())); From 39a57c07a3a17ed71b457d235f211b31da8623ab Mon Sep 17 00:00:00 2001 From: Strift Date: Wed, 30 Jul 2025 16:42:12 +0800 Subject: [PATCH 3/4] Make createUtcDateFormat thread-safe --- .../sdk/json/GsonKeyTypeAdapter.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java b/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java index 934d19f8..c2eb4cfb 100644 --- a/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java +++ b/src/main/java/com/meilisearch/sdk/json/GsonKeyTypeAdapter.java @@ -6,7 +6,6 @@ import com.google.gson.stream.JsonWriter; import com.meilisearch.sdk.model.Key; import java.io.IOException; -import java.text.DateFormat; import java.text.SimpleDateFormat; import java.time.Instant; import java.util.ArrayList; @@ -25,13 +24,13 @@ public class GsonKeyTypeAdapter extends TypeAdapter { private static final String KEY_EXPIRES_AT = "expiresAt"; private static final String KEY_CREATED_AT = "createdAt"; private static final String KEY_UPDATED_AT = "updatedAt"; - private static final DateFormat DATE_FORMAT = createUtcDateFormat(); - - private static DateFormat createUtcDateFormat() { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - format.setTimeZone(TimeZone.getTimeZone("UTC")); - return format; - } + private static final ThreadLocal DATE_FORMAT = + ThreadLocal.withInitial( + () -> { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + format.setTimeZone(TimeZone.getTimeZone("UTC")); + return format; + }); @Override public void write(JsonWriter writer, Key key) throws IOException { @@ -141,7 +140,7 @@ private void writeDate(JsonWriter writer, String key, Date value) throws IOExcep if (value == null) { return; } - writer.name(key).value(DATE_FORMAT.format(value)); + writer.name(key).value(DATE_FORMAT.get().format(value)); } private void readStartObject(JsonReader reader) throws IOException { From 5e550ec3a6d8912b12eccb633eb6f513974214b8 Mon Sep 17 00:00:00 2001 From: Strift Date: Wed, 30 Jul 2025 16:50:25 +0800 Subject: [PATCH 4/4] Don't check number of keys --- src/test/java/com/meilisearch/integration/KeysTest.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/test/java/com/meilisearch/integration/KeysTest.java b/src/test/java/com/meilisearch/integration/KeysTest.java index 365e6a27..4f45953f 100644 --- a/src/test/java/com/meilisearch/integration/KeysTest.java +++ b/src/test/java/com/meilisearch/integration/KeysTest.java @@ -1,7 +1,6 @@ package com.meilisearch.integration; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.arrayWithSize; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; @@ -45,8 +44,6 @@ public void testClientGetKeys() throws Exception { Results result = client.getKeys(); Key[] keys = result.getResults(); - assertThat(keys, is(arrayWithSize(4))); - for (Key key : keys) { assertThat(key.getKey(), is(notNullValue())); assertThat(key.getUid(), is(notNullValue())); @@ -65,8 +62,6 @@ public void testClientGetKeysWithJacksonJsonHandler() throws Exception { Results result = clientJackson.getKeys(); Key[] keys = result.getResults(); - assertThat(keys, is(arrayWithSize(4))); - for (Key key : keys) { assertThat(key.getKey(), is(notNullValue())); assertThat(key.getActions(), is(notNullValue()));