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">