From c24e1e61efd8556c4679429e35711bc79bef0dc7 Mon Sep 17 00:00:00 2001
From: koz01 <koz01@PCFEIB113-026.msad.vsb.cz>
Date: Mon, 3 Apr 2023 14:03:44 +0200
Subject: [PATCH] solution
---
pom.xml | 11 +++++++
src/main/java/java2/lab12/client/Course.java | 2 ++
.../java/java2/lab12/client/CourseClient.java | 30 +++++++++++++++++++
.../java2/lab12/client/TableViewSample.java | 19 ++++++++++--
4 files changed, 59 insertions(+), 3 deletions(-)
create mode 100644 src/main/java/java2/lab12/client/CourseClient.java
diff --git a/pom.xml b/pom.xml
index f6dc910..8918ed1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,6 +47,17 @@
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
+ <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-rs-client -->
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-client</artifactId>
+ <version>4.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
+ <artifactId>jackson-jakarta-rs-json-provider</artifactId>
+ <version>2.14.2</version>
+ </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 09ccc10..691d09f 100644
--- a/src/main/java/java2/lab12/client/Course.java
+++ b/src/main/java/java2/lab12/client/Course.java
@@ -1,9 +1,11 @@
package java2.lab12.client;
+import jakarta.xml.bind.annotation.XmlRootElement;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
+@XmlRootElement
@ToString
public class Course {
diff --git a/src/main/java/java2/lab12/client/CourseClient.java b/src/main/java/java2/lab12/client/CourseClient.java
new file mode 100644
index 0000000..dcdf423
--- /dev/null
+++ b/src/main/java/java2/lab12/client/CourseClient.java
@@ -0,0 +1,30 @@
+package java2.lab12.client;
+
+import java.util.List;
+
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+
+public interface CourseClient {
+
+ @GET
+ @Path("/courses")
+ @Produces(MediaType.APPLICATION_JSON)
+ List<Course> getAll();
+
+
+ @PUT
+ @Path("/course")
+ @Consumes(MediaType.APPLICATION_JSON)
+ void update(Course course);
+
+ @POST
+ @Path("/course")
+ @Consumes(MediaType.APPLICATION_JSON)
+ Long create(Course course);
+}
diff --git a/src/main/java/java2/lab12/client/TableViewSample.java b/src/main/java/java2/lab12/client/TableViewSample.java
index cbb1718..13af0c6 100644
--- a/src/main/java/java2/lab12/client/TableViewSample.java
+++ b/src/main/java/java2/lab12/client/TableViewSample.java
@@ -2,6 +2,12 @@ package java2.lab12.client;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
+
+import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
+
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.jakarta.rs.json.JacksonXmlBindJsonProvider;
import javafx.application.Application;
import javafx.beans.property.ReadOnlyObjectWrapper;
@@ -190,18 +196,25 @@ public class TableViewSample extends Application {
}
private Collection<Course> getCourses() {
- return Collections.emptyList();
+ return getClient().getAll();
}
private void createCourse(Course course) {
- // TODO
+ getClient().create(course);
}
private void updateCourse(Course course) {
- // TODO
+ getClient().update(course);
}
private void removeCourse(Course course) {
// TODO
}
+
+ private CourseClient getClient() {
+ return JAXRSClientFactory.create("http://localhost:8080", CourseClient.class,
+ Collections.singletonList(new JacksonXmlBindJsonProvider().disable(SerializationFeature.WRAP_ROOT_VALUE)
+ .disable(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)),
+ new HashMap<>(), true);
+ }
}
\ No newline at end of file
--
GitLab