diff --git a/jpa/pom.xml b/jpa/pom.xml new file mode 100644 index 0000000..9aef351 --- /dev/null +++ b/jpa/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + + org.javaee8 + samples-parent + 1.0-SNAPSHOT + + + jpa + pom + Java EE 8 Samples: JPA + + + stream + + + + + org.javaee8 + test-utils + ${project.version} + + + \ No newline at end of file diff --git a/jpa/stream/pom.xml b/jpa/stream/pom.xml new file mode 100644 index 0000000..910c3cb --- /dev/null +++ b/jpa/stream/pom.xml @@ -0,0 +1,13 @@ + + 4.0.0 + + + org.javaee8 + jpa + 1.0-SNAPSHOT + + + stream + war + Java EE 8 Samples: JPA - Stream + diff --git a/jpa/stream/src/main/java/org/javaee8/jpa/stream/domain/Person.java b/jpa/stream/src/main/java/org/javaee8/jpa/stream/domain/Person.java new file mode 100644 index 0000000..e6c1166 --- /dev/null +++ b/jpa/stream/src/main/java/org/javaee8/jpa/stream/domain/Person.java @@ -0,0 +1,52 @@ +package org.javaee8.jpa.stream.domain; + +import java.io.Serializable; +import javax.persistence.Basic; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +/** + * + * @author Gaurav Gupta + * + */ +@Entity +public class Person implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Basic + private String name; + + @Basic + private String address; + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + 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/jpa/stream/src/main/java/org/javaee8/jpa/stream/repository/PersonRepository.java b/jpa/stream/src/main/java/org/javaee8/jpa/stream/repository/PersonRepository.java new file mode 100644 index 0000000..4eca1d5 --- /dev/null +++ b/jpa/stream/src/main/java/org/javaee8/jpa/stream/repository/PersonRepository.java @@ -0,0 +1,25 @@ +package org.javaee8.jpa.stream.repository; + +import java.util.stream.Stream; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.criteria.CriteriaQuery; +import org.javaee8.jpa.stream.domain.Person; + +/** + * + * @author Gaurav Gupta + * + */ +public class PersonRepository { + + @PersistenceContext(unitName = "DEFAULT_PU") + private EntityManager em; + + public Stream findAll() { + CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); + cq.select(cq.from(Person.class)); + return em.createQuery(cq).getResultStream(); + } + +} diff --git a/jpa/stream/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java b/jpa/stream/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java new file mode 100644 index 0000000..54b0f75 --- /dev/null +++ b/jpa/stream/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java @@ -0,0 +1,43 @@ +package org.javaee8.jpa.stream.controller; + +import java.util.stream.Stream; +import org.javaee8.jpa.stream.repository.PersonRepository; +import org.javaee8.jpa.stream.domain.Person; +import javax.inject.Inject; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +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.runner.RunWith; + +/** + * + * @author Gaurav Gupta + * + */ +@RunWith(Arquillian.class) +public class PersonControllerTest { + + @Deployment + public static WebArchive createDeployment() { + return ShrinkWrap.create(WebArchive.class) + .addAsWebInfResource("beans.xml") + .addAsResource("test-persistence.xml", "META-INF/persistence.xml") + .addAsResource("META-INF/sql/insert.sql") + .addClass(Person.class) + .addClass(PersonRepository.class); + } + + @Inject + private PersonRepository personRepository; + + @Test + public void testStream() throws Exception { + Stream personStream = personRepository.findAll(); + long personCount = personStream.count(); + assertEquals(2, personCount); + } + +} diff --git a/jpa/stream/src/test/resources/META-INF/sql/insert.sql b/jpa/stream/src/test/resources/META-INF/sql/insert.sql new file mode 100644 index 0000000..8be18f1 --- /dev/null +++ b/jpa/stream/src/test/resources/META-INF/sql/insert.sql @@ -0,0 +1,2 @@ +INSERT INTO person (id, name, address) VALUES (1002, 'Arjan', 'abc') +INSERT INTO person (id, name, address) VALUES (1001, 'Gaurav', 'xyz') diff --git a/jpa/stream/src/test/resources/beans.xml b/jpa/stream/src/test/resources/beans.xml new file mode 100644 index 0000000..2777559 --- /dev/null +++ b/jpa/stream/src/test/resources/beans.xml @@ -0,0 +1,6 @@ + + + diff --git a/jpa/stream/src/test/resources/test-persistence.xml b/jpa/stream/src/test/resources/test-persistence.xml new file mode 100644 index 0000000..6e1a33c --- /dev/null +++ b/jpa/stream/src/test/resources/test-persistence.xml @@ -0,0 +1,11 @@ + + + + java:comp/DefaultDataSource + false + + + + + + diff --git a/pom.xml b/pom.xml index ef170ec..ed3a2f0 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ servlet jsf cdi + jpa jsonb @@ -124,6 +125,13 @@ provided + + org.eclipse.persistence + javax.persistence + 2.2.0-RC1 + provided + + javax.ws.rs javax.ws.rs-api