Author: arne
Date: Mon Apr  8 17:06:24 2013
New Revision: 1465684

URL: http://svn.apache.org/r1465684
Log:
OWB-766: Fixed dependent event parameter that is created with InjectionPoint

Added:
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointOwnerProducer.java
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/ProducerMethodInjectionPointOwner.java
Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointBeansOwner.java
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointObserver.java
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/tests/InjectionPointInjectionTest.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java?rev=1465684&r1=1465683&r2=1465684&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
 Mon Apr  8 17:06:24 2013
@@ -32,7 +32,6 @@ import javax.enterprise.inject.spi.BeanM
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.Producer;
 
-import org.apache.webbeans.annotation.DefaultLiteral;
 import org.apache.webbeans.component.ProducerMethodBean;
 import org.apache.webbeans.container.InjectionResolver;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
@@ -105,15 +104,10 @@ public class InjectableMethod<T> extends
                         
if(parameter.getBaseType().equals(InjectionPoint.class))
                         {
                             BeanManager manager = 
getWebBeansContext().getBeanManagerImpl();
-                            Bean<?> injectionPointBean = 
manager.getBeans(InjectionPoint.class, 
DefaultLiteral.INSTANCE).iterator().next();
-                            Object reference = 
manager.getReference(injectionPointBean, InjectionPoint.class, 
manager.createCreationalContext(injectionPointBean));
-
-                            dependentParameters.put(injectionPointBean, 
reference);
+                            Object reference = 
manager.getInjectableReference(point, creationalContext);
                             list.add(reference);
-                            
                             injectionPoint = true;
                         }
-   
                     }
                     
                     if(!injectionPoint)

Modified: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointBeansOwner.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointBeansOwner.java?rev=1465684&r1=1465683&r2=1465684&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointBeansOwner.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointBeansOwner.java
 Mon Apr  8 17:06:24 2013
@@ -28,13 +28,19 @@ public class InjectionPointBeansOwner {
     @Inject
     private MethodInjectionPointOwner methodInjection;
     @Inject
+    private ProducerMethodInjectionPointOwner producerMethodInjection;
+    @Inject
     private Instance<ConstructorInjectionPointOwner> 
constructorInjectionInstance;
     @Inject
     private Instance<FieldInjectionPointOwner> fieldInjectionInstance;
     @Inject
     private Instance<MethodInjectionPointOwner> methodInjectionInstance;
     @Inject
+    private Instance<ProducerMethodInjectionPointOwner> 
producerMethodInjectionInstance;
+    @Inject
     private Event<StringBuilder> observerInjection;
+    @Inject
+    private Event<StringBuffer> parameterizedObserverInjection;
     
     public String getConstructorInjectionName() {
         return constructorInjection.getName();
@@ -48,6 +54,10 @@ public class InjectionPointBeansOwner {
         return methodInjection.getName();
     }
     
+    public String getProducerMethodInjectionName() {
+        return producerMethodInjection.getName();
+    }
+    
     public String getConstructorInjectionInstanceName() {
         return constructorInjectionInstance.get().getName();
     }
@@ -59,10 +69,20 @@ public class InjectionPointBeansOwner {
     public String getMethodInjectionInstanceName() {
         return methodInjectionInstance.get().getName();
     }
+    
+    public String getProducerMethodInjectionInstanceName() {
+        return producerMethodInjectionInstance.get().getName();
+    }
 
     public String getObserverInjectionName() {
         StringBuilder name = new StringBuilder();
         observerInjection.fire(name);
         return name.toString();
     }
+
+    public String getParameterizedObserverInjectionName() {
+        StringBuffer name = new StringBuffer();
+        parameterizedObserverInjection.fire(name);
+        return name.toString();
+    }
 }

Modified: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointObserver.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointObserver.java?rev=1465684&r1=1465683&r2=1465684&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointObserver.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointObserver.java
 Mon Apr  8 17:06:24 2013
@@ -24,4 +24,9 @@ public class InjectionPointObserver exte
         injectionPoint = ip;
         builder.append(getName());
     }
+
+    public void observeParameterizedInjectionPoint(@Observes StringBuffer 
buffer, ProducerMethodInjectionPointOwner injectionPointOwner) {
+        injectionPoint = injectionPointOwner.injectionPoint;
+        buffer.append(getName());
+    }
 }

