diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 9357461..d9dff77 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,11 +4,14 @@
-
-
+
-
-
+
+
+
+
+
+
@@ -366,7 +369,7 @@
-
+
@@ -520,7 +523,23 @@
1722975785066
-
+
+
+ 1722978999091
+
+
+
+ 1722978999091
+
+
+
+ 1722979026190
+
+
+
+ 1722979026190
+
+
@@ -558,6 +577,8 @@
-
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index d098235..f2903d5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -27,8 +27,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation group: 'javax.mail', name: 'mail', version: '1.4'
implementation 'org.springframework.boot:spring-boot-starter-logging'
- implementation 'com.google.code.gson:gson:2.8.9'
implementation 'org.mariadb.jdbc:mariadb-java-client:2.1.2'
+ implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3'
}
test {
diff --git a/src/main/java/com/alttd/forms/form/Form.java b/src/main/java/com/alttd/forms/form/Form.java
index 6857786..389f0b1 100644
--- a/src/main/java/com/alttd/forms/form/Form.java
+++ b/src/main/java/com/alttd/forms/form/Form.java
@@ -1,11 +1,15 @@
package com.alttd.forms.form;
-import com.google.gson.Gson;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
public abstract class Form {
- public String toJsonString() {
- return new Gson().toJson(this);
+ public String toJsonString() throws JsonProcessingException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.registerModule(new JavaTimeModule());
+ return objectMapper.writeValueAsString(this);
}
public abstract String toHtml();
diff --git a/src/main/java/com/alttd/forms/form/StoreFormQuery.java b/src/main/java/com/alttd/forms/form/StoreFormQuery.java
index f836176..222e92b 100644
--- a/src/main/java/com/alttd/forms/form/StoreFormQuery.java
+++ b/src/main/java/com/alttd/forms/form/StoreFormQuery.java
@@ -8,6 +8,7 @@ import java.util.Optional;
import java.util.Random;
import java.util.concurrent.CompletableFuture;
+import com.fasterxml.jackson.core.JsonProcessingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,6 +42,9 @@ public class StoreFormQuery {
} catch (SQLException e) {
logger.error("Failed insert form query for: " + form, e);
return Optional.empty();
+ } catch (JsonProcessingException e) {
+ logger.error("Invalid class for JSON, failed insert form query for: " + form, e);
+ return Optional.empty();
}
}
diff --git a/src/main/java/com/alttd/forms/verify_mail/FormQuery.java b/src/main/java/com/alttd/forms/verify_mail/FormQuery.java
index 6c3191b..e351cbf 100644
--- a/src/main/java/com/alttd/forms/verify_mail/FormQuery.java
+++ b/src/main/java/com/alttd/forms/verify_mail/FormQuery.java
@@ -3,7 +3,9 @@ package com.alttd.forms.verify_mail;
import com.alttd.forms.contact.ContactFormData;
import com.alttd.forms.database.DatabaseConnection;
import com.alttd.forms.form.Form;
-import com.google.gson.Gson;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,6 +55,9 @@ public class FormQuery {
} catch (IllegalArgumentException e) {
logger.error("Invalid form class in database", e);
return Optional.empty();
+ } catch (JsonProcessingException e) {
+ logger.error("Invalid form json in database", e);
+ return Optional.empty();
}
} catch (SQLException e) {
logger.error("Failed select form query for form with id: {}", formId, e);
@@ -60,10 +65,12 @@ public class FormQuery {
}
}
- private Form getForm(String className, String json) throws IllegalArgumentException {
+ private Form getForm(String className, String json) throws IllegalArgumentException, JsonProcessingException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.registerModule(new JavaTimeModule());
switch (className) {
case "ContactFormData" -> {
- return new Gson().fromJson(json, ContactFormData.class);
+ return objectMapper.readValue(json, ContactFormData.class);
}
default -> throw new IllegalArgumentException("Invalid form class name: " + className);
}
diff --git a/src/main/java/com/alttd/forms/verify_mail/VerifyController.java b/src/main/java/com/alttd/forms/verify_mail/VerifyController.java
index 080d747..43008a2 100644
--- a/src/main/java/com/alttd/forms/verify_mail/VerifyController.java
+++ b/src/main/java/com/alttd/forms/verify_mail/VerifyController.java
@@ -1,6 +1,7 @@
package com.alttd.forms.verify_mail;
import com.alttd.forms.mail.mail_forms.MailForm;
+import com.fasterxml.jackson.core.JsonProcessingException;
import jakarta.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,12 +52,20 @@ public class VerifyController {
} catch (URISyntaxException e) {
logger.error("Unable to create URI for posting form", e); //TODO more clear
return ResponseEntity.ok("Unable to create URI for posting form, please contact us at admin@alttd.com");
+ } catch (JsonProcessingException e) {
+ logger.error("Unable to send form to Discord, invalid JSON", e);
+ return ResponseEntity.ok("Unable to send form to Discord, please contact us at admin@alttd.com");
} catch (IOException | InterruptedException e) {
logger.error("Unable to send form to Discord", e); //TODO more clear
return ResponseEntity.ok("Unable to send form to Discord, please contact us at admin@alttd.com");
}
MailForm.sendForm("akastijn@alttd.com", form);
- return ResponseEntity.ok(form.toJsonString());
+ try {
+ return ResponseEntity.ok(form.toJsonString());
+ } catch (JsonProcessingException e) {
+ logger.error("Unable to send form to Discord, invalid JSON", e);
+ return ResponseEntity.ok("Unable to send form to Discord, please contact us at admin@alttd.com");
+ }
})
.orElse(ResponseEntity.ok(result.failReason()))
).exceptionally(throwable -> ResponseEntity.internalServerError()
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 052fd6d..5b2c197 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,3 +1,4 @@
logging.level.com.alttd.forms=warn
server.port=8002
-spring.jackson.date-format=yyyy-MM-dd
\ No newline at end of file
+spring.jackson.date-format=yyyy-MM-dd
+spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
\ No newline at end of file