diff --git a/Makefile b/Makefile index 64e27a20..852104eb 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,12 @@ build-docker: @echo "Removing problematic validateJsonElement calls..." find ./src/main/java ./src/test/java -type f -name '*.java' -exec sed -i '' '/Object\.validateJsonElement/d' {} + 2>/dev/null || true find ./src/main/java ./src/test/java -type f -name '*.java' -exec sed -i '' '/UUID\.validateJsonElement/d' {} + 2>/dev/null || true + @echo "Replacing removed ISO8601Utils with java.time equivalents..." + sed -i '' 's/import com.google.gson.internal.bind.util.ISO8601Utils;/import java.time.Instant;\nimport java.time.ZoneOffset;/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' 's/ISO8601Utils.format(date, true)/DateTimeFormatter.ISO_INSTANT.format(date.toInstant())/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' 's/ISO8601Utils.parse(date, new ParsePosition(0))/Date.from(Instant.parse(date))/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' 's/catch (ParseException e)/catch (ParseException | java.time.format.DateTimeParseException e)/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' '/import java.text.ParsePosition;/d' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true @echo "✓ Client generation complete!" # Generate client using local openapi-generator (requires Java and openapi-generator installed) @@ -41,6 +47,12 @@ build-local: @echo "Removing problematic validateJsonElement calls..." find ./src/main/java ./src/test/java -type f -name '*.java' -exec sed -i '' '/Object\.validateJsonElement/d' {} + 2>/dev/null || true find ./src/main/java ./src/test/java -type f -name '*.java' -exec sed -i '' '/UUID\.validateJsonElement/d' {} + 2>/dev/null || true + @echo "Replacing removed ISO8601Utils with java.time equivalents..." + sed -i '' 's/import com.google.gson.internal.bind.util.ISO8601Utils;/import java.time.Instant;\nimport java.time.ZoneOffset;/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' 's/ISO8601Utils.format(date, true)/DateTimeFormatter.ISO_INSTANT.format(date.toInstant())/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' 's/ISO8601Utils.parse(date, new ParsePosition(0))/Date.from(Instant.parse(date))/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' 's/catch (ParseException e)/catch (ParseException | java.time.format.DateTimeParseException e)/' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true + sed -i '' '/import java.text.ParsePosition;/d' src/main/java/com/rootly/client/JSON.java 2>/dev/null || true @echo "✓ Client generation complete!" # Upgrade all dependencies to latest versions diff --git a/build.gradle b/build.gradle index 9acffaec..9fb5b2f3 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:2.3.+' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' - classpath 'com.diffplug.spotless:spotless-plugin-gradle:7.0.3' + classpath 'com.diffplug.spotless:spotless-plugin-gradle:7.2.1' } } @@ -113,12 +113,13 @@ dependencies { implementation 'com.google.code.gson:gson:2.13.2' implementation 'io.gsonfire:gson-fire:1.9.0' implementation 'jakarta.ws.rs:jakarta.ws.rs-api:4.0.0' - implementation 'org.openapitools:jackson-databind-nullable:0.2.8' + implementation 'org.openapitools:jackson-databind-nullable:0.2.9' implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.20.0' implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.11.4' - testImplementation 'org.mockito:mockito-core:5.21.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.11.4' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.14.3' + testImplementation 'org.mockito:mockito-core:5.22.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.14.3' + testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.14.3' } javadoc { diff --git a/src/main/java/com/rootly/client/JSON.java b/src/main/java/com/rootly/client/JSON.java index 2ac02ae0..b5e5b243 100644 --- a/src/main/java/com/rootly/client/JSON.java +++ b/src/main/java/com/rootly/client/JSON.java @@ -17,7 +17,6 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonParseException; import com.google.gson.TypeAdapter; -import com.google.gson.internal.bind.util.ISO8601Utils; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import com.google.gson.JsonElement; @@ -34,9 +33,10 @@ import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.ParseException; -import java.text.ParsePosition; +import java.time.Instant; import java.time.LocalDate; import java.time.OffsetDateTime; +import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.Locale; @@ -1619,8 +1619,8 @@ public java.sql.Date read(JsonReader in) throws IOException { if (dateFormat != null) { return new java.sql.Date(dateFormat.parse(date).getTime()); } - return new java.sql.Date(ISO8601Utils.parse(date, new ParsePosition(0)).getTime()); - } catch (ParseException e) { + return new java.sql.Date(Date.from(Instant.parse(date)).getTime()); + } catch (ParseException | java.time.format.DateTimeParseException e) { throw new JsonParseException(e); } } @@ -1654,7 +1654,7 @@ public void write(JsonWriter out, Date date) throws IOException { if (dateFormat != null) { value = dateFormat.format(date); } else { - value = ISO8601Utils.format(date, true); + value = DateTimeFormatter.ISO_INSTANT.format(date.toInstant()); } out.value(value); } @@ -1673,8 +1673,8 @@ public Date read(JsonReader in) throws IOException { if (dateFormat != null) { return dateFormat.parse(date); } - return ISO8601Utils.parse(date, new ParsePosition(0)); - } catch (ParseException e) { + return Date.from(Instant.parse(date)); + } catch (ParseException | java.time.format.DateTimeParseException e) { throw new JsonParseException(e); } }