You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2013/08/11 12:38:13 UTC
svn commit: r1512896 - in /openwebbeans/trunk:
webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/
webbeans-impl/src/main/java/org/apache/webbeans/component/creation/
webbeans-impl/src/main/java/org/apache/webbeans/util/ webbeans-impl/...
Author: struberg
Date: Sun Aug 11 10:38:12 2013
New Revision: 1512896
URL: http://svn.apache.org/r1512896
Log:
OWB-891 take info for Alternative detection from AnnotatedType and not from class
Added:
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/alternative/WoodEgg.java
Modified:
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/ExtensionTest.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/events/extensions/AlternativeExtension.java
Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java?rev=1512896&r1=1512895&r2=1512896&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java Sun Aug 11 10:38:12 2013
@@ -75,7 +75,7 @@ public abstract class EjbBeanBuilder<T,
protected final E createBean(Class<T> beanClass)
{
- return createBean(beanClass, webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
+ return createBean(beanClass, webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, beanAttributes.getStereotypes()));
}
protected abstract E createBean(Class<T> beanClass, boolean beanEnabled);
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java?rev=1512896&r1=1512895&r2=1512896&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java Sun Aug 11 10:38:12 2013
@@ -60,7 +60,7 @@ public class ManagedBeanBuilder<T, M ext
public M getBean()
{
M bean = (M)new ManagedBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, annotatedType.getJavaClass());
- bean.setEnabled(webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
+ bean.setEnabled(webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, bean.getStereotypes()));
webBeansContext.getWebBeansUtil().checkManagedBeanCondition(annotatedType);
WebBeansUtil.checkGenericType(annotatedType.getJavaClass(), beanAttributes.getScope());
webBeansContext.getDeploymentValidationService().validateProxyable(bean);
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=1512896&r1=1512895&r2=1512896&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 Sun Aug 11 10:38:12 2013
@@ -1211,7 +1211,6 @@ public final class WebBeansUtil
/**
* Returns <code>ProcessInjectionTarget</code> event.
* @param <T> bean type
- * @param bean bean instance
* @return event
*/
public <T> ProcessInjectionTarget<T> fireProcessInjectionTargetEvent(InjectionTarget<T> injectionTarget, AnnotatedType<T> annotatedType)
@@ -1349,41 +1348,29 @@ public final class WebBeansUtil
*/
public void setInjectionTargetBeanEnableFlag(InjectionTargetBean<?> bean)
{
- bean.setEnabled(isBeanEnabled(bean));
+ bean.setEnabled(isBeanEnabled(bean.getAnnotatedType(), bean.getStereotypes()));
}
- public boolean isBeanEnabled(InjectionTargetBean<?> bean)
- {
- Asserts.assertNotNull(bean, "bean can not be null");
- return isBeanEnabled(bean.getAnnotatedType(), bean.getReturnType(), bean.getStereotypes());
- }
-
- public boolean isBeanEnabled(AnnotatedType<?> at, Class<?> beanType, Set<Class<? extends Annotation>> stereotypes)
+ public boolean isBeanEnabled(AnnotatedType<?> at, Set<Class<? extends Annotation>> stereotypes)
{
-
- boolean isAlternative = hasInjectionTargetBeanAnnotatedWithAlternative(beanType, stereotypes);
+ boolean isAlternative = hasInjectionTargetBeanAnnotatedWithAlternative(at, stereotypes);
- if(!isAlternative)
- {
- isAlternative = at.getAnnotation(Alternative.class) != null;
- }
-
- return !isAlternative || webBeansContext.getAlternativesManager().isAlternative(beanType, stereotypes);
+ return !isAlternative || webBeansContext.getAlternativesManager().isAlternative(at.getJavaClass(), stereotypes);
}
public static boolean hasInjectionTargetBeanAnnotatedWithAlternative(InjectionTargetBean<?> bean)
{
- return hasInjectionTargetBeanAnnotatedWithAlternative(bean.getReturnType(), bean.getStereotypes());
+ return hasInjectionTargetBeanAnnotatedWithAlternative(bean.getAnnotatedType(), bean.getStereotypes());
}
- public static boolean hasInjectionTargetBeanAnnotatedWithAlternative(Class<?> beanType, Set<Class<? extends Annotation>> stereotypes)
+ public static boolean hasInjectionTargetBeanAnnotatedWithAlternative(AnnotatedType<?> beanType, Set<Class<? extends Annotation>> stereotypes)
{
Asserts.assertNotNull(beanType, "bean type can not be null");
Asserts.assertNotNull(stereotypes, "stereotypes can not be null");
boolean alternative = false;
- if(AnnotationUtil.hasClassAnnotation(beanType, Alternative.class))
+ if(beanType.getAnnotation(Alternative.class) != null)
{
alternative = true;
}
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/ExtensionTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/ExtensionTest.java?rev=1512896&r1=1512895&r2=1512896&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/ExtensionTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/ExtensionTest.java Sun Aug 11 10:38:12 2013
@@ -32,6 +32,7 @@ import org.apache.webbeans.exception.inj
import org.apache.webbeans.newtests.AbstractUnitTest;
import org.apache.webbeans.newtests.portable.alternative.Egg;
import org.apache.webbeans.newtests.portable.alternative.HalfEgg;
+import org.apache.webbeans.newtests.portable.alternative.WoodEgg;
import org.apache.webbeans.newtests.portable.events.extensions.AlternativeExtension;
import org.apache.webbeans.newtests.portable.scopeextension.ExternalTestScopeExtension;
import org.apache.webbeans.newtests.portable.scopeextension.ExternalTestScoped;
@@ -121,18 +122,31 @@ public class ExtensionTest extends Abstr
@Test
public void testAlternativeExtenson()
{
- Collection<Class<?>> classes = new ArrayList<Class<?>>();
- classes.add(Egg.class);
- classes.add(HalfEgg.class);
addExtension(new AlternativeExtension());
- startContainer(classes);
+ startContainer(Egg.class, HalfEgg.class);
Egg egg = getInstance(Egg.class);
Assert.assertTrue(egg instanceof Egg);
+ Assert.assertFalse(egg instanceof HalfEgg);
Set<Bean<?>> beans = getBeanManager().getBeans(HalfEgg.class);
Assert.assertTrue(beans == null || beans.size() == 0);
shutDownContainer();
}
+ /**
+ * Test the dynamic removal of an @Alternative annotation
+ * via ProcessAnnotatedType.
+ */
+ @Test
+ public void testRemoveAlternativeExtension()
+ {
+ addExtension(new AlternativeExtension());
+ startContainer(Egg.class, WoodEgg.class);
+
+ Set<Bean<?>> beans = getBeanManager().getBeans(Egg.class);
+ Assert.assertTrue(beans != null && beans.size() == 2);
+
+ }
+
}
Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/alternative/WoodEgg.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/alternative/WoodEgg.java?rev=1512896&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/alternative/WoodEgg.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/alternative/WoodEgg.java Sun Aug 11 10:38:12 2013
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.portable.alternative;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Alternative;
+
+/**
+ * An alternative which is not specified in beans.xml.
+ * The Alternative annotation will be dynamically removed via an Extension.
+ */
+@ApplicationScoped
+@Alternative
+public class WoodEgg extends Egg
+{
+}
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/events/extensions/AlternativeExtension.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/events/extensions/AlternativeExtension.java?rev=1512896&r1=1512895&r2=1512896&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/events/extensions/AlternativeExtension.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/events/extensions/AlternativeExtension.java Sun Aug 11 10:38:12 2013
@@ -25,14 +25,37 @@ import javax.enterprise.inject.spi.Proce
import javax.enterprise.util.AnnotationLiteral;
import org.apache.webbeans.newtests.portable.alternative.HalfEgg;
+import org.apache.webbeans.newtests.portable.alternative.WoodEgg;
+
+import java.lang.annotation.Annotation;
+import java.util.HashSet;
+import java.util.Set;
public class AlternativeExtension implements Extension
{
- public void observeProcessAnnotatedType(@Observes ProcessAnnotatedType<HalfEgg> pat)
+ public void observeProcessAnnotatedTypeHalfEgg(@Observes ProcessAnnotatedType<HalfEgg> pat)
{
// this just works with OWB and assumes a mutable annotation Set.
pat.getAnnotatedType().getAnnotations().add(new AnnotationLiteral<Alternative>() {});
pat.setAnnotatedType(pat.getAnnotatedType());
- }
+ }
+
+ public void observeProcessAnnotatedTypeWoodEgg(@Observes ProcessAnnotatedType<WoodEgg> pat)
+ {
+ // this just works with OWB and assumes a mutable annotation Set.
+ Set<Annotation> newAnnotations = new HashSet<Annotation>();
+ for (Annotation ann : pat.getAnnotatedType().getAnnotations())
+ {
+ if (!Alternative.class.isAssignableFrom(ann.annotationType()))
+ {
+ newAnnotations.add(ann);
+ }
+ }
+
+ pat.getAnnotatedType().getAnnotations().clear();
+ pat.getAnnotatedType().getAnnotations().addAll(newAnnotations);
+
+ pat.setAnnotatedType(pat.getAnnotatedType());
+ }
}