[FEAT] add some test for time system

This commit is contained in:
Edouard DUPIN 2025-04-06 23:24:58 +02:00
parent f044473a67
commit 16bb30b260
6 changed files with 422 additions and 15 deletions

View File

@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory;
import test.kar.archidata.ConfigureDb; import test.kar.archidata.ConfigureDb;
import test.kar.archidata.StepwiseExtension; import test.kar.archidata.StepwiseExtension;
import test.kar.archidata.apiExtern.model.DataForJSR310; import test.kar.archidata.apiExtern.model.DataForJSR310;
import test.kar.archidata.apiExtern.model.DataForJSR310String;
@ExtendWith(StepwiseExtension.class) @ExtendWith(StepwiseExtension.class)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class) @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@ -57,17 +58,113 @@ public class TestTime {
public void insertValue() throws Exception { public void insertValue() throws Exception {
final DataForJSR310 data = new DataForJSR310(); final DataForJSR310 data = new DataForJSR310();
data.time = LocalTime.now(); data.localTime = LocalTime.now();
data.date = LocalDate.now(); data.localDate = LocalDate.now();
data.dateTime = LocalDateTime.now(); data.localDateTime = LocalDateTime.now();
final DataForJSR310 inserted = api.post(DataForJSR310.class, TestTime.ENDPOINT_NAME, data); final DataForJSR310 inserted = api.post(DataForJSR310.class, TestTime.ENDPOINT_NAME, data);
Assertions.assertNotNull(inserted); Assertions.assertNotNull(inserted);
Assertions.assertNotNull(inserted.time); Assertions.assertNotNull(inserted.localTime);
Assertions.assertNotNull(inserted.date); Assertions.assertNotNull(inserted.localDate);
Assertions.assertNotNull(inserted.dateTime); Assertions.assertNotNull(inserted.localDateTime);
Assertions.assertEquals(inserted.time, data.time); Assertions.assertEquals(inserted.localTime, data.localTime);
Assertions.assertEquals(inserted.date, data.date); Assertions.assertEquals(inserted.localDate, data.localDate);
Assertions.assertEquals(inserted.dateTime, data.dateTime); Assertions.assertEquals(inserted.localDateTime, data.localDateTime);
}
@Order(2)
@Test
public void serializeValue() throws Exception {
String data = """
{
"date": "2025-04-04T15:15:07.123"
}
""";
String received = api.postJson(String.class, TestTime.ENDPOINT_NAME + "/serialize", data);
LOGGER.info("received: '{}'", received);
Assertions.assertEquals("Fri Apr 04 15:15:07 UTC 2025", received);
data = """
{
"date": "2025-04-04T15:15:07.123Z"
}
""";
received = api.postJson(String.class, TestTime.ENDPOINT_NAME + "/serialize", data);
LOGGER.info("received: '{}'", received);
Assertions.assertEquals("Fri Apr 04 15:15:07 UTC 2025", received);
data = """
{
"date": "2025-04-04T15:15:07.123+05:00"
}
""";
received = api.postJson(String.class, TestTime.ENDPOINT_NAME + "/serialize", data);
LOGGER.info("received: '{}'", received);
Assertions.assertEquals("Fri Apr 04 10:15:07 UTC 2025", received);
Assertions.assertNotNull(received);
}
@Order(3)
@Test
public void unserializeValue() throws Exception {
String data = "2025-04-04T15:15:07.123Z";
DataForJSR310String received = api.postJson(DataForJSR310String.class, TestTime.ENDPOINT_NAME + "/unserialize",
data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received.date);
LOGGER.info("----------------------------------------------------");
data = "2025-04-04T15:15:07.123";
received = api.postJson(DataForJSR310String.class, TestTime.ENDPOINT_NAME + "/unserialize", data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received.date);
LOGGER.info("----------------------------------------------------");
data = "2025-04-04T15:15:07.123+05:00";
received = api.postJson(DataForJSR310String.class, TestTime.ENDPOINT_NAME + "/unserialize", data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received.date);
LOGGER.info("----------------------------------------------------");
//Assertions.assertEquals("Fri Apr 04 15:15:07 UTC 2025", received);
}
@Order(50)
@Test
public void jakartaInputDate() throws Exception {
String data = "2025-04-04T15:15:07.123Z";
String received = api.get(String.class, TestTime.ENDPOINT_NAME + "/inputDate");
//String received = api.get(String.class, TestTime.ENDPOINT_NAME + "/inputDate?date=" + data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received);
LOGGER.info("----------------------------------------------------");
data = "2025-04-04T15:15:07.123";
received = api.get(String.class, TestTime.ENDPOINT_NAME + "/inputDate?date=" + data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received);
LOGGER.info("----------------------------------------------------");
data = "2025-04-04T15:15:07.123+05:00";
received = api.get(String.class, TestTime.ENDPOINT_NAME + "/inputDate?date=" + data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received);
LOGGER.info("----------------------------------------------------");
//Assertions.assertEquals("Fri Apr 04 15:15:07 UTC 2025", received);
}
@Order(51)
@Test
public void jakartaInputOffsetDateTime() throws Exception {
String data = "2025-04-04T15:15:07.123Z";
String received = api.get(String.class, TestTime.ENDPOINT_NAME + "/inputOffsetDateTime?date=" + data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received);
LOGGER.info("----------------------------------------------------");
data = "2025-04-04T15:15:07.123";
received = api.get(String.class, TestTime.ENDPOINT_NAME + "/inputOffsetDateTime?date=" + data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received);
LOGGER.info("----------------------------------------------------");
data = "2025-04-04T15:15:07.123+05:00";
received = api.get(String.class, TestTime.ENDPOINT_NAME + "/inputOffsetDateTime?date=" + data);
LOGGER.info("send : '{}'", data);
LOGGER.info("received: '{}'", received);
LOGGER.info("----------------------------------------------------");
//Assertions.assertEquals("Fri Apr 04 15:15:07 UTC 2025", received);
} }
} }

