From 6b3ab02597275a8e47370830f869001e0bb4925a Mon Sep 17 00:00:00 2001 From: jGauravGupta Date: Thu, 17 Aug 2017 15:20:29 +0530 Subject: [PATCH 1/3] JSON-B Property test --- jsonb/pom.xml | 25 ++++++++ jsonb/property/pom.xml | 14 +++++ .../stream/controller/ApplicationConfig.java | 26 ++++++++ .../stream/controller/PersonController.java | 36 +++++++++++ .../org/javaee8/jpa/stream/domain/Person.java | 38 ++++++++++++ .../controller/PersonControllerTest.java | 61 +++++++++++++++++++ pom.xml | 15 +++++ 7 files changed, 215 insertions(+) create mode 100644 jsonb/pom.xml create mode 100644 jsonb/property/pom.xml create mode 100644 jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java create mode 100644 jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java create mode 100644 jsonb/property/src/main/java/org/javaee8/jpa/stream/domain/Person.java create mode 100644 jsonb/property/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java diff --git a/jsonb/pom.xml b/jsonb/pom.xml new file mode 100644 index 0000000..dcd27c4 --- /dev/null +++ b/jsonb/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + + org.javaee8 + samples-parent + 1.0-SNAPSHOT + + + jsonb + pom + Java EE 8 Samples: JSON-B + + + property + + + + + org.javaee8 + test-utils + ${project.version} + + + \ No newline at end of file diff --git a/jsonb/property/pom.xml b/jsonb/property/pom.xml new file mode 100644 index 0000000..cd1c726 --- /dev/null +++ b/jsonb/property/pom.xml @@ -0,0 +1,14 @@ + + 4.0.0 + + + org.javaee8 + jsonb + 1.0-SNAPSHOT + + + property + war + Java EE 8 Samples: JSON-B - Property + + diff --git a/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java b/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java new file mode 100644 index 0000000..d8ea72b --- /dev/null +++ b/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java @@ -0,0 +1,26 @@ +package org.javaee8.jpa.stream.controller; + +import java.util.HashSet; +import java.util.Set; +import javax.ws.rs.core.Application; + +/** + * + * @author Gaurav Gupta + * + */ +@javax.ws.rs.ApplicationPath("resources") +public class ApplicationConfig extends Application { + + @Override + public Set> getClasses() { + Set> resources = new HashSet<>(); + addRestResourceClasses(resources); + return resources; + } + + private void addRestResourceClasses(Set> resources) { + resources.add(org.javaee8.jpa.stream.controller.PersonController.class); + } + +} diff --git a/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java b/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java new file mode 100644 index 0000000..210a1c7 --- /dev/null +++ b/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java @@ -0,0 +1,36 @@ +package org.javaee8.jpa.stream.controller; + +import org.javaee8.jpa.stream.domain.Person; +import java.util.Arrays; +import java.util.List; +import javax.ws.rs.GET; +import javax.ws.rs.Path; + +/** + * REST controller for managing Person. + * + * @author Gaurav Gupta + */ +@Path("/api/person") +public class PersonController { + + /** + * GET : get all the people. + * + * @return the Response with status 200 (OK) and the list of people in body + * + */ + @GET + public List getAllPeople() { + Person person1 = new Person(); + person1.setName("Ondrej"); + person1.setAddress("xyz"); + + Person person2 = new Person(); + person2.setName("Mert"); + person2.setAddress("pqrs"); + + return Arrays.asList(person1, person2); + } + +} diff --git a/jsonb/property/src/main/java/org/javaee8/jpa/stream/domain/Person.java b/jsonb/property/src/main/java/org/javaee8/jpa/stream/domain/Person.java new file mode 100644 index 0000000..e0a85a5 --- /dev/null +++ b/jsonb/property/src/main/java/org/javaee8/jpa/stream/domain/Person.java @@ -0,0 +1,38 @@ +package org.javaee8.jpa.stream.domain; + +import java.io.Serializable; +import javax.json.bind.annotation.JsonbProperty; + +/** + * + * @author Gaurav Gupta + * + */ +public class Person implements Serializable { + + /** + * JsonbProperty is used to change name of one particular property. + * Property 'name' will be serialized to 'pname' property + */ + @JsonbProperty("pname") + private String name; + + private String address; + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return this.address; + } + + public void setAddress(String address) { + this.address = address; + } + +} \ No newline at end of file diff --git a/jsonb/property/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java b/jsonb/property/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java new file mode 100644 index 0000000..c533129 --- /dev/null +++ b/jsonb/property/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java @@ -0,0 +1,61 @@ +package org.javaee8.jpa.stream.controller; + +import java.net.URI; +import java.net.URL; +import java.util.List; +import javax.json.bind.Jsonb; +import javax.json.bind.JsonbBuilder; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.Response; +import org.javaee8.jpa.stream.domain.Person; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.arquillian.test.api.ArquillianResource; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.junit.Test; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.runner.RunWith; + +/** + * + * @author Gaurav Gupta + * + */ +@RunWith(Arquillian.class) +public class PersonControllerTest { + + private static final String RESOURCE_PATH = "api/person"; + + @ArquillianResource + private URL base; + + private static WebTarget target; + + @Deployment + public static WebArchive createDeployment() { + return ShrinkWrap.create(WebArchive.class) + .addClass(Person.class) + .addClass(PersonController.class) + .addClass(ApplicationConfig.class); + } + + @Before + public void setUpClass() throws Exception { + Client client = ClientBuilder.newClient(); + target = client.target(URI.create(new URL(base, "resources/").toExternalForm())); + } + + @Test + public void testJSONB() throws Exception { + Jsonb jsonb = JsonbBuilder.create(); + // Get all the people + Response response = target.path(RESOURCE_PATH).request().get(); + String val = jsonb.toJson(response.readEntity(List.class)); + assertEquals("[{\"address\":\"xyz\",\"pname\":\"Ondrej\"},{\"address\":\"pqrs\",\"pname\":\"Mert\"}]", val); + } + +} diff --git a/pom.xml b/pom.xml index a97a21c..ef170ec 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ servlet jsf cdi + jsonb @@ -123,6 +124,20 @@ provided + + javax.ws.rs + javax.ws.rs-api + 2.1 + provided + + + + javax.json.bind + javax.json.bind-api + 1.0 + provided + + javax.annotation javax.annotation-api From f003a84839be30af26a207ed3b9a55d9706fa9d8 Mon Sep 17 00:00:00 2001 From: jGauravGupta Date: Thu, 17 Aug 2017 15:32:11 +0530 Subject: [PATCH 2/3] JSON-B Transient test --- jsonb/{property => mapping}/pom.xml | 4 ++-- .../jpa/stream/controller/ApplicationConfig.java | 0 .../jpa/stream/controller/PersonController.java | 7 ++++--- .../org/javaee8/jpa/stream/domain/Person.java | 16 ++++++++++++++++ .../stream/controller/PersonControllerTest.java | 2 +- jsonb/pom.xml | 2 +- 6 files changed, 24 insertions(+), 7 deletions(-) rename jsonb/{property => mapping}/pom.xml (83%) rename jsonb/{property => mapping}/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java (100%) rename jsonb/{property => mapping}/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java (82%) rename jsonb/{property => mapping}/src/main/java/org/javaee8/jpa/stream/domain/Person.java (70%) rename jsonb/{property => mapping}/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java (93%) diff --git a/jsonb/property/pom.xml b/jsonb/mapping/pom.xml similarity index 83% rename from jsonb/property/pom.xml rename to jsonb/mapping/pom.xml index cd1c726..7904deb 100644 --- a/jsonb/property/pom.xml +++ b/jsonb/mapping/pom.xml @@ -7,8 +7,8 @@ 1.0-SNAPSHOT - property + mapping war - Java EE 8 Samples: JSON-B - Property + Java EE 8 Samples: JSON-B - Mapping diff --git a/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java b/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java similarity index 100% rename from jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java rename to jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java diff --git a/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java b/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java similarity index 82% rename from jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java rename to jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java index 210a1c7..62c87af 100644 --- a/jsonb/property/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java +++ b/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java @@ -7,7 +7,6 @@ import javax.ws.rs.Path; /** - * REST controller for managing Person. * * @author Gaurav Gupta */ @@ -24,11 +23,13 @@ public class PersonController { public List getAllPeople() { Person person1 = new Person(); person1.setName("Ondrej"); - person1.setAddress("xyz"); + person1.setAddress("Prague"); + person1.setPin("Mihalyi"); Person person2 = new Person(); person2.setName("Mert"); - person2.setAddress("pqrs"); + person2.setAddress("Turkey"); + person2.setPin("Caliskan"); return Arrays.asList(person1, person2); } diff --git a/jsonb/property/src/main/java/org/javaee8/jpa/stream/domain/Person.java b/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/domain/Person.java similarity index 70% rename from jsonb/property/src/main/java/org/javaee8/jpa/stream/domain/Person.java rename to jsonb/mapping/src/main/java/org/javaee8/jpa/stream/domain/Person.java index e0a85a5..537b0b4 100644 --- a/jsonb/property/src/main/java/org/javaee8/jpa/stream/domain/Person.java +++ b/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/domain/Person.java @@ -2,6 +2,7 @@ import java.io.Serializable; import javax.json.bind.annotation.JsonbProperty; +import javax.json.bind.annotation.JsonbTransient; /** * @@ -18,6 +19,13 @@ public class Person implements Serializable { private String name; private String address; + + /** + * Property 'pin' will be ignored by JSON Binding engine + */ + @JsonbTransient + private String pin; + public String getName() { return this.name; @@ -35,4 +43,12 @@ public void setAddress(String address) { this.address = address; } + public String getPin() { + return pin; + } + + public void setPin(String pin) { + this.pin = pin; + } + } \ No newline at end of file diff --git a/jsonb/property/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java b/jsonb/mapping/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java similarity index 93% rename from jsonb/property/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java rename to jsonb/mapping/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java index c533129..822dc5e 100644 --- a/jsonb/property/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java +++ b/jsonb/mapping/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java @@ -55,7 +55,7 @@ public void testJSONB() throws Exception { // Get all the people Response response = target.path(RESOURCE_PATH).request().get(); String val = jsonb.toJson(response.readEntity(List.class)); - assertEquals("[{\"address\":\"xyz\",\"pname\":\"Ondrej\"},{\"address\":\"pqrs\",\"pname\":\"Mert\"}]", val); + assertEquals("[{\"address\":\"Prague\",\"pname\":\"Ondrej\"},{\"address\":\"Turkey\",\"pname\":\"Mert\"}]", val); } } diff --git a/jsonb/pom.xml b/jsonb/pom.xml index dcd27c4..6a00f10 100644 --- a/jsonb/pom.xml +++ b/jsonb/pom.xml @@ -12,7 +12,7 @@ Java EE 8 Samples: JSON-B - property + mapping From 865b8d26da0779e5173a2996ed17132d427891b8 Mon Sep 17 00:00:00 2001 From: jGauravGupta Date: Thu, 17 Aug 2017 15:48:19 +0530 Subject: [PATCH 3/3] typo fix --- .../mapping}/controller/ApplicationConfig.java | 4 ++-- .../mapping}/controller/PersonController.java | 4 ++-- .../{jpa/stream => jsonb/mapping}/domain/Person.java | 2 +- .../mapping}/controller/PersonControllerTest.java | 6 ++++-- 4 files changed, 9 insertions(+), 7 deletions(-) rename jsonb/mapping/src/main/java/org/javaee8/{jpa/stream => jsonb/mapping}/controller/ApplicationConfig.java (78%) rename jsonb/mapping/src/main/java/org/javaee8/{jpa/stream => jsonb/mapping}/controller/PersonController.java (88%) rename jsonb/mapping/src/main/java/org/javaee8/{jpa/stream => jsonb/mapping}/domain/Person.java (95%) rename jsonb/mapping/src/test/java/org/javaee8/{jpa/stream => jsonb/mapping}/controller/PersonControllerTest.java (89%) diff --git a/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/ApplicationConfig.java similarity index 78% rename from jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java rename to jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/ApplicationConfig.java index d8ea72b..b285fee 100644 --- a/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/ApplicationConfig.java +++ b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/ApplicationConfig.java @@ -1,4 +1,4 @@ -package org.javaee8.jpa.stream.controller; +package org.javaee8.jsonb.mapping.controller; import java.util.HashSet; import java.util.Set; @@ -20,7 +20,7 @@ public Set> getClasses() { } private void addRestResourceClasses(Set> resources) { - resources.add(org.javaee8.jpa.stream.controller.PersonController.class); + resources.add(org.javaee8.jsonb.mapping.controller.PersonController.class); } } diff --git a/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/PersonController.java similarity index 88% rename from jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java rename to jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/PersonController.java index 62c87af..16c5e34 100644 --- a/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/controller/PersonController.java +++ b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/PersonController.java @@ -1,6 +1,6 @@ -package org.javaee8.jpa.stream.controller; +package org.javaee8.jsonb.mapping.controller; -import org.javaee8.jpa.stream.domain.Person; +import org.javaee8.jsonb.mapping.domain.Person; import java.util.Arrays; import java.util.List; import javax.ws.rs.GET; diff --git a/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/domain/Person.java b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/domain/Person.java similarity index 95% rename from jsonb/mapping/src/main/java/org/javaee8/jpa/stream/domain/Person.java rename to jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/domain/Person.java index 537b0b4..430e27e 100644 --- a/jsonb/mapping/src/main/java/org/javaee8/jpa/stream/domain/Person.java +++ b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/domain/Person.java @@ -1,4 +1,4 @@ -package org.javaee8.jpa.stream.domain; +package org.javaee8.jsonb.mapping.domain; import java.io.Serializable; import javax.json.bind.annotation.JsonbProperty; diff --git a/jsonb/mapping/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java b/jsonb/mapping/src/test/java/org/javaee8/jsonb/mapping/controller/PersonControllerTest.java similarity index 89% rename from jsonb/mapping/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java rename to jsonb/mapping/src/test/java/org/javaee8/jsonb/mapping/controller/PersonControllerTest.java index 822dc5e..8c6df0d 100644 --- a/jsonb/mapping/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java +++ b/jsonb/mapping/src/test/java/org/javaee8/jsonb/mapping/controller/PersonControllerTest.java @@ -1,5 +1,7 @@ -package org.javaee8.jpa.stream.controller; +package org.javaee8.jsonb.mapping.controller; +import org.javaee8.jsonb.mapping.controller.ApplicationConfig; +import org.javaee8.jsonb.mapping.controller.PersonController; import java.net.URI; import java.net.URL; import java.util.List; @@ -9,7 +11,7 @@ import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Response; -import org.javaee8.jpa.stream.domain.Person; +import org.javaee8.jsonb.mapping.domain.Person; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.test.api.ArquillianResource;