From b0c6d32f0ef655f63e69eca192d715aa5ee4f218 Mon Sep 17 00:00:00 2001 From: jGauravGupta Date: Thu, 17 Aug 2017 13:16:19 +0530 Subject: [PATCH] JPA Result Stream Test --- jpa/pom.xml | 25 +++++++++ jpa/stream/pom.xml | 13 +++++ .../org/javaee8/jpa/stream/domain/Person.java | 52 +++++++++++++++++++ .../stream/repository/PersonRepository.java | 25 +++++++++ .../controller/PersonControllerTest.java | 43 +++++++++++++++ .../test/resources/META-INF/sql/insert.sql | 2 + jpa/stream/src/test/resources/beans.xml | 6 +++ .../src/test/resources/test-persistence.xml | 11 ++++ pom.xml | 8 +++ 9 files changed, 185 insertions(+) create mode 100644 jpa/pom.xml create mode 100644 jpa/stream/pom.xml create mode 100644 jpa/stream/src/main/java/org/javaee8/jpa/stream/domain/Person.java create mode 100644 jpa/stream/src/main/java/org/javaee8/jpa/stream/repository/PersonRepository.java create mode 100644 jpa/stream/src/test/java/org/javaee8/jpa/stream/controller/PersonControllerTest.java create mode 100644 jpa/stream/src/test/resources/META-INF/sql/insert.sql create mode 100644 jpa/stream/src/test/resources/beans.xml create mode 100644 jpa/stream/src/test/resources/test-persistence.xml diff --git a/jpa/pom.xml b/jpa/pom.xml new file mode 100644 index 00000000..9aef351a --- /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 00000000..910c3cb0 --- /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 00000000..e6c11668 --- /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 00000000..4eca1d5f --- /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 00000000..54b0f75f --- /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 00000000..8be18f13 --- /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 00000000..2777559c --- /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 00000000..6e1a33cf --- /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 a97a21c2..8fa1159f 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ servlet jsf cdi + jpa @@ -123,6 +124,13 @@ provided + + org.eclipse.persistence + javax.persistence + 2.2.0-RC1 + provided + + javax.annotation javax.annotation-api