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 2017/06/07 14:55:00 UTC
deltaspike git commit: DELTASPIKE-1268 QueryProcessorFactory should
be a bean
Repository: deltaspike
Updated Branches:
refs/heads/master b48416ae6 -> d9b1acb2b
DELTASPIKE-1268 QueryProcessorFactory should be a bean
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/d9b1acb2
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/d9b1acb2
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/d9b1acb2
Branch: refs/heads/master
Commit: d9b1acb2b54b87d5ba66bba4305d2723318d869a
Parents: b48416a
Author: Thomas Andraschko <ta...@apache.org>
Authored: Wed Jun 7 16:54:52 2017 +0200
Committer: Thomas Andraschko <ta...@apache.org>
Committed: Wed Jun 7 16:54:52 2017 +0200
----------------------------------------------------------------------
.../data/impl/builder/DelegateQueryBuilder.java | 4 +-
.../builder/result/QueryProcessorFactory.java | 67 ++++++--------------
.../impl/handler/CdiQueryInvocationContext.java | 2 +-
.../impl/meta/RepositoryMethodMetadata.java | 32 +++++-----
.../RepositoryMethodMetadataInitializer.java | 20 +++---
5 files changed, 49 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d9b1acb2/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 b86252c..05d0e57 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
@@ -60,11 +60,11 @@ public class DelegateQueryBuilder extends QueryBuilder
if (delegate != null)
{
Object result = invoke(delegate, context);
- if (result instanceof Collection && context.getRepositoryMethodMetadata().isStreamAsReturnType())
+ if (result instanceof Collection && context.getRepositoryMethodMetadata().isReturnsStream())
{
return StreamUtil.wrap(result);
}
- else if (context.getRepositoryMethodMetadata().isOptionalAsReturnType())
+ else if (context.getRepositoryMethodMetadata().isReturnsOptional())
{
return OptionalUtil.wrap(result);
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d9b1acb2/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java
index 8812ae1..4139cae 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/result/QueryProcessorFactory.java
@@ -18,8 +18,8 @@
*/
package org.apache.deltaspike.data.impl.builder.result;
-import java.lang.reflect.Method;
import java.util.List;
+import javax.enterprise.context.ApplicationScoped;
import javax.persistence.NoResultException;
import javax.persistence.Query;
@@ -30,73 +30,44 @@ import org.apache.deltaspike.data.api.Modifying;
import org.apache.deltaspike.data.api.QueryResult;
import org.apache.deltaspike.data.api.SingleResultType;
import org.apache.deltaspike.data.impl.handler.CdiQueryInvocationContext;
-import org.apache.deltaspike.data.impl.meta.RepositoryMethodPrefix;
+import org.apache.deltaspike.data.impl.meta.RepositoryMethodMetadata;
-public final class QueryProcessorFactory
+@ApplicationScoped
+public class QueryProcessorFactory
{
-
- private final Method method;
- private final RepositoryMethodPrefix methodPrefix;
-
- private QueryProcessorFactory(Method method)
- {
- this.method = method;
- this.methodPrefix = new RepositoryMethodPrefix("", method.getName());
- }
-
- private QueryProcessorFactory(Method method, RepositoryMethodPrefix methodPrefix)
+ public QueryProcessor build(RepositoryMethodMetadata methodMetadata)
{
- this.method = method;
- this.methodPrefix = methodPrefix;
- }
-
- public static QueryProcessorFactory newInstance(Method method)
- {
- return new QueryProcessorFactory(method);
- }
-
- public static QueryProcessorFactory newInstance(Method method, RepositoryMethodPrefix methodPrefix)
- {
- return new QueryProcessorFactory(method, methodPrefix);
- }
-
- public QueryProcessor build()
- {
- if (returns(QueryResult.class))
+ if (returns(methodMetadata, QueryResult.class))
{
return new NoOpQueryProcessor();
}
- if (returns(List.class))
+ if (returns(methodMetadata, List.class))
{
return new ListQueryProcessor();
}
- if (streams())
+ if (methodMetadata.isReturnsStream())
{
return new StreamQueryProcessor();
}
- if (isModifying())
+ if (isModifying(methodMetadata))
{
- return new ExecuteUpdateQueryProcessor(returns(Void.TYPE));
+ return new ExecuteUpdateQueryProcessor(returns(methodMetadata, Void.TYPE));
}
return new SingleResultQueryProcessor();
}
- private boolean isModifying()
- {
- boolean matchesType = Void.TYPE.equals(method.getReturnType()) ||
- int.class.equals(method.getReturnType()) ||
- Integer.class.equals(method.getReturnType());
- return (method.isAnnotationPresent(Modifying.class) && matchesType) || methodPrefix.isDelete();
- }
-
- private boolean returns(Class<?> clazz)
+ private boolean isModifying(RepositoryMethodMetadata methodMetadata)
{
- return method.getReturnType().isAssignableFrom(clazz);
+ boolean matchesType = Void.TYPE.equals(methodMetadata.getMethod().getReturnType()) ||
+ int.class.equals(methodMetadata.getMethod().getReturnType()) ||
+ Integer.class.equals(methodMetadata.getMethod().getReturnType());
+ return (methodMetadata.getMethod().isAnnotationPresent(Modifying.class) && matchesType)
+ || methodMetadata.getMethodPrefix().isDelete();
}
- private boolean streams()
+ private boolean returns(RepositoryMethodMetadata methodMetadata, Class<?> clazz)
{
- return StreamUtil.isStreamReturned(method);
+ return methodMetadata.getMethod().getReturnType().isAssignableFrom(clazz);
}
private static final class ListQueryProcessor implements QueryProcessor
@@ -152,7 +123,7 @@ public final class QueryProcessorFactory
result = !queryResult.isEmpty() ? queryResult.get(0) : null;
}
- if (context.getRepositoryMethodMetadata().isOptionalAsReturnType())
+ if (context.getRepositoryMethodMetadata().isReturnsOptional())
{
return OptionalUtil.wrap(result);
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d9b1acb2/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/CdiQueryInvocationContext.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/CdiQueryInvocationContext.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/CdiQueryInvocationContext.java
index 16d9aee..5586daf 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/CdiQueryInvocationContext.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/handler/CdiQueryInvocationContext.java
@@ -304,7 +304,7 @@ public class CdiQueryInvocationContext implements QueryInvocationContext
? repositoryMethodMetadata.getQuery().singleResult()
: repositoryMethodMetadata.getMethodPrefix().getSingleResultStyle();
- if (repositoryMethodMetadata.isOptionalAsReturnType() && baseSingleResultType == SingleResultType.JPA)
+ if (repositoryMethodMetadata.isReturnsOptional() && baseSingleResultType == SingleResultType.JPA)
{
return SingleResultType.OPTIONAL;
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d9b1acb2/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadata.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadata.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadata.java
index c57d834..3c4e6af 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadata.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadata.java
@@ -40,8 +40,8 @@ public class RepositoryMethodMetadata
private Class<? extends QueryInOutMapper<?>> queryInOutMapperClass;
private boolean queryInOutMapperIsNormalScope;
- private boolean optionalAsReturnType;
- private boolean streamAsReturnType;
+ private boolean returnsOptional;
+ private boolean returnsStream;
public RepositoryMethodMetadata()
{
@@ -123,16 +123,6 @@ public class RepositoryMethodMetadata
this.queryInOutMapperIsNormalScope = queryInOutMapperIsNormalScope;
}
- public boolean isOptionalAsReturnType()
- {
- return optionalAsReturnType;
- }
-
- public void setOptionalAsReturnType(boolean optionalAsReturnType)
- {
- this.optionalAsReturnType = optionalAsReturnType;
- }
-
public Query getQuery()
{
return query;
@@ -153,13 +143,23 @@ public class RepositoryMethodMetadata
this.modifying = modifying;
}
- public boolean isStreamAsReturnType()
+ public boolean isReturnsOptional()
+ {
+ return returnsOptional;
+ }
+
+ public void setReturnsOptional(boolean returnsOptional)
+ {
+ this.returnsOptional = returnsOptional;
+ }
+
+ public boolean isReturnsStream()
{
- return streamAsReturnType;
+ return returnsStream;
}
- public void setStreamAsReturnType(boolean streamAsReturnType)
+ public void setReturnsStream(boolean returnsStream)
{
- this.streamAsReturnType = streamAsReturnType;
+ this.returnsStream = returnsStream;
}
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/d9b1acb2/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadataInitializer.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadataInitializer.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadataInitializer.java
index f0519d2..e21fcdc 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadataInitializer.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMethodMetadataInitializer.java
@@ -28,6 +28,7 @@ import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
import org.apache.deltaspike.core.util.OptionalUtil;
import org.apache.deltaspike.core.util.StreamUtil;
@@ -43,34 +44,35 @@ import org.apache.deltaspike.data.impl.builder.result.QueryProcessorFactory;
@ApplicationScoped
public class RepositoryMethodMetadataInitializer
{
+ @Inject
+ private QueryProcessorFactory queryProcessorFactory;
+
public RepositoryMethodMetadata init(RepositoryMetadata repositoryMetadata, Method method, BeanManager beanManager)
{
RepositoryMethodMetadata repositoryMethodMetadata = new RepositoryMethodMetadata();
repositoryMethodMetadata.setMethod(method);
+ repositoryMethodMetadata.setReturnsOptional(
+ OptionalUtil.isOptionalReturned(method));
+ repositoryMethodMetadata.setReturnsStream(
+ StreamUtil.isStreamReturned(method));
+
repositoryMethodMetadata.setQuery(method.isAnnotationPresent(Query.class)
? method.getAnnotation(Query.class) : null);
repositoryMethodMetadata.setModifying(method.isAnnotationPresent(Modifying.class)
? method.getAnnotation(Modifying.class) : null);
-
-
+
repositoryMethodMetadata.setMethodPrefix(new RepositoryMethodPrefix(
repositoryMetadata.getRepositoryClass().getAnnotation(Repository.class).methodPrefix(),
method.getName()));
repositoryMethodMetadata.setMethodType(
extractMethodType(repositoryMetadata, repositoryMethodMetadata));
- repositoryMethodMetadata.setQueryProcessor(
- QueryProcessorFactory.newInstance(method, repositoryMethodMetadata.getMethodPrefix()).build());
+ repositoryMethodMetadata.setQueryProcessor(queryProcessorFactory.build(repositoryMethodMetadata));
repositoryMethodMetadata.setQueryInOutMapperClass(
extractMapper(method, repositoryMetadata));
-
- repositoryMethodMetadata.setOptionalAsReturnType(
- OptionalUtil.isOptionalReturned(method));
- repositoryMethodMetadata.setStreamAsReturnType(
- StreamUtil.isStreamReturned(method));
initQueryRoot(repositoryMetadata, repositoryMethodMetadata);
initQueryInOutMapperIsNormalScope(repositoryMetadata, repositoryMethodMetadata, beanManager);