Added: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointOwnerProducer.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointOwnerProducer.java?rev=1465684&view=auto
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointOwnerProducer.java
 (added)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/InjectionPointOwnerProducer.java
 Mon Apr  8 17:06:24 2013
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.webbeans.newtests.injection.injectionpoint.beans;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+@ApplicationScoped
+public class InjectionPointOwnerProducer {
+
+    @Produces
+    public ProducerMethodInjectionPointOwner 
produceInjectionPointOwner(InjectionPoint injectionPoint) {
+        return new ProducerMethodInjectionPointOwner(injectionPoint);
+    }
+}

Added: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/ProducerMethodInjectionPointOwner.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/ProducerMethodInjectionPointOwner.java?rev=1465684&view=auto
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/ProducerMethodInjectionPointOwner.java
 (added)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/beans/ProducerMethodInjectionPointOwner.java
 Mon Apr  8 17:06:24 2013
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.webbeans.newtests.injection.injectionpoint.beans;
+
+import javax.enterprise.inject.spi.InjectionPoint;
+
+public class ProducerMethodInjectionPointOwner extends 
AbstractInjectionPointOwner {
+
+    public ProducerMethodInjectionPointOwner(InjectionPoint ip) {
+        injectionPoint = ip;
+    }
+}

Modified: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/tests/InjectionPointInjectionTest.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/tests/InjectionPointInjectionTest.java?rev=1465684&r1=1465683&r2=1465684&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/tests/InjectionPointInjectionTest.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/injectionpoint/tests/InjectionPointInjectionTest.java
 Mon Apr  8 17:06:24 2013
@@ -30,7 +30,9 @@ import org.apache.webbeans.newtests.inje
 import 
org.apache.webbeans.newtests.injection.injectionpoint.beans.FieldInjectionPointOwner;
 import 
org.apache.webbeans.newtests.injection.injectionpoint.beans.InjectionPointBeansOwner;
 import 
org.apache.webbeans.newtests.injection.injectionpoint.beans.InjectionPointObserver;
+import 
org.apache.webbeans.newtests.injection.injectionpoint.beans.InjectionPointOwnerProducer;
 import 
org.apache.webbeans.newtests.injection.injectionpoint.beans.MethodInjectionPointOwner;
+import 
org.apache.webbeans.newtests.injection.injectionpoint.beans.ProducerMethodInjectionPointOwner;
 import org.junit.Test;
 
 public class InjectionPointInjectionTest extends AbstractUnitTest {
@@ -44,6 +46,8 @@ public class InjectionPointInjectionTest
         beanClasses.add(MethodInjectionPointOwner.class);
         beanClasses.add(InjectionPointObserver.class);
         beanClasses.add(InjectionPointBeansOwner.class);
+        beanClasses.add(InjectionPointOwnerProducer.class);
+        beanClasses.add(ProducerMethodInjectionPointOwner.class);
         
beanClasses.add(ConstructorInjectionPointOwner.SomeInnerClassWithInstructorInjectionPoint.class);
         startContainer(beanClasses, null);
 
@@ -58,10 +62,13 @@ public class InjectionPointInjectionTest
         assertThat(owner.getConstructorInjectionName(), 
is("constructorInjection"));
         assertThat(owner.getFieldInjectionName(), is("fieldInjection"));
         assertThat(owner.getMethodInjectionName(), is("methodInjection"));
+        assertThat(owner.getProducerMethodInjectionName(), 
is("producerMethodInjection"));
         assertThat(owner.getConstructorInjectionInstanceName(), 
is("constructorInjectionInstance"));
         assertThat(owner.getFieldInjectionInstanceName(), 
is("fieldInjectionInstance"));
         assertThat(owner.getMethodInjectionInstanceName(), 
is("methodInjectionInstance"));
+        assertThat(owner.getProducerMethodInjectionInstanceName(), 
is("producerMethodInjectionInstance"));
         assertThat(owner.getObserverInjectionName(), is("observerInjection"));
+        assertThat(owner.getParameterizedObserverInjectionName(), 
is("observeParameterizedInjectionPoint"));
 
         shutDownContainer();
     }


Reply via email to