diff --git a/pom.xml b/pom.xml index f6dc910c7601aa3a945154d907469bb300c3cdf2..ec70ae67a89ea760b5620fc8cd0e338566be622d 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,20 @@ <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> + <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-rs-client --> + <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider --> + <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 09ccc10cd6037aa3efd47f2d646cb1a3542942be..691d09f7da65dc1c03384848c457f26c251f156f 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/CourseEndpoint.java b/src/main/java/java2/lab12/client/CourseEndpoint.java new file mode 100644 index 0000000000000000000000000000000000000000..8e4ace0411a4780cb8c78585832f7f5082ca7649 --- /dev/null +++ b/src/main/java/java2/lab12/client/CourseEndpoint.java @@ -0,0 +1,30 @@ +package java2.lab12.client; + +import java.util.List; + +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; + +public interface CourseEndpoint { + + @GET + @Path("/courses") + @Produces(MediaType.APPLICATION_JSON) + public List<Course> getCourses(); + + @PUT + @Path("/course") + @Consumes(MediaType.APPLICATION_JSON) + public void updateCourse(Course course); + + @DELETE + @Path("/course/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Course deleteCourse(@PathParam("id") Long id); +} \ No newline at end of file diff --git a/src/main/java/java2/lab12/client/TableViewSample.java b/src/main/java/java2/lab12/client/TableViewSample.java index cbb1718e833b99465dc2f0567b098a41ca9dd271..76db843545f3f310cd78ef74af5cf02dbd519056 100644 --- a/src/main/java/java2/lab12/client/TableViewSample.java +++ b/src/main/java/java2/lab12/client/TableViewSample.java @@ -2,6 +2,13 @@ package java2.lab12.client; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +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,7 +197,7 @@ public class TableViewSample extends Application { } private Collection<Course> getCourses() { - return Collections.emptyList(); + return getCourseClient().getCourses(); } private void createCourse(Course course) { @@ -198,10 +205,21 @@ public class TableViewSample extends Application { } private void updateCourse(Course course) { - // TODO + getCourseClient().updateCourse(course); } private void removeCourse(Course course) { - // TODO + getCourseClient().deleteCourse(course.getId()); + } + + private CourseEndpoint getCourseClient() { + Map<String, Object> properties = new HashMap<>(); + CourseEndpoint ce = JAXRSClientFactory.create("http://localhost:8080", CourseEndpoint.class, Collections.singletonList( + new JacksonXmlBindJsonProvider().disable( + SerializationFeature.WRAP_ROOT_VALUE).disable( + SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)), + properties, true +); + return ce; } } \ No newline at end of file