From 99c2dcdbbcc1b20dd2944e551035a8ad0bad228b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Ko=C5=BEusznik?= <jan@kozusznik.cz>
Date: Wed, 28 Apr 2021 12:33:55 +0200
Subject: [PATCH] solution

---
 pom.xml                                       |  6 +++++
 .../java/java2/lab12/client/CourseClient.java | 25 +++++++++++++++++++
 .../java2/lab12/client/TableViewSample.java   | 19 +++++++++++---
 3 files changed, 47 insertions(+), 3 deletions(-)
 create mode 100644 src/main/java/java2/lab12/client/CourseClient.java

diff --git a/pom.xml b/pom.xml
index d186d92..ca216d5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -104,6 +104,12 @@
 			<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>3.4.3</version>
+		</dependency>
 		
 	</dependencies>
 	<build>
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..3738ab5
--- /dev/null
+++ b/src/main/java/java2/lab12/client/CourseClient.java
@@ -0,0 +1,25 @@
+package java2.lab12.client;
+
+import java.util.Collection;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@Path("/")
+public interface CourseClient {
+
+	@GET
+	@Path("courses/")
+	@Produces(MediaType.APPLICATION_JSON)
+	Collection<Course> getCourses();
+
+	@POST
+	@Path("course/")
+	@Consumes(MediaType.APPLICATION_JSON)
+	Long createCourse(Course course);
+
+}
diff --git a/src/main/java/java2/lab12/client/TableViewSample.java b/src/main/java/java2/lab12/client/TableViewSample.java
index cbb1718..f231566 100644
--- a/src/main/java/java2/lab12/client/TableViewSample.java
+++ b/src/main/java/java2/lab12/client/TableViewSample.java
@@ -1,8 +1,12 @@
 package java2.lab12.client;
 
+import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+
 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 +30,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 {
  
 	
@@ -190,11 +196,18 @@ public class TableViewSample extends Application {
 	}
 
 	private Collection<Course> getCourses() {
-		return Collections.emptyList();
+		return getClient().getCourses();
+	}
+
+	private CourseClient getClient() {
+		return JAXRSClientFactory.create("http://localhost:8080",
+			CourseClient.class, Collections.singletonList(
+				new JacksonJaxbJsonProvider()));
 	}
 
 	private void createCourse(Course course) {
-		// TODO
+		Long id = getClient().createCourse(course);
+		course.setId(id);
 	}
 
 	private void updateCourse(Course course) {
-- 
GitLab