Author: struberg
Date: Mon Jun  5 13:42:01 2017
New Revision: 1797663

URL: http://svn.apache.org/viewvc?rev=1797663&view=rev
Log:
OWB-1186 implement more Configurators

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedConstructorConfiguratorImpl.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedFieldConfiguratorImpl.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedMethodConfiguratorImpl.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedParameterConfiguratorImpl.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedTypeConfiguratorImpl.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
 Mon Jun  5 13:42:01 2017
@@ -103,6 +103,7 @@ import javax.enterprise.inject.spi.Injec
 import javax.enterprise.inject.spi.Interceptor;
 import javax.enterprise.inject.spi.ObserverMethod;
 import javax.enterprise.inject.spi.Producer;
+import javax.enterprise.inject.spi.configurator.AnnotatedTypeConfigurator;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
@@ -683,6 +684,17 @@ public class BeansDeployer
                 holder.getId());
         }
 
+        for (AnnotatedTypeConfigurator<?> interceptorATC : 
event.getInterceptorBindingConfigurators())
+        {
+            
webBeansContext.getInterceptorsManager().addInterceptorBindingType((AnnotatedType)
 interceptorATC.getAnnotated());
+        }
+
+        for (AnnotatedTypeConfigurator<?> qualifierAt : 
event.getQualifierConfigurators())
+        {
+            
webBeansContext.getBeanManagerImpl().addAdditionalQualifier((AnnotatedType) 
qualifierAt.getAnnotated());
+
+        }
+
         event.setStarted();
     }
     

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedConstructorConfiguratorImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedConstructorConfiguratorImpl.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedConstructorConfiguratorImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedConstructorConfiguratorImpl.java
 Mon Jun  5 13:42:01 2017
