You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/09/10 23:33:11 UTC
svn commit: r1167609 - in /openejb/trunk/openejb3:
assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/
container/openejb-core/src/main/java/org/apache/openejb/core/
tck/cdi-tomee/src/test/resources/
Author: dblevins
Date: Sat Sep 10 21:33:11 2011
New Revision: 1167609
URL: http://svn.apache.org/viewvc?rev=1167609&view=rev
Log:
OPENEJB-1659: @Inject support for Servlets, Filters and Listeners
OPENEJB-1660: @Inject constructor support for Servlet, Filters and Listeners
Added:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/InjectionFailedException.java
Modified:
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml
Added: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/InjectionFailedException.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/InjectionFailedException.java?rev=1167609&view=auto
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/InjectionFailedException.java (added)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/InjectionFailedException.java Sat Sep 10 21:33:11 2011
@@ -0,0 +1,26 @@
+/**
+ * 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.openejb.tomcat.catalina;
+
+/**
+* @version $Rev$ $Date$
+*/
+public class InjectionFailedException extends IllegalStateException {
+ public InjectionFailedException(Throwable cause) {
+ super(cause);
+ }
+}
Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java?rev=1167609&r1=1167608&r2=1167609&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/JavaeeInstanceManager.java Sat Sep 10 21:33:11 2011
@@ -61,7 +61,11 @@ public class JavaeeInstanceManager imple
@Override
public void newInstance(Object o) throws IllegalAccessException, InvocationTargetException, NamingException {
- new Exception("INJECT").fillInStackTrace().printStackTrace();
+ try {
+ webContext.inject(o);
+ } catch (OpenEJBException e) {
+ throw new InjectionFailedException(e);
+ }
}
@Override
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java?rev=1167609&r1=1167608&r2=1167609&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java Sat Sep 10 21:33:11 2011
@@ -123,4 +123,46 @@ public class WebContext {
}
}
+ public Object inject(Object o) throws OpenEJBException {
+
+ try {
+ final WebBeansContext webBeansContext = getAppContext().getWebBeansContext();
+
+ final ConstructorInjectionBean<Object> beanDefinition = new ConstructorInjectionBean(webBeansContext, o.getClass()).complete();
+
+ final CreationalContext<Object> creationalContext = webBeansContext.getBeanManagerImpl().createCreationalContext(beanDefinition);
+
+ // Create bean instance
+ final Context initialContext = (Context) new InitialContext().lookup("java:");
+ final Context unwrap = InjectionProcessor.unwrap(initialContext);
+ final InjectionProcessor injectionProcessor = new InjectionProcessor(o, injections, unwrap);
+
+ final Object beanInstance = injectionProcessor.createInstance();
+
+ final Object oldInstanceUnderInjection = AbstractInjectable.instanceUnderInjection.get();
+
+ try {
+ AbstractInjectable.instanceUnderInjection.set(null);
+
+ InjectionTargetBean<Object> bean = InjectionTargetBean.class.cast(beanDefinition);
+
+ bean.injectResources(beanInstance, creationalContext);
+ bean.injectSuperFields(beanInstance, creationalContext);
+ bean.injectSuperMethods(beanInstance, creationalContext);
+ bean.injectFields(beanInstance, creationalContext);
+ bean.injectMethods(beanInstance, creationalContext);
+ } finally {
+ if (oldInstanceUnderInjection != null) {
+ AbstractInjectable.instanceUnderInjection.set(oldInstanceUnderInjection);
+ } else {
+ AbstractInjectable.instanceUnderInjection.remove();
+ }
+ }
+
+ return beanInstance;
+ } catch (NamingException e) {
+ throw new OpenEJBException(e);
+ }
+ }
+
}
Modified: openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml?rev=1167609&r1=1167608&r2=1167609&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-tomee/src/test/resources/passing.xml Sat Sep 10 21:33:11 2011
@@ -107,10 +107,10 @@
<class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.persistenceContext.PersistenceContextInjectionTest">
<methods>
<exclude name="testBeanTypesAndBindingTypesOfPersistenceContext"/>
- <exclude name="testInjectionOfPersistenceUnit"/>
<exclude name="testInjectionOfPersistenceContext"/>
- <exclude name="testPassivationOfPersistenceUnit"/>
+ <exclude name="testInjectionOfPersistenceUnit"/>
<exclude name="testPassivationOfPersistenceContext"/>
+ <exclude name="testPassivationOfPersistenceUnit"/>
</methods>
</class>
<class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.resource.InjectionOfResourceTest">
@@ -141,7 +141,6 @@
<class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.InjectionIntoNonContextualComponentTest">
<methods>
<exclude name="testInjectionIntoJSFManagedBean"/>
- <exclude name="testInjectionIntoTagHandler"/>
</methods>
</class>
<class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.ws.InjectionIntoWebServiceEndPointTest">