diff --git a/pom.xml b/pom.xml index b3cfb86af5f2fa85d38d15eeb2f1d0c9643beec9..b4100e3fc2d2ca85d19e461c4ad92c9bb12d6acb 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ </dependency> <dependency> <groupId>io.quarkus</groupId> - <artifactId>quarkus-resteasy-jsonb</artifactId> + <artifactId>quarkus-resteasy-jackson</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> @@ -85,7 +85,8 @@ <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-config-yaml</artifactId> - </dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> + </dependency> + <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> @@ -110,6 +111,10 @@ <artifactId>cxf-rt-rs-client</artifactId> <version>3.4.3</version> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + </dependency> </dependencies> <build> <plugins> diff --git a/src/main/java/java2/lab12/client/Course.java b/src/main/java/java2/lab12/client/Course.java index 80e7c76fd45435f63d685f6c31a564ece89ac209..641703fdf942961c6eb2ed6f2ae25a1b0d8a763d 100644 --- a/src/main/java/java2/lab12/client/Course.java +++ b/src/main/java/java2/lab12/client/Course.java @@ -1,5 +1,7 @@ package java2.lab12.client; +import java.time.LocalDate; + import javax.xml.bind.annotation.XmlRootElement; import lombok.Getter; @@ -29,4 +31,8 @@ public class Course { @Getter @Setter private String semester; + + @Getter + @Setter + private LocalDate startDate; } diff --git a/src/main/java/java2/lab12/client/TableViewSample.java b/src/main/java/java2/lab12/client/TableViewSample.java index 10d266f304ca3661fa06260acbb9826e4b72d14f..9e1bfbe7f700d00833ba652a0bdbdb53d7a44d0a 100644 --- a/src/main/java/java2/lab12/client/TableViewSample.java +++ b/src/main/java/java2/lab12/client/TableViewSample.java @@ -1,8 +1,14 @@ package java2.lab12.client; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; + +import java.time.LocalDate; import java.util.Collection; import java.util.Collections; +import org.apache.cxf.jaxrs.client.JAXRSClientFactory; + import javafx.application.Application; import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.collections.FXCollections; @@ -26,7 +32,9 @@ import javafx.scene.layout.VBox; import javafx.scene.text.Font; import javafx.stage.Stage; import javafx.stage.WindowEvent; - +import lombok.extern.log4j.Log4j2; + +@Log4j2 public class TableViewSample extends Application { @@ -194,6 +202,7 @@ public class TableViewSample extends Application { } private void createCourse(Course course) { + course.setStartDate(LocalDate.now()); long id = getClient().createCourse(course); course.setId(id); } @@ -207,8 +216,11 @@ public class TableViewSample extends Application { } private CourseResourceClient getClient() { + ObjectMapper mapper = new ObjectMapper(); + mapper.findAndRegisterModules(); return JAXRSClientFactory.create("http://localhost:8080", CourseResourceClient.class, Collections.singletonList( - JacksonJaxbJsonProvider.class)); + new JacksonJaxbJsonProvider(mapper, + JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS))); } } \ No newline at end of file diff --git a/src/main/java/java2/lab12/server/Course.java b/src/main/java/java2/lab12/server/Course.java index 237c07d78cca63a33469c8f9283b9bc8f757b549..0ef0f2e4354960f9c9085de3a4ad045ebf59f80c 100644 --- a/src/main/java/java2/lab12/server/Course.java +++ b/src/main/java/java2/lab12/server/Course.java @@ -1,5 +1,7 @@ package java2.lab12.server; +import java.time.LocalDate; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -36,4 +38,8 @@ public class Course { @Getter @Setter private int semester; + + @Getter + @Setter + private LocalDate startDate; } diff --git a/src/main/java/java2/lab12/server/JacksonObjectMapperCustomizer.java b/src/main/java/java2/lab12/server/JacksonObjectMapperCustomizer.java new file mode 100644 index 0000000000000000000000000000000000000000..756fbf0a8b3f0fb97a6b91e3a599e6f0861e181e --- /dev/null +++ b/src/main/java/java2/lab12/server/JacksonObjectMapperCustomizer.java @@ -0,0 +1,16 @@ +package java2.lab12.server; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import io.quarkus.jackson.ObjectMapperCustomizer; + +import javax.inject.Singleton; + +@Singleton +public class JacksonObjectMapperCustomizer implements ObjectMapperCustomizer { + + @Override + public void customize(ObjectMapper mapper) { + mapper.findAndRegisterModules(); + } +} diff --git a/src/main/java/java2/lab12/server/ObjectMapperConfiguration.java b/src/main/java/java2/lab12/server/ObjectMapperConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..f15fad87be39a2b2153d362e3d1f9a7429dda079 --- /dev/null +++ b/src/main/java/java2/lab12/server/ObjectMapperConfiguration.java @@ -0,0 +1,26 @@ +package java2.lab12.server; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import io.quarkus.jackson.ObjectMapperCustomizer; + +import javax.enterprise.inject.Instance; +import javax.inject.Singleton; + +import lombok.extern.log4j.Log4j2; + +@Log4j2 +public class ObjectMapperConfiguration { + + @Singleton + ObjectMapper objectMapper(Instance<ObjectMapperCustomizer> customizers) { + // Your own `ObjectMapper` or one provided by another library + ObjectMapper mapper = new ObjectMapper(); + // Apply customizations (includes customizations from Quarkus) + for (ObjectMapperCustomizer customizer : customizers) { + customizer.customize(mapper); + } + log.info("mapper {}", mapper); + return mapper; + } +}