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();
}