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")