View File

@ -0,0 +1,201 @@
package test.kar.archidata.apiExtern;
import java.time.OffsetDateTime;
import java.util.Date;
import java.util.TimeZone;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.kar.archidata.tools.DateTools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import test.kar.archidata.StepwiseExtension;
@ExtendWith(StepwiseExtension.class)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class TestTimeParsing {
private final static Logger LOGGER = LoggerFactory.getLogger(TestTime.class);
@BeforeAll
public static void setUp() {
// Set default timezone to UTC
//TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
// @Test
// public void testRaw() throws Exception {
// LOGGER.info("=======================================================================");
// String data = null;
// OffsetDateTime parsed = null;
// String manualFormat = null;
//
// data = "2025-04-04T15:15:07.123Z";
// //parsed = OffsetDateTime.parse(data, timeParserPerso);
// parsed = DateTools.parseOffsetDateTime(data);
// LOGGER.info(">> send : '{}'", data);
// LOGGER.info(">> parsed : '{}'", parsed);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSSX"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'nnnnnnnnnZ"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// LOGGER.info("----------------------------------------------------");
// data = "2025-04-04T15:15:07.123456789+05:00";
// //parsed = OffsetDateTime.parse(data, timeParserPerso);
// parsed = DateTools.parseOffsetDateTime(data);
// LOGGER.info(">> send : '{}'", data);
// LOGGER.info(">> parsed : '{}'", parsed);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSSX"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'nnnnnnnnnZ"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// LOGGER.info("----------------------------------------------------");
// data = "2025-04-04 15:15:07.123456789";
// //parsed = OffsetDateTime.parse(data, timeParserPersoUTC);
// parsed = DateTools.parseOffsetDateTime(data);
// LOGGER.info(">> send : '{}'", data);
// LOGGER.info(">> parsed : '{}'", parsed);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSSX"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'nnnnnnnnnZ"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// LOGGER.info("----------------------------------------------------");
// data = "2025-04-04 15:15:07";
// //parsed = OffsetDateTime.parse(data, timeParserPersoUTC);
// parsed = DateTools.parseOffsetDateTime(data);
// LOGGER.info(">> send : '{}'", data);
// LOGGER.info(">> parsed : '{}'", parsed);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSSX"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'nnnnnnnnnZ"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// LOGGER.info("----------------------------------------------------");
// data = "2025-04-04T15:15:07";
// //parsed = OffsetDateTime.parse(data, timeParserPersoUTC);
// parsed = DateTools.parseOffsetDateTime(data);
// LOGGER.info(">> send : '{}'", data);
// LOGGER.info(">> parsed : '{}'", parsed);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSSX"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// manualFormat = parsed.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'nnnnnnnnnZ"));
// LOGGER.info(">> manualFormat: '{}'", manualFormat);
// LOGGER.info("----------------------------------------------------");
//
// }
@Test
public void testDateRaw() throws Exception {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));
LOGGER.info("=======================================================================");
String data = null;
Date parsed = null;
data = "1999-01-30T18:16:17.123Z";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-31T03:16:17.123+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123456789Z";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-30T18:16:17.123000000Z", DateTools.serializeNanoWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123456789+05:00";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-30T22:16:17.123+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T13:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123456789";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-31T03:16:17.123+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30 18:16:17";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-31T03:16:17.000+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.000Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-31T03:16:17.000+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.000Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123+09:00";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-30T18:16:17.123+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T09:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123+09";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-30T18:16:17.123+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T09:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("1999-01-30T09:00:00.000+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T00:00:00.000Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "18:16:17.123";
parsed = DateTools.parseDate(data);
Assertions.assertEquals("0001-01-02T03:35:16.123+09:18", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("0001-01-01T18:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
// data = "1999-01-30T18:16:17.123 UTC+09:00";
// parsed = DateTools.parseDate2(data);
// LOGGER.info(">> send : '{}'", data);
// LOGGER.info(">> format OTZ: '{}'", DateTools.serializeMilliWithOriginalTimeZone(parsed));
// LOGGER.info(">> format UTC: '{}'", DateTools.serializeMilliWithUTCTimeZone(parsed));
// LOGGER.info("----------------------------------------------------");
// Assertions.assertEquals("", DateTools.serializeMilliWithOriginalTimeZone(parsed));
// Assertions.assertEquals("", DateTools.serializeMilliWithUTCTimeZone(parsed));
}
@Test
public void testOffsetDateTime() throws Exception {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));
LOGGER.info("=======================================================================");
String data = null;
OffsetDateTime parsed = null;
data = "1999-01-30T18:16:17.123Z";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.123Z", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123456789Z";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.123456789Z", DateTools.serializeNanoWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123456789+05:00";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.123+05:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T13:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123456789";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.123Z", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30 18:16:17";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.000Z", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.000Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.000Z", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T18:16:17.000Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123+09:00";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.123+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T09:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30T18:16:17.123+09";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T18:16:17.123+09:00", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T09:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "1999-01-30";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("1999-01-30T00:00:00.000Z", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("1999-01-30T00:00:00.000Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
data = "18:16:17.123";
parsed = DateTools.parseOffsetDateTime(data);
Assertions.assertEquals("0001-01-01T18:16:17.123Z", DateTools.serializeMilliWithOriginalTimeZone(parsed));
Assertions.assertEquals("0001-01-01T18:16:17.123Z", DateTools.serializeMilliWithUTCTimeZone(parsed));
// data = "1999-01-30T18:16:17.123 UTC+09:00";
// parsed = DateTools.parseDate2(data);
// LOGGER.info(">> send : '{}'", data);
// LOGGER.info(">> format OTZ: '{}'", DateTools.serializeMilliWithOriginalTimeZone(parsed));
// LOGGER.info(">> format UTC: '{}'", DateTools.serializeMilliWithUTCTimeZone(parsed));
// LOGGER.info("----------------------------------------------------");
// Assertions.assertEquals("", DateTools.serializeMilliWithOriginalTimeZone(parsed));
// Assertions.assertEquals("", DateTools.serializeMilliWithUTCTimeZone(parsed));
}
}

View File

@ -2,6 +2,7 @@ package test.kar.archidata.apiExtern;
import java.net.URI; import java.net.URI;
import java.util.Iterator; import java.util.Iterator;
import java.util.TimeZone;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.ImageReader; import javax.imageio.ImageReader;
@ -16,6 +17,8 @@ import org.kar.archidata.UpdateJwtPublicKey;
import org.kar.archidata.api.DataResource; import org.kar.archidata.api.DataResource;
import org.kar.archidata.api.ProxyResource; import org.kar.archidata.api.ProxyResource;
import org.kar.archidata.catcher.GenericCatcher; import org.kar.archidata.catcher.GenericCatcher;
import org.kar.archidata.converter.Jakarta.DateParamConverter;
import org.kar.archidata.converter.Jakarta.OffsetDateTimeParamConverter;
import org.kar.archidata.db.DbConfig; import org.kar.archidata.db.DbConfig;
import org.kar.archidata.exception.DataAccessException; import org.kar.archidata.exception.DataAccessException;
import org.kar.archidata.filter.CORSFilter; import org.kar.archidata.filter.CORSFilter;
@ -35,7 +38,10 @@ public class WebLauncher {
protected UpdateJwtPublicKey keyUpdater = null; protected UpdateJwtPublicKey keyUpdater = null;
protected HttpServer server = null; protected HttpServer server = null;
public WebLauncher() {} public WebLauncher() {
// Set default timezone to UTC
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
private static URI getBaseURI() { private static URI getBaseURI() {
return UriBuilder.fromUri(ConfigBaseVariable.getlocalAddress()).build(); return UriBuilder.fromUri(ConfigBaseVariable.getlocalAddress()).build();
@ -99,6 +105,10 @@ public class WebLauncher {
// =================================================================== // ===================================================================
final ResourceConfig rc = new ResourceConfig(); final ResourceConfig rc = new ResourceConfig();
// Add permissive date converter for jakarta
rc.register(DateParamConverter.class);
rc.register(OffsetDateTimeParamConverter.class);
// add multipart models .. // add multipart models ..
rc.register(MultiPartFeature.class); rc.register(MultiPartFeature.class);
// global authentication system // global authentication system

View File

@ -3,15 +3,22 @@ package test.kar.archidata.apiExtern.model;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZonedDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DataForJSR310 { public class DataForJSR310 {
public LocalTime time; public LocalTime localTime;
public LocalDate date; public LocalDate localDate;
public LocalDateTime dateTime; public Date date;
public LocalDateTime localDateTime;
public ZonedDateTime zoneDateTime;
@Override @Override
public String toString() { public String toString() {
return "DataForJSR310 [time=" + this.time + ", date=" + this.date + ", dateTime=" + this.dateTime + "]"; return "DataForJSR310 [localTime=" + this.localTime + ", localDate=" + this.localDate + ", localDateTime="
+ this.localDateTime + ", zoneDateTime=" + this.zoneDateTime + "]";
} }
} }

View File

@ -0,0 +1,18 @@
package test.kar.archidata.apiExtern.model;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DataForJSR310String {
public String localTime;
public String localDate;
public String date;
public String localDateTime;
public String zoneDateTime;
@Override
public String toString() {
return "DataForJSR310 [localTime=" + this.localTime + ", localDate=" + this.localDate + ", localDateTime="
+ this.localDateTime + ", zoneDateTime=" + this.zoneDateTime + "]";
}
}

View File

@ -1,12 +1,22 @@
package test.kar.archidata.apiExtern.resource; package test.kar.archidata.apiExtern.resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZonedDateTime;
import java.util.Date;
import org.kar.archidata.tools.DateTools;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import jakarta.annotation.security.PermitAll; import jakarta.annotation.security.PermitAll;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST; import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path; import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces; import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.MediaType;
import test.kar.archidata.apiExtern.model.DataForJSR310; import test.kar.archidata.apiExtern.model.DataForJSR310;
@ -22,4 +32,68 @@ public class TimeResource {
return data; return data;
} }
@POST
@Path("serialize")
@PermitAll
public String serialize(final DataForJSR310 data) throws Exception {
LOGGER.warn("receive Data: {}", data);
if (data.localDate != null) {
return data.localDate.toString();
}
if (data.localDateTime != null) {
return data.localDateTime.toString();
}
if (data.localTime != null) {
return data.localTime.toString();
}
if (data.zoneDateTime != null) {
return data.zoneDateTime.toString();
}
if (data.date != null) {
return data.date.toString();
}
return "";
}
@POST
@Path("unserialize")
@PermitAll
public DataForJSR310 unserialize(final String data) throws Exception {
LOGGER.warn("receive Data: {}", data);
final DataForJSR310 newData = new DataForJSR310();
try {
newData.localDate = LocalDate.parse(data);
} catch (final Exception ex) {}
try {
newData.localDateTime = LocalDateTime.parse(data);
} catch (final Exception ex) {}
try {
newData.date = DateTools.parseDate(data);
// final DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
// final OffsetDateTime dateTime = OffsetDateTime.parse(data, formatter);
// final Instant instant = dateTime.toInstant();
// newData.date = Date.from(instant);
} catch (final Exception ex) {}
try {
newData.localTime = LocalTime.parse(data);
} catch (final Exception ex) {}
try {
newData.zoneDateTime = ZonedDateTime.parse(data);
} catch (final Exception ex) {}
return newData;
}
@GET
@PermitAll
@Path("inputDate")
public String postInputDate(@QueryParam("date") final Date data) throws Exception {
return DateTools.serializeNanoWithUTCTimeZone(data);
}
@GET
@PermitAll
@Path("inputOffsetDateTime")
public String postInputOffsetDateTime(@QueryParam("date") final OffsetDateTime data) throws Exception {
return DateTools.serializeNanoWithUTCTimeZone(data);
}
} }