diff --git a/pom.xml b/pom.xml index d186d924cd7f594eb9043812089ab89058ba8fb5..a5e3054a77b626cfcd0d1f2f61b586748af56adc 100644 --- a/pom.xml +++ b/pom.xml @@ -104,7 +104,13 @@ <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> <plugins> 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..cebb7887b43b29b42a5430f859cbbebf82b9ccd8 --- /dev/null +++ b/src/main/java/java2/lab12/client/CourseClient.java @@ -0,0 +1,24 @@ +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 76a23c090d00533e4a578b1fc621b19a53ee9814..39f09d6c34a4eb1b7104ff92cf5ef5368dd48386 100644 --- a/src/main/java/java2/lab12/client/TableViewSample.java +++ b/src/main/java/java2/lab12/client/TableViewSample.java @@ -1,7 +1,14 @@ package java2.lab12.client; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider; + import java.util.Collection; import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.apache.cxf.jaxrs.client.JAXRSClientFactory; import javafx.application.Application; import javafx.collections.FXCollections; @@ -24,7 +31,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 { @@ -158,8 +167,21 @@ public class TableViewSample extends Application { System.exit(0); } + private CourseClient getClient() { + Map<String, Object> properties = new HashMap<>(); + + CourseClient client = JAXRSClientFactory.create("http://localhost:8080", + CourseClient.class, Collections.singletonList( + new JacksonJaxbJsonProvider().disable( + SerializationFeature.WRAP_ROOT_VALUE).disable( + SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)), + properties, true); + return client; + } + private Collection<Course> getCourses() { - return Collections.emptyList(); + CourseClient client = getClient(); + return client.getCourses(); } private void createCourse(Course p) {