You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by ta...@apache.org on 2018/04/23 14:34:58 UTC

deltaspike git commit: DELTASPIKE-1315 EntityRepository should offer an findOptionalBy

Repository: deltaspike
Updated Branches:
  refs/heads/master 269eb82f7 -> 1a6a0013a


DELTASPIKE-1315 EntityRepository should offer an findOptionalBy

Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/1a6a0013
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/1a6a0013
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/1a6a0013

Branch: refs/heads/master
Commit: 1a6a0013aa55f0bfd6d8ff42e32e1a9f1b39633c
Parents: 269eb82
Author: Thomas Andraschko <ta...@apache.org>
Authored: Mon Apr 23 16:34:42 2018 +0200
Committer: Thomas Andraschko <ta...@apache.org>
Committed: Mon Apr 23 16:34:42 2018 +0200

----------------------------------------------------------------------
 .../apache/deltaspike/data/api/EntityRepository.java  |  9 +++++++++
 .../data/impl/builder/DelegateQueryBuilder.java       |  2 +-
 .../data/impl/handler/EntityRepositoryHandler.java    |  5 +++--
 .../impl/handler/EntityRepositoryHandlerTest.java     | 14 ++++++++++++++
 4 files changed, 27 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/1a6a0013/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
index 33243a9..9aa57cc 100755
--- a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
+++ b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
@@ -20,6 +20,7 @@ package org.apache.deltaspike.data.api;
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Optional;
 
 import javax.persistence.metamodel.SingularAttribute;
 
@@ -40,6 +41,14 @@ public interface EntityRepository<E, PK extends Serializable> extends EntityPers
      * @return                  Entity identified by primary or null if it does not exist.
      */
     E findBy(PK primaryKey);
+    
+    /**
+     * Entity lookup by primary key. Convenicence method around
+     * {@link javax.persistence.EntityManager#find(Class, Object)}.
+     * @param primaryKey        DB primary key.
+     * @return                  Entity identified by primary or null if it does not exist, wrapped by Optional.
+     */
+    Optional<E> findOptionalBy(PK primaryKey);
 
     /**
      * Lookup all existing entities of entity class {@code <E>}.

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/1a6a0013/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java
index 4316b55..ec34101 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/DelegateQueryBuilder.java
@@ -62,7 +62,7 @@ public class DelegateQueryBuilder extends QueryBuilder
                 {
                     return ((Collection) result).stream();
                 }
-                else if (context.getRepositoryMethodMetadata().isReturnsOptional())
+                else if (context.getRepositoryMethodMetadata().isReturnsOptional() && !(result instanceof Optional))
                 {
                     return Optional.ofNullable(result);
                 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/1a6a0013/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandler.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandler.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandler.java
index 0eb2340..17c05f0 100755
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandler.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandler.java
@@ -121,9 +121,10 @@ public class EntityRepositoryHandler<E, PK extends Serializable>
         }
     }
 
-    public Object findOptional(PK primaryKey)
+    @Override
+    public Optional<E> findOptionalBy(PK primaryKey)
     {
-        Object found = null;
+        E found = null;
         try
         {
             found = findBy(primaryKey);

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/1a6a0013/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
index b9e60be..a44d489 100644
--- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
+++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/handler/EntityRepositoryHandlerTest.java
@@ -38,6 +38,7 @@ import org.junit.experimental.categories.Category;
 import javax.inject.Inject;
 import javax.persistence.metamodel.SingularAttribute;
 import java.util.List;
+import java.util.Optional;
 
 import static org.apache.deltaspike.data.test.util.TestDeployments.initDeployment;
 import static org.junit.Assert.assertEquals;
@@ -167,6 +168,19 @@ public class EntityRepositoryHandlerTest extends TransactionalTestCase
         // then
         assertEquals(simple.getName(), find.getName());
     }
+    
+    @Test
+    public void should_find__by_pk() throws Exception
+    {
+        // given
+        Simple simple = testData.createSimple("testFindByPk");
+
+        // when
+        Optional<Simple> find = repo.findOptionalBy(simple.getId());
+
+        // then
+        assertEquals(simple.getName(), find.get().getName());
+    }
 
     @Test
     @SuppressWarnings("unchecked")