You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2013/01/15 22:41:13 UTC
svn commit: r1433675 - in /openwebbeans/trunk:
webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/
webbeans-impl/src/main/java/org/apache/webbeans/component/
webbeans-impl/src/main/java/org/apache/webbeans/component/creation/
webbeans-...
Author: arne
Date: Tue Jan 15 21:41:13 2013
New Revision: 1433675
URL: http://svn.apache.org/viewvc?rev=1433675&view=rev
Log:
OWB-755: Created AbstractDecoratorInjectionTarget
Added:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.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/ManagedBean.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
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=1433675&r1=1433674&r2=1433675&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 Tue Jan 15 21:41:13 2013
@@ -18,9 +18,11 @@
*/
package org.apache.webbeans.ejb.common.component;
+import java.util.List;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
@@ -78,7 +80,9 @@ public abstract class EjbBeanBuilder<T,
@Override
protected InjectionTarget<T> buildInjectionTarget(AnnotatedType<T> annotatedType,
Set<InjectionPoint> points,
- WebBeansContext webBeansContext)
+ WebBeansContext webBeansContext,
+ List<AnnotatedMethod<?>> postConstructMethods,
+ List<AnnotatedMethod<?>> preDestroyMethods)
{
return new AbstractEjbInjectionTarget<T>(annotatedType, points, webBeansContext)
{
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=1433675&r1=1433674&r2=1433675&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java Tue Jan 15 21:41:13 2013
@@ -29,9 +29,6 @@ import javax.enterprise.inject.spi.Annot
import javax.enterprise.inject.spi.Decorator;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.context.creational.CreationalContextImpl;
-import org.apache.webbeans.decorator.AbstractDecoratorMethodHandler;
-import org.apache.webbeans.inject.InjectableConstructor;
import org.apache.webbeans.intercept.InterceptorData;
/**
@@ -78,22 +75,7 @@ public class ManagedBean<T> extends Inje
@Override
protected T createComponentInstance(CreationalContext<T> creationalContext)
{
- Constructor<T> con = getConstructor();
- if (con == null)
- {
- con = webBeansContext.getWebBeansUtil().getNoArgConstructor(getReturnType());
- }
- InjectableConstructor<T> ic = new InjectableConstructor<T>(con, getInjectionTarget(), (CreationalContextImpl<T>) creationalContext);
-
- T instance = ic.doInjection();
-
- //If this is an abstract Decorator, we need to set the handler on the Proxy instance
- //X TODO should be done in DecoratorBean
- if(isAbstractDecorator)
- {
- webBeansContext.getProxyFactory().setHandler(instance, new AbstractDecoratorMethodHandler());
- }
- return instance;
+ return getInjectionTarget().produce(creationalContext);
}
/**
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=1433675&r1=1433674&r2=1433675&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 Tue Jan 15 21:41:13 2013
@@ -40,6 +40,7 @@ import org.apache.webbeans.decorator.Web
import org.apache.webbeans.exception.inject.DeploymentException;
import org.apache.webbeans.inject.impl.InjectionPointFactory;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
+import org.apache.webbeans.portable.AbstractDecoratorInjectionTarget;
import org.apache.webbeans.util.WebBeansUtil;
/**
@@ -232,10 +233,7 @@ public class ManagedBeanBuilder<T, M ext
}
//X TODO move proxy instance creation into JavassistProxyFactory!
- Class clazz = webBeansContext.getProxyFactory().createAbstractDecoratorProxyClass(bean);
-
- bean.setConstructor(webBeansContext.getWebBeansUtil().defineConstructor(clazz));
- bean.setIsAbstractDecorator(true);
+ bean.setInjectionTarget(new AbstractDecoratorInjectionTarget<T>(bean));
return bean;
}
Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java?rev=1433675&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java Tue Jan 15 21:41:13 2013
@@ -0,0 +1,57 @@
+/*
+ * 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.portable;
+
+import java.lang.reflect.Constructor;
+import java.util.Collections;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+
+import org.apache.webbeans.component.ManagedBean;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
+import org.apache.webbeans.decorator.AbstractDecoratorMethodHandler;
+import org.apache.webbeans.inject.InjectableConstructor;
+import org.apache.webbeans.proxy.ProxyFactory;
+
+public class AbstractDecoratorInjectionTarget<T> extends InjectionTargetImpl<T>
+{
+
+ private Constructor<T> constructor;
+ private ProxyFactory proxyFactory;
+
+ //TODO: handle postconstruct and predestroy methods...
+ public AbstractDecoratorInjectionTarget(ManagedBean<T> bean)
+ {
+ super(bean.getAnnotatedType(), bean.getInjectionPoints(), bean.getWebBeansContext(),
+ Collections.<AnnotatedMethod<?>>emptyList(), Collections.<AnnotatedMethod<?>>emptyList());
+ proxyFactory = bean.getWebBeansContext().getProxyFactory();
+ Class<T> clazz = (Class<T>) proxyFactory.createAbstractDecoratorProxyClass(bean);
+ constructor = bean.getWebBeansContext().getWebBeansUtil().defineConstructor(clazz);
+ }
+
+ @Override
+ public T produce(CreationalContext<T> creationalContext)
+ {
+ InjectableConstructor<T> ic = new InjectableConstructor<T>(constructor, this, (CreationalContextImpl<T>) creationalContext);
+ T instance = ic.doInjection();
+ proxyFactory.setHandler(instance, new AbstractDecoratorMethodHandler());
+ return instance;
+ }
+}
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=1433675&r1=1433674&r2=1433675&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 Jan 15 21:41:13 2013
@@ -128,7 +128,6 @@ import org.apache.webbeans.intercept.Int
import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.plugins.OpenWebBeansEjbLCAPlugin;
import org.apache.webbeans.plugins.PluginLoader;
-import org.apache.webbeans.portable.creation.InjectionTargetProducerRemove;
import org.apache.webbeans.portable.creation.ProducerBeansProducerRemove;
import org.apache.webbeans.portable.events.discovery.ErrorStack;
import org.apache.webbeans.portable.events.generics.GProcessAnnotatedType;