@@ -26,40 +26,40 @@ import java.util.List;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
-public class AnnotatedConstructorConfiguratorImpl implements 
AnnotatedConstructorConfigurator
+public class AnnotatedConstructorConfiguratorImpl<T> implements 
AnnotatedConstructorConfigurator<T>
 {
     @Override
-    public AnnotatedConstructor getAnnotated()
+    public AnnotatedConstructor<T> getAnnotated()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedConstructorConfigurator add(Annotation annotation)
+    public AnnotatedConstructorConfigurator<T> add(Annotation annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedConstructorConfigurator remove(Predicate annotation)
+    public AnnotatedConstructorConfigurator<T> remove(Predicate annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedConstructorConfigurator removeAll()
+    public AnnotatedConstructorConfigurator<T> removeAll()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public List<AnnotatedParameterConfigurator> params()
+    public List<AnnotatedParameterConfigurator<T>> params()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public Stream<AnnotatedParameterConfigurator> filterParams(Predicate 
predicate)
+    public Stream<AnnotatedParameterConfigurator<T>> filterParams(Predicate 
predicate)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedFieldConfiguratorImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedFieldConfiguratorImpl.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedFieldConfiguratorImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedFieldConfiguratorImpl.java
 Mon Jun  5 13:42:01 2017
@@ -23,28 +23,28 @@ import javax.enterprise.inject.spi.confi
 import java.lang.annotation.Annotation;
 import java.util.function.Predicate;
 
-public class AnnotatedFieldConfiguratorImpl implements 
AnnotatedFieldConfigurator
+public class AnnotatedFieldConfiguratorImpl<T> implements 
AnnotatedFieldConfigurator<T>
 {
     @Override
-    public AnnotatedField getAnnotated()
+    public AnnotatedField<T> getAnnotated()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedFieldConfigurator add(Annotation annotation)
+    public AnnotatedFieldConfigurator<T> add(Annotation annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedFieldConfigurator remove(Predicate annotation)
+    public AnnotatedFieldConfigurator<T> remove(Predicate annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedFieldConfigurator removeAll()
+    public AnnotatedFieldConfigurator<T> removeAll()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedMethodConfiguratorImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedMethodConfiguratorImpl.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedMethodConfiguratorImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedMethodConfiguratorImpl.java
 Mon Jun  5 13:42:01 2017
@@ -26,40 +26,40 @@ import java.util.List;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
-public class AnnotatedMethodConfiguratorImpl implements 
AnnotatedMethodConfigurator
+public class AnnotatedMethodConfiguratorImpl<T> implements 
AnnotatedMethodConfigurator<T>
 {
     @Override
-    public AnnotatedMethod getAnnotated()
+    public AnnotatedMethod<T> getAnnotated()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedMethodConfigurator add(Annotation annotation)
+    public AnnotatedMethodConfigurator<T> add(Annotation annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedMethodConfigurator remove(Predicate annotation)
+    public AnnotatedMethodConfigurator<T> remove(Predicate annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedMethodConfigurator removeAll()
+    public AnnotatedMethodConfigurator<T> removeAll()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public List<AnnotatedParameterConfigurator> params()
+    public List<AnnotatedParameterConfigurator<T>> params()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public Stream<AnnotatedParameterConfigurator> filterParams(Predicate 
predicate)
+    public Stream<AnnotatedParameterConfigurator<T>> filterParams(Predicate 
predicate)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedParameterConfiguratorImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedParameterConfiguratorImpl.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedParameterConfiguratorImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedParameterConfiguratorImpl.java
 Mon Jun  5 13:42:01 2017
@@ -23,28 +23,28 @@ import javax.enterprise.inject.spi.confi
 import java.lang.annotation.Annotation;
 import java.util.function.Predicate;
 
-public class AnnotatedParameterConfiguratorImpl implements 
AnnotatedParameterConfigurator
+public class AnnotatedParameterConfiguratorImpl<T> implements 
AnnotatedParameterConfigurator<T>
 {
     @Override
-    public AnnotatedParameter getAnnotated()
+    public AnnotatedParameter<T> getAnnotated()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedParameterConfigurator add(Annotation annotation)
+    public AnnotatedParameterConfigurator<T> add(Annotation annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedParameterConfigurator remove(Predicate annotation)
+    public AnnotatedParameterConfigurator<T> remove(Predicate annotation)
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public AnnotatedParameterConfigurator removeAll()
+    public AnnotatedParameterConfigurator<T> removeAll()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedTypeConfiguratorImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedTypeConfiguratorImpl.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedTypeConfiguratorImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/configurator/AnnotatedTypeConfiguratorImpl.java
 Mon Jun  5 13:42:01 2017
@@ -30,10 +30,10 @@ import java.lang.annotation.Annotation;
 import java.util.Set;
 import java.util.function.Predicate;
 
-public class AnnotatedTypeConfiguratorImpl implements AnnotatedTypeConfigurator
+public class AnnotatedTypeConfiguratorImpl<T> implements 
AnnotatedTypeConfigurator<T>
 {
 
-    private final AnnotatedTypeImpl<?> annotatedType;
+    private final AnnotatedTypeImpl<T> annotatedType;
 
 
     public AnnotatedTypeConfiguratorImpl(WebBeansContext webBeansContext, 
AnnotatedType<?> annotatedType)
@@ -43,46 +43,46 @@ public class AnnotatedTypeConfiguratorIm
 
 
     @Override
-    public AnnotatedType getAnnotated()
+    public AnnotatedType<T> getAnnotated()
     {
         return annotatedType;
     }
 
     @Override
-    public AnnotatedTypeConfigurator add(Annotation annotation)
+    public AnnotatedTypeConfigurator<T> add(Annotation annotation)
     {
         annotatedType.addAnnotation(annotation);
         return this;
     }
 
     @Override
-    public AnnotatedTypeConfigurator remove(Predicate predicate)
+    public AnnotatedTypeConfigurator<T> remove(Predicate predicate)
     {
         annotatedType.getAnnotations().removeIf(predicate);
         return this;
     }
 
     @Override
-    public AnnotatedTypeConfigurator removeAll()
+    public AnnotatedTypeConfigurator<T> removeAll()
     {
         annotatedType.clearAnnotations();
         return this;
     }
 
     @Override
-    public Set<AnnotatedMethodConfigurator> methods()
+    public Set<AnnotatedMethodConfigurator<? super T>> methods()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public Set<AnnotatedFieldConfigurator> fields()
+    public Set<AnnotatedFieldConfigurator<? super T>> fields()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }
 
     @Override
-    public Set<AnnotatedConstructorConfigurator> constructors()
+    public Set<AnnotatedConstructorConfigurator<T>> constructors()
     {
         throw new UnsupportedOperationException("TODO implement CDI 2.0");
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorsManager.java
 Mon Jun  5 13:42:01 2017
@@ -319,7 +319,7 @@ public class InterceptorsManager
         Set<Annotation> inherits = 
additionalInterceptorBindingTypes.get(bindingType);
         if (inherits == null)
         {
-            inherits = new HashSet<Annotation>();
+            inherits = new HashSet<>();
             additionalInterceptorBindingTypes.put(bindingType, inherits);
         }
         Collections.addAll(inherits, inheritsArray);

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java?rev=1797663&r1=1797662&r2=1797663&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/discovery/BeforeBeanDiscoveryImpl.java
 Mon Jun  5 13:42:01 2017
@@ -21,7 +21,9 @@ package org.apache.webbeans.portable.eve
 import java.lang.annotation.Annotation;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.BeforeBeanDiscovery;
@@ -48,6 +50,8 @@ public class BeforeBeanDiscoveryImpl ext
     private final WebBeansContext webBeansContext;
     private Extension extension;
     private Map<String, AnnotatedTypeConfiguratorHolder> 
annotatedTypeConfigurators = new HashMap<>();
+    private Set<AnnotatedTypeConfigurator<?>> interceptorBindingConfigurators 
= new HashSet<>();
+    private Set<AnnotatedTypeConfigurator<?>> qualifierConfigurators = new 
HashSet<>();
 
     public BeforeBeanDiscoveryImpl(WebBeansContext webBeansContext)
     {
@@ -117,9 +121,12 @@ public class BeforeBeanDiscoveryImpl ext
     {
         checkState();
         beanManager.addAdditionalAnnotatedType(extension, annotatedType, id);
+
+        // and also remove any AnnotatedTypeConfigurator for that combination
+        String key = annotatedType.getJavaClass() + id;
+        annotatedTypeConfigurators.remove(key);
     }
 
-    //X TODO OWB-1182 CDI 2.0
     @Override
     public <T> AnnotatedTypeConfigurator<T> addAnnotatedType(Class<T> clazz, 
String id)
     {
@@ -128,8 +135,7 @@ public class BeforeBeanDiscoveryImpl ext
         AnnotatedTypeConfiguratorHolder configuratorHolder = 
annotatedTypeConfigurators.get(key);
         if (configuratorHolder == null)
         {
-            AnnotatedType<T> initialAnnotatedType = 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(clazz);
-            AnnotatedTypeConfigurator<T> configurator = new 
AnnotatedTypeConfiguratorImpl(webBeansContext, initialAnnotatedType);
+            AnnotatedTypeConfigurator<T> configurator = 
getAnnotatedTypeConfigurator(clazz);
             configuratorHolder = new 
AnnotatedTypeConfiguratorHolder(extension, id, configurator);
             annotatedTypeConfigurators.put(key, configuratorHolder);
         }
@@ -137,21 +143,26 @@ public class BeforeBeanDiscoveryImpl ext
         return configuratorHolder.getAnnotatedTypeConfigurator();
     }
 
-
-    //X TODO OWB-1182 CDI 2.0
     @Override
-    public <T extends Annotation> AnnotatedTypeConfigurator<T> 
configureInterceptorBinding(Class<T> aClass)
+    public <T extends Annotation> AnnotatedTypeConfigurator<T> 
configureInterceptorBinding(Class<T> clazz)
     {
         checkState();
-        throw new UnsupportedOperationException("CDI 2.0 not yet imlemented");
+
+        AnnotatedTypeConfigurator<T> configurator = 
getAnnotatedTypeConfigurator(clazz);
+        interceptorBindingConfigurators.add(configurator);
+
+        return configurator;
     }
 
-    //X TODO OWB-1182 CDI 2.0
     @Override
-    public <T extends Annotation> AnnotatedTypeConfigurator<T> 
configureQualifier(Class<T> aClass)
+    public <T extends Annotation> AnnotatedTypeConfigurator<T> 
configureQualifier(Class<T> clazz)
     {
         checkState();
-        throw new UnsupportedOperationException("CDI 2.0 not yet imlemented");
+
+        AnnotatedTypeConfigurator<T> configurator = 
getAnnotatedTypeConfigurator(clazz);
+        qualifierConfigurators.add(configurator);
+
+        return configurator;
     }
 
     /**
@@ -185,4 +196,19 @@ public class BeforeBeanDiscoveryImpl ext
         return annotatedTypeConfigurators.values();
     }
 
+    public Collection<AnnotatedTypeConfigurator<?>> 
getInterceptorBindingConfigurators()
+    {
+        return interceptorBindingConfigurators;
+    }
+
+    public Collection<AnnotatedTypeConfigurator<?>> getQualifierConfigurators()
+    {
+        return qualifierConfigurators;
+    }
+
+    private <T> AnnotatedTypeConfigurator<T> 
getAnnotatedTypeConfigurator(Class<T> clazz)
+    {
+        AnnotatedType<T> initialAnnotatedType = 
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(clazz);
+        return (AnnotatedTypeConfigurator<T>) new 
AnnotatedTypeConfiguratorImpl(webBeansContext, initialAnnotatedType);
+    }
 }


Reply via email to