Author: rmannibucau
Date: Fri Jun 16 11:08:52 2017
New Revision: 1798909

URL: http://svn.apache.org/viewvc?rev=1798909&view=rev
Log:
moving InterceptionFactory validation at startup

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptionFactoryBean.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-tck/testng-dev.xml

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptionFactoryBean.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptionFactoryBean.java?rev=1798909&r1=1798908&r2=1798909&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptionFactoryBean.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptionFactoryBean.java
 Fri Jun 16 11:08:52 2017
@@ -73,23 +73,9 @@ public class InterceptionFactoryBean ext
                                                  final 
CreationalContextImpl<InterceptionFactory<?>> creationalContext)
         {
             final InjectionPoint ip = creationalContext.getInjectionPoint();
-            if (!ParameterizedType.class.isInstance(ip.getType()))
-            {
-                throw new IllegalArgumentException(
-                        "No type specified for the interception factory, 
ensure to paramterize it");
-            }
-            final ParameterizedType pt = 
ParameterizedType.class.cast(ip.getType());
-            if (pt.getActualTypeArguments() == null || 
pt.getActualTypeArguments().length != 1)
-            {
-                throw new IllegalArgumentException("No explicit type specified 
for the interception factory");
-            }
-            final Type type = pt.getActualTypeArguments()[0];
-            if (!Class.class.isInstance(type))
-            {
-                throw new IllegalArgumentException("InterceptionFactory only 
works with Class, no generics");
-            }
-
-            final AnnotatedType<?> at = 
context.getBeanManagerImpl().createAnnotatedType(Class.class.cast(type));
+            final AnnotatedType<?> at = 
context.getBeanManagerImpl().createAnnotatedType(
+                    // already validated at startup so let's be brutal at 
runtime
+                    
Class.class.cast(ParameterizedType.class.cast(ip.getType()).getActualTypeArguments()[0]));
             return new InterceptionFactoryImpl(context, at, 
ip.getQualifiers(), creationalContext);
         }
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1798909&r1=1798908&r2=1798909&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
 Fri Jun 16 11:08:52 2017
@@ -111,6 +111,7 @@ import javax.enterprise.inject.spi.Befor
 import javax.enterprise.inject.spi.DeploymentException;
 import javax.enterprise.inject.spi.Extension;
 import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InterceptionFactory;
 import javax.enterprise.inject.spi.Interceptor;
 import javax.enterprise.inject.spi.PassivationCapable;
 import javax.enterprise.inject.spi.ProcessAnnotatedType;
@@ -1677,6 +1678,24 @@ public final class WebBeansUtil
                         throw new WebBeansConfigurationException("injected 
bean parameter must be " + rawType);
                     }
                 }
+                else if (InterceptionFactory.class == rawType)
+                {
+                    if 
(!ParameterizedType.class.isInstance(injectionPoint.getType()))
+                    {
+                        throw new WebBeansConfigurationException(
+                                "No type specified for the interception 
factory, ensure to paramterize it");
+                    }
+                    final ParameterizedType pt = 
ParameterizedType.class.cast(injectionPoint.getType());
+                    if (pt.getActualTypeArguments() == null || 
pt.getActualTypeArguments().length != 1)
+                    {
+                        throw new WebBeansConfigurationException("No explicit 
type specified for the interception factory");
+                    }
+                    final Type type = pt.getActualTypeArguments()[0];
+                    if (!Class.class.isInstance(type))
+                    {
+                        throw new 
WebBeansConfigurationException("InterceptionFactory only works with Class, no 
generics");
+                    }
+                }
 
                 if (isDecorator)
                 {

Modified: openwebbeans/trunk/webbeans-tck/testng-dev.xml
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/testng-dev.xml?rev=1798909&r1=1798908&r2=1798909&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/testng-dev.xml (original)
+++ openwebbeans/trunk/webbeans-tck/testng-dev.xml Fri Jun 16 11:08:52 2017
@@ -18,7 +18,7 @@
 <suite name="JSR-346-TCK" verbose="2" configfailurepolicy="continue">
   <test name="JSR-346 TCK">
     <classes>
-          <class 
name="org.jboss.cdi.tck.tests.extensions.interceptionFactory.InterceptionFactoryTest"
 />
+          <class 
name="org.jboss.cdi.tck.tests.extensions.interceptionFactory.broken.InvalidInterceptionFactoryInjectionPointTest"
 />
       <!--
       <class 
name="org.jboss.cdi.tck.tests.event.parameterized.ParameterizedEventTest" />
       <class name="org.jboss.cdi.tck.tests.event.fires.FireEventTest" />


Reply via email to