You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2013/04/16 11:28:55 UTC
svn commit: r1468333 - in /openwebbeans/trunk:
webbeans-impl/src/main/java/org/apache/webbeans/container/
webbeans-impl/src/main/java/org/apache/webbeans/util/
webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/
Author: rmannibucau
Date: Tue Apr 16 09:28:55 2013
New Revision: 1468333
URL: http://svn.apache.org/r1468333
Log:
OWB-842 @New for ejbs
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java?rev=1468333&r1=1468332&r2=1468333&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java Tue Apr 16 09:28:55 2013
@@ -510,7 +510,7 @@ public class InjectionResolver
}
// Look for qualifiers
- resolvedComponents = findByQualifier(resolvedComponents, qualifiers);
+ resolvedComponents = findByQualifier(resolvedComponents, injectionPointType, qualifiers);
// Ambigious resolution, check for specialization
if (resolvedComponents.size() > 1)
@@ -720,7 +720,7 @@ public class InjectionResolver
* @param annotations qualifiers on injection point
* @return filtered bean set according to the qualifiers
*/
- private Set<Bean<?>> findByQualifier(Set<Bean<?>> remainingSet, Annotation... annotations)
+ private Set<Bean<?>> findByQualifier(Set<Bean<?>> remainingSet, Type type, Annotation... annotations)
{
Iterator<Bean<?>> it = remainingSet.iterator();
Set<Bean<?>> result = new HashSet<Bean<?>>();
@@ -754,6 +754,11 @@ public class InjectionResolver
}
}
+ if (result.isEmpty() && annotations.length == 1 && New.class.equals(annotations[0].annotationType()) && Class.class.isInstance(type))
+ { // happen in TCKs, shouldn't be the case in real apps
+ result.add(webBeansContext.getWebBeansUtil().createNewComponent(Class.class.cast(type)));
+ }
+
return result;
}
}
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=1468333&r1=1468332&r2=1468333&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 Tue Apr 16 09:28:55 2013
@@ -432,10 +432,16 @@ public final class WebBeansUtil
return false;
}
- public <T> NewManagedBean<T> createNewComponent(Class<T> type)
+ public <T> Bean<T> createNewComponent(Class<T> type)
{
Asserts.nullCheckForClass(type);
+ final OpenWebBeansEjbPlugin ejbPlugin = webBeansContext.getPluginLoader().getEjbPlugin();
+ if (ejbPlugin != null && ejbPlugin.isNewSessionBean(type))
+ {
+ return ejbPlugin.defineNewSessionBean(type);
+ }
+
AnnotatedType<T> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(type);
BeanAttributesImpl<T> defaultBeanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(annotatedType).build();
BeanAttributesImpl<T> newBeanAttributes = new BeanAttributesImpl<T>(defaultBeanAttributes.getTypes(), Collections.<Annotation>singleton(new NewLiteral(type)));
Modified: openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java?rev=1468333&r1=1468332&r2=1468333&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java (original)
+++ openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java Tue Apr 16 09:28:55 2013
@@ -39,6 +39,14 @@ public interface OpenWebBeansEjbPlugin e
public boolean isSessionBean(Class<?> clazz);
/**
+ * return true is clazz is an impl class or business interface of an EJB
+ *
+ * @param clazz class definition
+ * @return true is clazz denotes an EJB
+ */
+ public boolean isNewSessionBean(Class<?> clazz);
+
+ /**
* Configures session bean and adds it into the container.
*
* @param clazz session bean class
@@ -46,6 +54,8 @@ public interface OpenWebBeansEjbPlugin e
*/
public <T> Bean<T> defineSessionBean(Class<T> clazz, ProcessAnnotatedType<T> processAnnotateTypeEvent);
+ public <T> Bean<T> defineNewSessionBean(Class<T> clazz);
+
/**
* Returns true if given class is singleton session bean, false otherwise.
*