diff --git a/pom.xml b/pom.xml index f6dc910c7601aa3a945154d907469bb300c3cdf2..8918ed114d46acd8061f9bdbfb6317165afaf4c4 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 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/CourseClient.java b/src/main/java/java2/lab12/client/CourseClient.java new file mode 100644 index 0000000000000000000000000000000000000000..dcdf4234f9b513b3303709811d58d501e1e8d175 --- /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 cbb1718e833b99465dc2f0567b098a41ca9dd271..13af0c6d092c952a2657562be0da57ba48a4baea 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