You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2014/06/30 15:00:27 UTC
[2/2] git commit: DELTASPIKE-654 veto converters and validators
without injection-points or normal-scope
DELTASPIKE-654 veto converters and validators without injection-points or normal-scope
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/0584be0c
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/0584be0c
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/0584be0c
Branch: refs/heads/master
Commit: 0584be0cf1d55fafcf09163e28d0923aab095b1b
Parents: a411ec7
Author: gpetracek <gp...@apache.org>
Authored: Mon Jun 30 14:51:30 2014 +0200
Committer: gpetracek <gp...@apache.org>
Committed: Mon Jun 30 14:54:25 2014 +0200
----------------------------------------------------------------------
.../ConverterAndValidatorProxyExtension.java | 22 +++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/0584be0c/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/injection/proxy/ConverterAndValidatorProxyExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/injection/proxy/ConverterAndValidatorProxyExtension.java b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/injection/proxy/ConverterAndValidatorProxyExtension.java
index dff508f..7c6f58a 100644
--- a/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/injection/proxy/ConverterAndValidatorProxyExtension.java
+++ b/deltaspike/modules/jsf/impl/src/main/java/org/apache/deltaspike/jsf/impl/injection/proxy/ConverterAndValidatorProxyExtension.java
@@ -34,6 +34,7 @@ import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
import javax.faces.convert.Converter;
import javax.faces.validator.Validator;
+import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -55,7 +56,7 @@ public class ConverterAndValidatorProxyExtension implements Extension, Deactivat
@SuppressWarnings("UnusedDeclaration")
public <X> void findConverterAndValidatorsWhichNeedProxiesForDependencyInjectionSupport(
- @Observes ProcessAnnotatedType<X> pat)
+ @Observes ProcessAnnotatedType<X> pat, BeanManager beanManager)
{
if (!this.isActivated)
{
@@ -69,6 +70,14 @@ public class ConverterAndValidatorProxyExtension implements Extension, Deactivat
return;
}
+ Bean<X> bean = new BeanBuilder<X>(beanManager).readFromType(pat.getAnnotatedType()).create();
+ //veto normal converters/validators -> they will get excluded from the special handling later on
+ if (!hasInjectionPoints(bean) && !hasNormalScopeAnnotation(bean, beanManager))
+ {
+ pat.veto();
+ return;
+ }
+
//converters/validators without properties for tags, will be handled by the corresponding manual wrapper
if (!hasPublicProperty(beanClass))
{
@@ -96,6 +105,17 @@ public class ConverterAndValidatorProxyExtension implements Extension, Deactivat
}
}
+ protected <X> boolean hasInjectionPoints(Bean<X> bean)
+ {
+ return !bean.getInjectionPoints().isEmpty();
+ }
+
+ protected <X> boolean hasNormalScopeAnnotation(Bean<X> bean, BeanManager beanManager)
+ {
+ Class<? extends Annotation> scopeAnnotationClass = bean.getScope();
+ return scopeAnnotationClass != null && beanManager.isNormalScope(scopeAnnotationClass);
+ }
+
protected <X> boolean hasPublicProperty(Class<X> beanClass)
{
for (Method currentMethod : beanClass.getMethods())