diff --git a/jsonb/mapping/pom.xml b/jsonb/mapping/pom.xml
new file mode 100644
index 0000000..7904deb
--- /dev/null
+++ b/jsonb/mapping/pom.xml
@@ -0,0 +1,14 @@
+
+ 4.0.0
+
+
+ org.javaee8
+ jsonb
+ 1.0-SNAPSHOT
+
+
+ mapping
+ war
+ Java EE 8 Samples: JSON-B - Mapping
+
+
diff --git a/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/ApplicationConfig.java b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/ApplicationConfig.java
new file mode 100644
index 0000000..b285fee
--- /dev/null
+++ b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/ApplicationConfig.java
@@ -0,0 +1,26 @@
+package org.javaee8.jsonb.mapping.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.jsonb.mapping.controller.PersonController.class);
+ }
+
+}
diff --git a/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/PersonController.java b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/PersonController.java
new file mode 100644
index 0000000..16c5e34
--- /dev/null
+++ b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/controller/PersonController.java
@@ -0,0 +1,37 @@
+package org.javaee8.jsonb.mapping.controller;
+
+import org.javaee8.jsonb.mapping.domain.Person;
+import java.util.Arrays;
+import java.util.List;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+
+/**
+ *
+ * @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("Prague");
+ person1.setPin("Mihalyi");
+
+ Person person2 = new Person();
+ person2.setName("Mert");
+ person2.setAddress("Turkey");
+ person2.setPin("Caliskan");
+
+ return Arrays.asList(person1, person2);
+ }
+
+}
diff --git a/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/domain/Person.java b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/domain/Person.java
new file mode 100644
index 0000000..430e27e
--- /dev/null
+++ b/jsonb/mapping/src/main/java/org/javaee8/jsonb/mapping/domain/Person.java
@@ -0,0 +1,54 @@
+package org.javaee8.jsonb.mapping.domain;
+
+import java.io.Serializable;
+import javax.json.bind.annotation.JsonbProperty;
+import javax.json.bind.annotation.JsonbTransient;
+
+/**
+ *
+ * @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;
+
+ /**
+ * Property 'pin' will be ignored by JSON Binding engine
+ */
+ @JsonbTransient
+ private String pin;
+
+
+ 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;
+ }
+
+ public String getPin() {
+ return pin;
+ }
+
+ public void setPin(String pin) {
+ this.pin = pin;
+ }
+
+}
\ No newline at end of file
diff --git a/jsonb/mapping/src/test/java/org/javaee8/jsonb/mapping/controller/PersonControllerTest.java b/jsonb/mapping/src/test/java/org/javaee8/jsonb/mapping/controller/PersonControllerTest.java
new file mode 100644
index 0000000..8c6df0d
--- /dev/null
+++ b/jsonb/mapping/src/test/java/org/javaee8/jsonb/mapping/controller/PersonControllerTest.java
@@ -0,0 +1,63 @@
+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;
+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.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;
+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\":\"Prague\",\"pname\":\"Ondrej\"},{\"address\":\"Turkey\",\"pname\":\"Mert\"}]", val);
+ }
+
+}
diff --git a/jsonb/pom.xml b/jsonb/pom.xml
new file mode 100644
index 0000000..6a00f10
--- /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
+
+
+ mapping
+
+
+
+
+ org.javaee8
+ test-utils
+ ${project.version}
+
+
+
\ No newline at end of file
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